Re: backlight: catch invalid input

From: Pavel Machek
Date: Sat Nov 22 2008 - 05:35:50 EST


On Fri 2008-11-21 15:54:21, Andrew Morton wrote:
> On Fri, 21 Nov 2008 12:14:14 +0100
> Pavel Machek <pavel@xxxxxxx> 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
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/