Messages in this thread | | | Date | Wed, 18 Feb 2015 10:44:42 +0300 | From | Alexey Dobriyan <> | Subject | Re: Fw: [PATCH] lib/kstrtox.c Stop parsing integer on overflow |
| |
On Tue, Feb 17, 2015 at 04:17:24PM -0800, Andrew Morton wrote: > ? > > Begin forwarded message: > > Date: Mon, 16 Feb 2015 10:48:50 -0800 > From: Anshul Garg <aksgarg1989@gmail.com> > To: linux-kernel@vger.kernel.org > Cc: aksgarg1989@gmail.com, anshul.g@samsung.com, torvalds@linux-foundation.org > Subject: [PATCH] lib/kstrtox.c Stop parsing integer on overflow > > > From: Anshul Garg <aksgarg1989@gmail.com> > > While converting string representation to integer > break the loop if overflow is detected. > > Signed-off-by: Anshul Garg <aksgarg1989@gmail.com> > --- > lib/kstrtox.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/lib/kstrtox.c b/lib/kstrtox.c > index ec8da78..6f30209 100644 > --- a/lib/kstrtox.c > +++ b/lib/kstrtox.c > @@ -70,8 +70,10 @@ unsigned int _parse_integer(const char *s, unsigned int base, unsigned long long > * it in the max base we support (16) > */ > if (unlikely(res & (~0ull << 60))) { > - if (res > div_u64(ULLONG_MAX - val, base)) > + if (res > div_u64(ULLONG_MAX - val, base)) { > overflow = 1; > + break; > + } > } > res = res * base + val; > rv++;
The _notion_ of a patch is OK if you want EVERY simple_strtoull() call to stop parsing past overflow right now. It SHOULD have done so from day 1, but it doesn't do that.
When I wrote kstrto*() code I deliberatedly didn't break this bug because of the sheer number of call sites.
If you are OK with changing bug-for-bug compatibility, then patch simply need to delete overflow detection code.
Alexey
| |