bin/181153: sscanf doesn't skip whitespace properly
Andrey Chernov
ache at freebsd.org
Fri Aug 9 02:20:01 UTC 2013
The following reply was made to PR kern/181153; it has been noted by GNATS.
From: Andrey Chernov <ache at freebsd.org>
To: Garrett Cooper <yaneurabeya at gmail.com>
Cc: "FreeBSD-gnats-submit at FreeBSD.org" <freebsd-gnats-submit at freebsd.org>
Subject: Re: bin/181153: sscanf doesn't skip whitespace properly
Date: Fri, 09 Aug 2013 06:15:55 +0400
On 09.08.2013 6:03, Garrett Cooper wrote:
>> I doubt this exampe should skip whitespace. POSIX says:
>> "A directive that is an ordinary character shall be executed as follows:
>> the next byte shall be read from the input and compared with the byte
>> that comprises the directive; if the comparison shows that they are not
>> equivalent, the directive shall fail, and the differing and subsequent
>> bytes shall remain unread."
>> %% is the ordinary % character and no isspace(3) skipping mentioned in
>> this explanation.
>
> What about this line [*]?
>
> "
> A directive composed of one or more white-space characters is executed
> by reading input until no more valid input can be read, or up to the
> first byte which is not a white-space character which remains unread.
> "
>
> I think this is what the NetBSD test developer was shooting for originally.
>
> FWIW I did print out the value previously and it was (char)0, or '\0'.
>
> Thanks!
>
> * http://pubs.opengroup.org/onlinepubs/7908799/xsh/fscanf.html
>
I see another line here:
http://pubs.opengroup.org/onlinepubs/9699919799/functions/sscanf.html
(2013 Edition)
"A directive that is a conversion specification defines a set of
matching input sequences, as described below for each conversion
character. A conversion specification shall be executed in the following
steps.
Input white-space characters (as specified by isspace) shall be skipped,
unless the conversion specification includes a [, c, C, or n conversion
specifier."
Which is clearly not our case because %% is not a conversion, just
ordinary character. And don't see there line your mentioned.
Probably there still are skipping bugs with other %-modifiers, I don't
inspect it carefully, but not with %%.
--
http://ache.vniz.net/
bitcoin:1G6ugdNY6e5jx1GVnAU2ntj2NEfmjKG85r
More information about the freebsd-bugs
mailing list