View | Details | Raw Unified | Return to bug 251025
Collapse All | Expand All

(-)b/usr.sbin/efivar/efivar.c (-3 / +11 lines)
Lines 33-38 __FBSDID("$FreeBSD$"); Link Here
33
#include <errno.h>
33
#include <errno.h>
34
#include <fcntl.h>
34
#include <fcntl.h>
35
#include <getopt.h>
35
#include <getopt.h>
36
#include <regex.h>
36
#include <stddef.h>
37
#include <stddef.h>
37
#include <stdio.h>
38
#include <stdio.h>
38
#include <stdlib.h>
39
#include <stdlib.h>
Lines 88-99 static void Link Here
88
breakdown_name(char *name, efi_guid_t *guid, char **vname)
89
breakdown_name(char *name, efi_guid_t *guid, char **vname)
89
{
90
{
90
	char *cp;
91
	char *cp;
92
	regex_t re;
93
	regmatch_t rm[1];
91
94
92
	cp = strrchr(name, '-');
95
	if (regcomp(&re, "^[[:xdigit:]]{8}-[[:xdigit:]]{4}-[[:xdigit:]]{4}-"
93
	if (cp == NULL)
96
	    "[[:xdigit:]]{4}-[[:xdigit:]]{12}-", REG_EXTENDED | REG_ICASE) != 0)
97
		errx(1, "failed to compile regex");
98
	if (regexec(&re, name, 1, rm, 0) != 0)
94
		errx(1, "Invalid name: %s", name);
99
		errx(1, "Invalid name: %s", name);
95
	*vname = cp + 1;
100
	regfree(&re);
101
102
	cp = name + rm[0].rm_eo - 1;
96
	*cp = '\0';
103
	*cp = '\0';
104
	*vname = cp + 1;
97
	if (efi_name_to_guid(name, guid) < 0)
105
	if (efi_name_to_guid(name, guid) < 0)
98
		errx(1, "Invalid guid %s", name);
106
		errx(1, "Invalid guid %s", name);
99
}
107
}

Return to bug 251025