sscanf doesn't handle %x in 2.4.20
PATCH 1/1 sscanf doesn't handle %x in 2.4.20
In vsscanf in vsprintf.c incorectly uses isdigit to check for a leading numeric
after finding a %x and setting the base to 16. This breaks device mapper under
certain conditions. Following patch is backport from 2.5.50.
usr/src/linux-2.4.20/lib/vsprintf.c Fri Dec 13 09:57:14 2002 renamed from vsprintf.c Thu Oct 11 13:17:22 2001 +5 -1
@@ -637,7 +637,11 @@ while (isspace(*str)) str++; - if (!*str || !isdigit(*str)) + if (!*str + || (base == 16 && !isxdigit(*str)) + || (base == 10 && !isdigit(*str)) + || (base == 8 && (!isdigit(*str) || *str > '7')) + || (base == 0 && !isdigit(*str))) break; switch(qualifier) {