DF-5703 / fix.diff
diff --git a/sys/libkern/strtol.c b/sys/libkern/strtol.c index ae87400..f000000 100644 --- a/sys/libkern/strtol.c +++ b/sys/libkern/strtol.c @@ -68,7 +68,8 @@ strtol(const char *nptr, char **endptr, int base) } else if (c == '+') 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/strtoul.c b/sys/libkern/strtoul.c index 52ef3e5..f000001 100644 --- a/sys/libkern/strtoul.c +++ b/sys/libkern/strtoul.c @@ -66,7 +66,8 @@ strtoul(const char *nptr, char **endptr, int base) } else if (c == '+') 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; |