On 28/06/13(Fri) 13:08, joshua stein wrote:
> On Fri, 28 Jun 2013 at 12:14:43 -0400, David Hill wrote:
> > in pms_proc_mouse, wsmouse_input is called with an uninitialized
> > 'dz' variable if the sc->protocol->type is not PMS_STANDARD or
> > PMS_INTELLI.
>
> It should probably just return and not call wsmouse_input if the
> protocol type is unknown.
The protocol type cannot be unknown. pms_proc_mouse() is only called
through sc->protocol->proc() and in this case "type" is always defined
to either PMS_STANDARD or PMS_INTELLI.
So this change only makes the code harder to understand as it suggests
there's more than two protocols supported by this function.
> > Index: pms.c
> > ===================================================================
> > RCS file: /cvs/src/sys/dev/pckbc/pms.c,v
> > retrieving revision 1.43
> > diff -u -p -r1.43 pms.c
> > --- pms.c 31 May 2013 19:21:09 -0000 1.43
> > +++ pms.c 28 Jun 2013 16:13:02 -0000
> > @@ -595,7 +595,7 @@ void
> > pms_proc_mouse(struct pms_softc *sc)
> > {
> > u_int buttons;
> > - int dx, dy, dz;
> > + int dx, dy, dz;
> >
> > buttons = butmap[sc->packet[0] & PMS_PS2_BUTTONSMASK];
> > dx = (sc->packet[0] & PMS_PS2_XNEG) ?
> > @@ -604,11 +604,12 @@ pms_proc_mouse(struct pms_softc *sc)
> > (int)sc->packet[2] - 256 : sc->packet[2];
> >
> > switch (sc->protocol->type) {
> > - case PMS_STANDARD:
> > - dz = 0;
> > - break;
> > case PMS_INTELLI:
> > dz = (signed char)sc->packet[3];
> > + break;
> > + case PMS_STANDARD:
> > + default:
> > + dz = 0;
> > break;
> > }
> >
> >
>