DF-5702 / fix.diff
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; |