Re: [PATCH v1 2/6] lib: scanf: handle integer overflows in vsscanf
From: Konstantin Khlebnikov
Date: Mon Mar 11 2019 - 03:22:36 EST
On 11.03.2019 0:52, Linus Torvalds wrote:
On Sun, Mar 10, 2019 at 2:06 PM Rasmus Villemoes
<linux@xxxxxxxxxxxxxxxxxx> wrote:
IIRC, this has been attempted before, causing a userspace regression
because some sysfs/procfs file matched with %u or %x, and somebody wrote
-1 to get 0xffffffff .
.. which is correct anyway. That's how scanf is supposed to work.
Well. In this case '%u' sscanf in kernel is already broken.
%u does not accept minus sign and looks like never does.
'is_sign' is set only for %d and %i,
without it string couldn't pass initial check of first "digit".
More over simple_strtoul never accepted '-'.
Glibc version indeed accepts '-1' as %u and returns 0xFFFFFFFF
which isn't in manpage:' optionally signed' mentioned only for %d and %i.
But this explicitly mentioned in manpage for 'stroul'.
If somebody needs overflow checking, they shouldn't be using scanf.
Linus