(v)sscanf handles %i improperly (+patch)

From: Vladimir Kondratiev (vladimir.kondratiev@intel.com)
Date: Tue Dec 25 2001 - 16:46:12 EST


I found (v)sscanf included in last kernels handles %i format improperly.
Currently, up to 2.4.17, %i is handled identical to %d. However,
accordingly to man for sscanf,

       i Matches an optionally signed integer; the next
              pointer must be a pointer to int. The integer is
              read in base 16 if it begins with `0x' or `0X', in
              base 8 if it begins with `0', and in base 10 other­
              wise. Only characters that correspond to the base
              are used.

Please, when replying, CC me: mailto:vladimir.kondratiev@intel.com

Patch is quite small (against 2.4.17):

--- vsprintf.c.orig Thu Oct 11 20:17:22 2001
+++ vsprintf.c Tue Dec 25 23:29:31 2001
@@ -616,8 +616,9 @@
         case 'X':
             base = 16;
             break;
- case 'd':
         case 'i':
+ base = 0; /* autodetect */
+ case 'd':
             is_sign = 1;
         case 'u':
             break;

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Mon Dec 31 2001 - 21:00:11 EST