Below the uiomove() conversion for dev/wscons/wsevent.c. 'cnt' could
as well be a size_t, but using u_int makes clear, that it will never
exceed UINT_MAX, and that 'ev->get = cnt;' won't overflow.

Index: dev/wscons/wsevent.c
===================================================================
RCS file: /cvs/src/sys/dev/wscons/wsevent.c,v
retrieving revision 1.14
diff -u -p -u -r1.14 wsevent.c
--- dev/wscons/wsevent.c        10 Sep 2015 18:14:52 -0000      1.14
+++ dev/wscons/wsevent.c        9 Jan 2016 08:35:55 -0000
@@ -136,7 +136,9 @@ wsevent_fini(struct wseventvar *ev)
 int
 wsevent_read(struct wseventvar *ev, struct uio *uio, int flags)
 {
-       int s, n, cnt, error;
+       int s, error;
+       u_int cnt;
+       size_t n;
 
        /*
         * Make sure we can return at least 1.
@@ -169,7 +171,7 @@ wsevent_read(struct wseventvar *ev, stru
        n = howmany(uio->uio_resid, sizeof(struct wscons_event));
        if (cnt > n)
                cnt = n;
-       error = uiomovei((caddr_t)&ev->q[ev->get],
+       error = uiomove((caddr_t)&ev->q[ev->get],
            cnt * sizeof(struct wscons_event), uio);
        n -= cnt;
        /*
@@ -182,7 +184,7 @@ wsevent_read(struct wseventvar *ev, stru
                return (error);
        if (cnt > n)
                cnt = n;
-       error = uiomovei((caddr_t)&ev->q[0],
+       error = uiomove((caddr_t)&ev->q[0],
            cnt * sizeof(struct wscons_event), uio);
        ev->get = cnt;
        return (error);

cheers,
natano

Reply via email to