2005-03-07 12:25:01

by Benoit Boissinot

[permalink] [raw]
Subject: [patch] fix NULL pointer deference in ALPS

I get a NULL pointer deference in with alps while suspending.

The following patch fixes it: alps_get_model returns a pointer or
NULL in case of errors, so we need to check for the results being NULL,
not negative.

Since it is trivial, it is maybe a candidate for 2.6.11.2.

It does not apply to -mm since the last occurence of alps_get_model
was corrected (but not the others), if needed i can send a patch for
-mm as well.

regards,

Benoit

Signed-off-by: Benoit Boissinot <[email protected]>


--- linux-clean/drivers/input/mouse/alps.c 2005-03-07 12:45:46.000000000 +0100
+++ linux-vanilla/drivers/input/mouse/alps.c 2005-03-07 12:50:12.000000000 +0100
@@ -325,7 +325,7 @@ static int alps_reconnect(struct psmouse
int model;
unsigned char param[4];

- if ((model = alps_get_model(psmouse)) < 0)
+ if (!(model = alps_get_model(psmouse)))
return -1;

if (model == ALPS_MODEL_DUALPOINT && alps_passthrough_mode(psmouse, 1))
@@ -358,7 +358,7 @@ int alps_init(struct psmouse *psmouse)
unsigned char param[4];
int model;

- if ((model = alps_get_model(psmouse)) < 0)
+ if (!(model = alps_get_model(psmouse)))
return -1;

printk(KERN_INFO "ALPS Touchpad (%s) detected\n",
@@ -412,7 +412,7 @@ int alps_init(struct psmouse *psmouse)

int alps_detect(struct psmouse *psmouse, int set_properties)
{
- if (alps_get_model(psmouse) < 0)
+ if (!alps_get_model(psmouse))
return -1;

if (set_properties) {


2005-03-07 13:06:16

by Alexey Dobriyan

[permalink] [raw]
Subject: Re: [patch] fix NULL pointer deference in ALPS

On Monday 07 March 2005 14:24, Benoit Boissinot wrote:

> alps_get_model returns a pointer or NULL in case of errors, so we need to
> check for the results being NULL, not negative.

2.6.11-bk2: int alps_get_model(struct psmouse *psmouse)
takes 1 argument, returns -1 on error

2.6.11-mm1: static struct alps_model_info *alps_get_model(struct psmouse *psmouse, int *version)
takes 2 arguments, returns NULL on error

> --- linux-clean/drivers/input/mouse/alps.c
> +++ linux-vanilla/drivers/input/mouse/alps.c

> - if ((model = alps_get_model(psmouse)) < 0)
> + if (!(model = alps_get_model(psmouse)))

> - if ((model = alps_get_model(psmouse)) < 0)
> + if (!(model = alps_get_model(psmouse)))

> - if (alps_get_model(psmouse) < 0)
> + if (!alps_get_model(psmouse))

To what version of kernel this patch should be applied?

Alexey

2005-03-07 13:07:02

by Vojtech Pavlik

[permalink] [raw]
Subject: Re: [patch] fix NULL pointer deference in ALPS

On Mon, Mar 07, 2005 at 01:24:32PM +0100, Benoit Boissinot wrote:
> I get a NULL pointer deference in with alps while suspending.
>
> The following patch fixes it: alps_get_model returns a pointer or
> NULL in case of errors, so we need to check for the results being NULL,
> not negative.
>
> Since it is trivial, it is maybe a candidate for 2.6.11.2.
>
> It does not apply to -mm since the last occurence of alps_get_model
> was corrected (but not the others), if needed i can send a patch for
> -mm as well.

I already fixed it in my tree, but feel free to push it for the sucker
tree.

> regards,
>
> Benoit
>
> Signed-off-by: Benoit Boissinot <[email protected]>
>
>
> --- linux-clean/drivers/input/mouse/alps.c 2005-03-07 12:45:46.000000000 +0100
> +++ linux-vanilla/drivers/input/mouse/alps.c 2005-03-07 12:50:12.000000000 +0100
> @@ -325,7 +325,7 @@ static int alps_reconnect(struct psmouse
> int model;
> unsigned char param[4];
>
> - if ((model = alps_get_model(psmouse)) < 0)
> + if (!(model = alps_get_model(psmouse)))
> return -1;
>
> if (model == ALPS_MODEL_DUALPOINT && alps_passthrough_mode(psmouse, 1))
> @@ -358,7 +358,7 @@ int alps_init(struct psmouse *psmouse)
> unsigned char param[4];
> int model;
>
> - if ((model = alps_get_model(psmouse)) < 0)
> + if (!(model = alps_get_model(psmouse)))
> return -1;
>
> printk(KERN_INFO "ALPS Touchpad (%s) detected\n",
> @@ -412,7 +412,7 @@ int alps_init(struct psmouse *psmouse)
>
> int alps_detect(struct psmouse *psmouse, int set_properties)
> {
> - if (alps_get_model(psmouse) < 0)
> + if (!alps_get_model(psmouse))
> return -1;
>
> if (set_properties) {
>
>

--
Vojtech Pavlik
SuSE Labs, SuSE CR

2005-03-07 13:08:55

by Vojtech Pavlik

[permalink] [raw]
Subject: Re: [patch] fix NULL pointer deference in ALPS

On Mon, Mar 07, 2005 at 02:10:02PM +0100, Vojtech Pavlik wrote:

> On Mon, Mar 07, 2005 at 01:24:32PM +0100, Benoit Boissinot wrote:
> > I get a NULL pointer deference in with alps while suspending.
> >
> > The following patch fixes it: alps_get_model returns a pointer or
> > NULL in case of errors, so we need to check for the results being NULL,
> > not negative.
> >
> > Since it is trivial, it is maybe a candidate for 2.6.11.2.
> >
> > It does not apply to -mm since the last occurence of alps_get_model
> > was corrected (but not the others), if needed i can send a patch for
> > -mm as well.
>
> I already fixed it in my tree, but feel free to push it for the sucker
> tree.

Oops. No, 2.6.11 doesn't need that fix. Only -mm does, and it's already
queued.

--
Vojtech Pavlik
SuSE Labs, SuSE CR

2005-03-07 13:12:45

by Benoit Boissinot

[permalink] [raw]
Subject: Re: [patch] fix NULL pointer deference in ALPS

On Mon, Mar 07, 2005 at 04:06:33PM +0200, Alexey Dobriyan wrote:
> On Monday 07 March 2005 14:24, Benoit Boissinot wrote:
>
> > alps_get_model returns a pointer or NULL in case of errors, so we need to
> > check for the results being NULL, not negative.
>
> 2.6.11-bk2: int alps_get_model(struct psmouse *psmouse)
> takes 1 argument, returns -1 on error
>
> 2.6.11-mm1: static struct alps_model_info *alps_get_model(struct psmouse *psmouse, int *version)
> takes 2 arguments, returns NULL on error
>

Sorry, i misreaded the vanilla code, it only applies to -mm.

Since it seems to be fixed in bk-input, please forget the patch.

Sorry.

Benoit
--
powered by bash/screen/(urxvt/fvwm|linux-console)/gentoo/gnu/linux OS