[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#69278: libc6 sscanf gives inconsistent results.



>>>>> Arturo Galvan Rdz writes:

 > Package: libc6
 > Version: 2.1.3-10

 > I am using the following code:

 > File: testsscanf.c

 > #include <stdio.h>

 > main(int argc, char *argv[]){

 >   char tmp[4];
 >   int x;

 >   strncpy(tmp, argv[1], 2);
 >   tmp[2]= 0;
 >   sscanf(tmp, "%i", &x);
 >   printf("tmp= %s, x= %i\n", tmp, x);
 > }

 >   This is what I get when invoking the compiled version with the following
 > arguments:

 > bach:~>./testsscanf 04
 > tmp= 04, x= 4

 > bach:~>./testsscanf 05
 > tmp= 05, x= 5

 > bach:~>./testsscanf 06
 > tmp= 06, x= 6

 > bach:~>./testsscanf 07
 > tmp= 07, x= 7

 > bach:~>./testsscanf 08
 > tmp= 08, x= 0

 > bach:~>./testsscanf 08
 > tmp= 08, x= 0

 > bach:~>./testsscanf 09
 > tmp= 09, x= 0

 > bach:~>./testsscanf 10
 > tmp= 10, x= 10

 > bach:~>./testsscanf 11
 > tmp= 11, x= 11


 >   As you can see, everything works fine except when using the strings '08' and
 > '09' which are converted to the integer 0, when they should be converted to 8
 > and 9 respecively.
Nope - a leading 0 indicates octal, and 08 is not an octal value.
Btw. try 010 and 10 and compare.

Andreas
-- 
 Andreas Jaeger
  SuSE Labs aj@suse.de
   private aj@arthur.inka.de
    http://www.suse.de/~aj



Reply to: