|
Message-ID: <loom.20131115T212022-997@post.gmane.org> Date: Fri, 15 Nov 2013 20:23:42 +0000 (UTC) From: David Wuertele <dave+gmane@...rtele.com> To: musl@...ts.openwall.com Subject: sscanf(3) return value doesn't count %100c assignments Comparing musl-0.9.14 with glibc-2.13, I find sscanf(3) behaves differently. In Glibc, sscanf() returns the same assignment counts when using %Nc compared with using %s, but in Mulsl, sscanf returns different assignment counts. For example, take the following two instructions: sscanf (string, "%d %s", &number, remainder); sscanf (string, "%d %100c", &number, remainder); If each of these makes two assignments, they should both return 2. Glibc works this way. But even though with Musl they both make two assignments, Musl sscanf() returns 2 for the %s and it returns 1 for the %100c version. Here is a test program: #include <stdio.h> #include <strings.h> int main () { int number = 0; char *string = "1234 five six seven"; char remainder[100]; bzero (remainder, sizeof(remainder)); int args = sscanf (string, "%d %s", &number, remainder); fprintf (stderr, "format=%%s string=\"%s\" args=%d number=%d remainder=%s\n", string, args, number, remainder); args = sscanf (string, "%d %100c", &number, remainder); fprintf (stderr, "format=%%100c string=\"%s\" args=%d number=%d remainder=%s\n", string, args, number, remainder); return 0; } Here is how I compile them: arm-tegra452-linux-gnueabi-gcc --static test.c -o test-glibc arm-linux-musleabishf-gcc -static test.c -o test-musl Here is what I see when I execute them: # ./test-musl format=%s string="1234 five six" args=2 number=1234 remainder=five format=%100c string="1234 five six" args=1 number=1234 remainder=five six # ./test-glibc format=%s string="1234 five six" args=2 number=1234 remainder=five format=%100c string="1234 five six" args=2 number=1234 remainder=five six This seems like a bug to me. I tried to read through musl-0.9.14/src/stdio/vfscanf.c to troubleshoot this, but I couldn't find the source of the difference. Can anyone give me pointers to build a musl-libc that has a sscanf() that is compatible with glibc's sscanf()? Thanks, Dave
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.