⬢ DragonFlyBSD Kernel Audit
DF-5702 / fix.diff
← back to finding ↓ download raw
diff --git a/sys/libkern/strtoq.c b/sys/libkern/strtoq.c
index 5df348ea..acbcb475 100644
--- a/sys/libkern/strtoq.c
+++ b/sys/libkern/strtoq.c
@@ -70,7 +70,8 @@ strtoq(const char *nptr, char **endptr, int base)
 			c = *s++;
 	}
 	if ((base == 0 || base == 16) &&
-	    c == '0' && (*s == 'x' || *s == 'X')) {
+	    c == '0' && (*s == 'x' || *s == 'X') &&
+	    isxdigit((unsigned char)s[1])) {
 		c = s[1];
 		s += 2;
 		base = 16;
diff --git a/sys/libkern/strtouq.c b/sys/libkern/strtouq.c
index f989683c..d479608c 100644
--- a/sys/libkern/strtouq.c
+++ b/sys/libkern/strtouq.c
@@ -68,7 +68,8 @@ strtouq(const char *nptr, char **endptr, int base)
 			c = *s++;
 	}
 	if ((base == 0 || base == 16) &&
-	    c == '0' && (*s == 'x' || *s == 'X')) {
+	    c == '0' && (*s == 'x' || *s == 'X') &&
+	    isxdigit((unsigned char)s[1])) {
 		c = s[1];
 		s += 2;
 		base = 16;