Messages in this thread | | | Date | Sat, 22 Nov 2008 11:37:17 +0100 | From | Pavel Machek <> | Subject | Re: backlight: catch invalid input |
| |
On Fri 2008-11-21 15:54:21, Andrew Morton wrote: > On Fri, 21 Nov 2008 12:14:14 +0100 > Pavel Machek <pavel@suse.cz> wrote: > > > > > Currently, echo > brightness turns brightness to zero due to > > insufficient checking. Add a test to catch that. > > > > OK. And what happens if you do > > echo wibble > brightness > > ?
That's okay, that is catched by tests already existing in there. size is the size we decoded, count is how many bytes user wrote. If (size != count), we return failure.
But there's an exception for whitespace, and missing check for nothing at all being written.
> > diff --git a/drivers/video/backlight/backlight.c b/drivers/video/backlight/backlight.c > > index fab0bc8..5c2e23d 100644 > > --- a/drivers/video/backlight/backlight.c > > +++ b/drivers/video/backlight/backlight.c > > @@ -86,6 +86,8 @@ static ssize_t backlight_store_power(str > > int power = simple_strtoul(buf, &endp, 0); > > size_t size = endp - buf; > > > > + if (!size) > > + return -EINVAL; > > if (*endp && isspace(*endp)) > > size++; > > if (size != count) > > A better fix would be to use strict_strtoul() and check its return > value.
Aha, here's the hint :-). Ok, will do. Pavel
-- (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
| |