mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* Re: FW: [PATCH] cs5535_gpio: Fix root triggerable integer underflow
       [not found] <F06EB2894F3F0D45AD9BEA7246DE9C900E542FE2@WCSEXCMBS1.ad.wabtec.com>
@ 2009-07-24 17:40 ` Ben Gardner
  2009-07-24 19:00   ` Michael Buesch
  0 siblings, 1 reply; 2+ messages in thread
From: Ben Gardner @ 2009-07-24 17:40 UTC (permalink / raw)
  To: Michael Buesch; +Cc: linux-kernel

Hi Michael,

> This patch fixes a possible root triggerable (I hope the device is only
> readable by root?) integer underflow.
> Well, it's not really an underflow, but as loff_t is a signed type, the
> range check at the start of the function is incomplete. It needs to
> check for <0, too.
> Otherwise the loop below will poke into random memory and I/O space.
> This could be used to crash the machine, at least.
>
> This patch is only compiletested, because I do not have the hardware.
>
> Signed-off-by: Michael Buesch <mb@bu3sch.de>
>
> ---
>
> I'm not sure if this bug is exploitable. I _guess_ the device is only
> readable by root
> on a standard setup.

The cs5525_gpio driver uses the default seek, which doesn't allow
negative position values.
So, I don't think it necessary to check for negative values.

Ben

> ---
>  drivers/char/cs5535_gpio.c |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> --- linux-2.6.orig/drivers/char/cs5535_gpio.c
> +++ linux-2.6/drivers/char/cs5535_gpio.c
> @@ -124,21 +124,21 @@ static ssize_t cs5535_gpio_write(struct
>  static ssize_t cs5535_gpio_read(struct file *file, char __user *buf,
>                                size_t len, loff_t *ppos)
>  {
>        u32     m = iminor(file->f_path.dentry->d_inode);
>        u32     base = gpio_base + cs5535_lowhigh_base(m);
>        int     rd_bit = 1 << (m & 0x0f);
>        int     i;
>        char    ch;
>        ssize_t count = 0;
>
> -       if (*ppos >= ARRAY_SIZE(rm))
> +       if (*ppos < 0 || *ppos >= ARRAY_SIZE(rm))
>                return 0;
>
>        for (i = *ppos; (i < (*ppos + len)) && (i < ARRAY_SIZE(rm));
> i++) {
>                ch = (inl(base + rm[i].rd_offset) & rd_bit) ?
>                     rm[i].on : rm[i].off;
>
>                if (put_user(ch, buf+count))
>                        return -EFAULT;
>
>                count++;
>
> --
> Greetings, Michael.

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: FW: [PATCH] cs5535_gpio: Fix root triggerable integer underflow
  2009-07-24 17:40 ` FW: [PATCH] cs5535_gpio: Fix root triggerable integer underflow Ben Gardner
@ 2009-07-24 19:00   ` Michael Buesch
  0 siblings, 0 replies; 2+ messages in thread
From: Michael Buesch @ 2009-07-24 19:00 UTC (permalink / raw)
  To: Ben Gardner; +Cc: linux-kernel

On Friday 24 July 2009 19:40:28 Ben Gardner wrote:
> Hi Michael,
> 
> > This patch fixes a possible root triggerable (I hope the device is only
> > readable by root?) integer underflow.
> > Well, it's not really an underflow, but as loff_t is a signed type, the
> > range check at the start of the function is incomplete. It needs to
> > check for <0, too.
> > Otherwise the loop below will poke into random memory and I/O space.
> > This could be used to crash the machine, at least.
> >
> > This patch is only compiletested, because I do not have the hardware.
> >
> > Signed-off-by: Michael Buesch <mb@bu3sch.de>
> >
> > ---
> >
> > I'm not sure if this bug is exploitable. I _guess_ the device is only
> > readable by root
> > on a standard setup.
> 
> The cs5525_gpio driver uses the default seek, which doesn't allow
> negative position values.
> So, I don't think it necessary to check for negative values.

Yes you are right.

-- 
Greetings, Michael.

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2009-07-24 19:00 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <F06EB2894F3F0D45AD9BEA7246DE9C900E542FE2@WCSEXCMBS1.ad.wabtec.com>
2009-07-24 17:40 ` FW: [PATCH] cs5535_gpio: Fix root triggerable integer underflow Ben Gardner
2009-07-24 19:00   ` Michael Buesch

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®