Module Name: src Committed By: riastradh Date: Wed Jan 24 05:35:59 UTC 2018
Modified Files: src/sys/arch/arm/allwinner: awin_debe.c src/sys/arch/arm/iomd: vidcvideo.c src/sys/arch/luna68k/dev: lunafb.c src/sys/arch/pmax/ibus: pm.c src/sys/dev/ic: bt463.c bt485.c igsfb.c src/sys/dev/pci: radeonfb.c src/sys/dev/sbus: tcx.c src/sys/dev/tc: cfb.c mfb.c sfb.c sfbplus.c stic.c tfb.c xcfb.c Log Message: Fix integer overflows noted by Silvio Cesare of InfoSect. Someone^TM should name these idioms so we can eliminate this class of copypasta bug. To generate a diff of this commit: cvs rdiff -u -r1.20 -r1.21 src/sys/arch/arm/allwinner/awin_debe.c cvs rdiff -u -r1.44 -r1.45 src/sys/arch/arm/iomd/vidcvideo.c cvs rdiff -u -r1.36 -r1.37 src/sys/arch/luna68k/dev/lunafb.c cvs rdiff -u -r1.14 -r1.15 src/sys/arch/pmax/ibus/pm.c cvs rdiff -u -r1.17 -r1.18 src/sys/dev/ic/bt463.c src/sys/dev/ic/bt485.c cvs rdiff -u -r1.56 -r1.57 src/sys/dev/ic/igsfb.c cvs rdiff -u -r1.93 -r1.94 src/sys/dev/pci/radeonfb.c cvs rdiff -u -r1.57 -r1.58 src/sys/dev/sbus/tcx.c cvs rdiff -u -r1.61 -r1.62 src/sys/dev/tc/cfb.c src/sys/dev/tc/tfb.c cvs rdiff -u -r1.59 -r1.60 src/sys/dev/tc/mfb.c cvs rdiff -u -r1.84 -r1.85 src/sys/dev/tc/sfb.c cvs rdiff -u -r1.37 -r1.38 src/sys/dev/tc/sfbplus.c cvs rdiff -u -r1.51 -r1.52 src/sys/dev/tc/stic.c cvs rdiff -u -r1.55 -r1.56 src/sys/dev/tc/xcfb.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/arm/allwinner/awin_debe.c diff -u src/sys/arch/arm/allwinner/awin_debe.c:1.20 src/sys/arch/arm/allwinner/awin_debe.c:1.21 --- src/sys/arch/arm/allwinner/awin_debe.c:1.20 Sun Nov 22 17:50:48 2015 +++ src/sys/arch/arm/allwinner/awin_debe.c Wed Jan 24 05:35:58 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: awin_debe.c,v 1.20 2015/11/22 17:50:48 aymeric Exp $ */ +/* $NetBSD: awin_debe.c,v 1.21 2018/01/24 05:35:58 riastradh Exp $ */ /*- * Copyright (c) 2014 Jared D. McNeill <jmcne...@invisible.ca> @@ -38,7 +38,7 @@ #define AWIN_DEBE_CURMAX 64 #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: awin_debe.c,v 1.20 2015/11/22 17:50:48 aymeric Exp $"); +__KERNEL_RCSID(0, "$NetBSD: awin_debe.c,v 1.21 2018/01/24 05:35:58 riastradh Exp $"); #include <sys/param.h> #include <sys/bus.h> @@ -393,7 +393,7 @@ awin_debe_set_cursor(struct awin_debe_so if (cur->which & WSDISPLAY_CURSOR_DOCMAP) { index = cur->cmap.index; count = cur->cmap.count; - if (index >= 2 || (index + count) > 2) + if (index >= 2 || count > 2 - index) return EINVAL; error = copyin(cur->cmap.red, &r[index], count); if (error) Index: src/sys/arch/arm/iomd/vidcvideo.c diff -u src/sys/arch/arm/iomd/vidcvideo.c:1.44 src/sys/arch/arm/iomd/vidcvideo.c:1.45 --- src/sys/arch/arm/iomd/vidcvideo.c:1.44 Tue Jan 21 19:31:57 2014 +++ src/sys/arch/arm/iomd/vidcvideo.c Wed Jan 24 05:35:58 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: vidcvideo.c,v 1.44 2014/01/21 19:31:57 christos Exp $ */ +/* $NetBSD: vidcvideo.c,v 1.45 2018/01/24 05:35:58 riastradh Exp $ */ /* * Copyright (c) 2001 Reinoud Zandijk @@ -30,7 +30,7 @@ #include <sys/cdefs.h> /* RCS ID & Copyright macro defns */ -__KERNEL_RCSID(0, "$NetBSD: vidcvideo.c,v 1.44 2014/01/21 19:31:57 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: vidcvideo.c,v 1.45 2018/01/24 05:35:58 riastradh Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -667,7 +667,7 @@ set_cmap(struct vidcvideo_softc *sc, str u_int index = p->index, count = p->count; int error; - if (index >= CMAP_SIZE || (index + count) > CMAP_SIZE) + if (index >= CMAP_SIZE || count > CMAP_SIZE - index) return EINVAL; error = copyin(p->red, &cmap.r[index], count); Index: src/sys/arch/luna68k/dev/lunafb.c diff -u src/sys/arch/luna68k/dev/lunafb.c:1.36 src/sys/arch/luna68k/dev/lunafb.c:1.37 --- src/sys/arch/luna68k/dev/lunafb.c:1.36 Sat Oct 4 16:58:17 2014 +++ src/sys/arch/luna68k/dev/lunafb.c Wed Jan 24 05:35:58 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: lunafb.c,v 1.36 2014/10/04 16:58:17 tsutsui Exp $ */ +/* $NetBSD: lunafb.c,v 1.37 2018/01/24 05:35:58 riastradh Exp $ */ /*- * Copyright (c) 2000 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ #include <sys/cdefs.h> /* RCS ID & Copyright macro defns */ -__KERNEL_RCSID(0, "$NetBSD: lunafb.c,v 1.36 2014/10/04 16:58:17 tsutsui Exp $"); +__KERNEL_RCSID(0, "$NetBSD: lunafb.c,v 1.37 2018/01/24 05:35:58 riastradh Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -345,7 +345,7 @@ omsetcmap(struct omfb_softc *sc, struct int cmsize, i, error; cmsize = sc->sc_dc->dc_cmsize; - if (index >= cmsize || (index + count) > cmsize) + if (index >= cmsize || count > cmsize - index) return (EINVAL); error = copyin(p->red, &cmap.r[index], count); Index: src/sys/arch/pmax/ibus/pm.c diff -u src/sys/arch/pmax/ibus/pm.c:1.14 src/sys/arch/pmax/ibus/pm.c:1.15 --- src/sys/arch/pmax/ibus/pm.c:1.14 Fri Jan 5 13:11:32 2018 +++ src/sys/arch/pmax/ibus/pm.c Wed Jan 24 05:35:58 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: pm.c,v 1.14 2018/01/05 13:11:32 flxd Exp $ */ +/* $NetBSD: pm.c,v 1.15 2018/01/24 05:35:58 riastradh Exp $ */ /*- * Copyright (c) 2002, 2003 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: pm.c,v 1.14 2018/01/05 13:11:32 flxd Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pm.c,v 1.15 2018/01/24 05:35:58 riastradh Exp $"); #include <sys/param.h> #include <sys/buf.h> @@ -742,7 +742,7 @@ pm_set_cursor(struct pm_softc *sc, struc if ((v & WSDISPLAY_CURSOR_DOCMAP) != 0) { index = p->cmap.index; count = p->cmap.count; - if (index >= 2 || (index + count) > 2) + if (index >= 2 || count > 2 - index) return (EINVAL); rv = copyin(p->cmap.red, &cc->cc_color[index], count); Index: src/sys/dev/ic/bt463.c diff -u src/sys/dev/ic/bt463.c:1.17 src/sys/dev/ic/bt463.c:1.18 --- src/sys/dev/ic/bt463.c:1.17 Mon Jun 24 03:57:36 2013 +++ src/sys/dev/ic/bt463.c Wed Jan 24 05:35:58 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: bt463.c,v 1.17 2013/06/24 03:57:36 riastradh Exp $ */ +/* $NetBSD: bt463.c,v 1.18 2018/01/24 05:35:58 riastradh Exp $ */ /*- * Copyright (c) 1998 The NetBSD Foundation, Inc. @@ -62,7 +62,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: bt463.c,v 1.17 2013/06/24 03:57:36 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: bt463.c,v 1.18 2018/01/24 05:35:58 riastradh Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -416,7 +416,7 @@ bt463_check_curcmap(struct ramdac_cookie int count, index, error; if (cursorp->cmap.index > 2 || - (cursorp->cmap.index + cursorp->cmap.count) > 2) + cursorp->cmap.count > 2 - cursorp->cmap.index) return (EINVAL); count = cursorp->cmap.count; index = cursorp->cmap.index; Index: src/sys/dev/ic/bt485.c diff -u src/sys/dev/ic/bt485.c:1.17 src/sys/dev/ic/bt485.c:1.18 --- src/sys/dev/ic/bt485.c:1.17 Mon Jun 24 03:57:36 2013 +++ src/sys/dev/ic/bt485.c Wed Jan 24 05:35:58 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: bt485.c,v 1.17 2013/06/24 03:57:36 riastradh Exp $ */ +/* $NetBSD: bt485.c,v 1.18 2018/01/24 05:35:58 riastradh Exp $ */ /* * Copyright (c) 1995, 1996 Carnegie-Mellon University. @@ -32,7 +32,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: bt485.c,v 1.17 2013/06/24 03:57:36 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: bt485.c,v 1.18 2018/01/24 05:35:58 riastradh Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -330,7 +330,7 @@ bt485_set_cursor(struct ramdac_cookie *r */ if (v & WSDISPLAY_CURSOR_DOCMAP) { if (cursorp->cmap.index > 2 || - (cursorp->cmap.index + cursorp->cmap.count) > 2) + cursorp->cmap.count > 2 - cursorp->cmap.index) return (EINVAL); count = cursorp->cmap.count; index = cursorp->cmap.index; Index: src/sys/dev/ic/igsfb.c diff -u src/sys/dev/ic/igsfb.c:1.56 src/sys/dev/ic/igsfb.c:1.57 --- src/sys/dev/ic/igsfb.c:1.56 Wed Jan 25 17:31:55 2017 +++ src/sys/dev/ic/igsfb.c Wed Jan 24 05:35:58 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: igsfb.c,v 1.56 2017/01/25 17:31:55 jakllsch Exp $ */ +/* $NetBSD: igsfb.c,v 1.57 2018/01/24 05:35:58 riastradh Exp $ */ /* * Copyright (c) 2002, 2003 Valeriy E. Ushakov @@ -31,7 +31,7 @@ * Integraphics Systems IGA 168x and CyberPro series. */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: igsfb.c,v 1.56 2017/01/25 17:31:55 jakllsch Exp $"); +__KERNEL_RCSID(0, "$NetBSD: igsfb.c,v 1.57 2018/01/24 05:35:58 riastradh Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -812,9 +812,10 @@ igsfb_update_cmap(struct igsfb_devconfig if (index >= IGS_CMAP_SIZE) return; - last = index + count; - if (last > IGS_CMAP_SIZE) + if (count > IGS_CMAP_SIZE - index) last = IGS_CMAP_SIZE; + else + last = index + count; t = dc->dc_iot; h = dc->dc_ioh; Index: src/sys/dev/pci/radeonfb.c diff -u src/sys/dev/pci/radeonfb.c:1.93 src/sys/dev/pci/radeonfb.c:1.94 --- src/sys/dev/pci/radeonfb.c:1.93 Wed Oct 11 17:08:32 2017 +++ src/sys/dev/pci/radeonfb.c Wed Jan 24 05:35:58 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: radeonfb.c,v 1.93 2017/10/11 17:08:32 macallan Exp $ */ +/* $NetBSD: radeonfb.c,v 1.94 2018/01/24 05:35:58 riastradh Exp $ */ /*- * Copyright (c) 2006 Itronix Inc. @@ -70,7 +70,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: radeonfb.c,v 1.93 2017/10/11 17:08:32 macallan Exp $"); +__KERNEL_RCSID(0, "$NetBSD: radeonfb.c,v 1.94 2018/01/24 05:35:58 riastradh Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -2756,8 +2756,7 @@ radeonfb_putcmap(struct radeonfb_display #ifdef GENFB_DEBUG aprint_debug("putcmap: %d %d\n",index, count); #endif - if (cm->index >= 256 || cm->count > 256 || - (cm->index + cm->count) > 256) + if (index >= 256 || count > 256 - index) return EINVAL; error = copyin(cm->red, &rbuf[index], count); if (error) @@ -2792,7 +2791,7 @@ radeonfb_getcmap(struct radeonfb_display u_int count = cm->count; int error; - if (index >= 255 || count > 256 || index + count > 256) + if (index >= 256 || count > 256 - index) return EINVAL; error = copyout(&dp->rd_cmap_red[index], cm->red, count); @@ -3605,8 +3604,8 @@ radeonfb_set_cursor(struct radeonfb_disp if (flags & WSDISPLAY_CURSOR_DOCMAP) { index = wc->cmap.index; count = wc->cmap.count; - - if (index >= 2 || (index + count) > 2) + + if (index >= 2 || count > 2 - index) return EINVAL; err = copyin(wc->cmap.red, &r[index], count); Index: src/sys/dev/sbus/tcx.c diff -u src/sys/dev/sbus/tcx.c:1.57 src/sys/dev/sbus/tcx.c:1.58 --- src/sys/dev/sbus/tcx.c:1.57 Fri Sep 23 17:45:25 2016 +++ src/sys/dev/sbus/tcx.c Wed Jan 24 05:35:58 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: tcx.c,v 1.57 2016/09/23 17:45:25 macallan Exp $ */ +/* $NetBSD: tcx.c,v 1.58 2018/01/24 05:35:58 riastradh Exp $ */ /* * Copyright (c) 1996, 1998, 2009 The NetBSD Foundation, Inc. @@ -38,7 +38,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: tcx.c,v 1.57 2016/09/23 17:45:25 macallan Exp $"); +__KERNEL_RCSID(0, "$NetBSD: tcx.c,v 1.58 2018/01/24 05:35:58 riastradh Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -474,6 +474,8 @@ tcxioctl(dev_t dev, u_long cmd, void *da case FBIOGETCMAP: #define p ((struct fbcmap *)data) + if (p->index > 256 || p->count > 256 - p->index) + return EINVAL; if (copyout(&sc->sc_cmap_red[p->index], p->red, p->count) != 0) return EINVAL; if (copyout(&sc->sc_cmap_green[p->index], p->green, p->count) @@ -486,6 +488,8 @@ tcxioctl(dev_t dev, u_long cmd, void *da case FBIOPUTCMAP: /* copy to software map */ + if (p->index > 256 || p->count > 256 - p->index) + return EINVAL; if (copyin(p->red, &sc->sc_cmap_red[p->index], p->count) != 0) return EINVAL; if (copyin(p->green, &sc->sc_cmap_green[p->index], p->count) Index: src/sys/dev/tc/cfb.c diff -u src/sys/dev/tc/cfb.c:1.61 src/sys/dev/tc/cfb.c:1.62 --- src/sys/dev/tc/cfb.c:1.61 Wed Jan 11 21:12:36 2012 +++ src/sys/dev/tc/cfb.c Wed Jan 24 05:35:58 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: cfb.c,v 1.61 2012/01/11 21:12:36 macallan Exp $ */ +/* $NetBSD: cfb.c,v 1.62 2018/01/24 05:35:58 riastradh Exp $ */ /*- * Copyright (c) 1998, 1999 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: cfb.c,v 1.61 2012/01/11 21:12:36 macallan Exp $"); +__KERNEL_RCSID(0, "$NetBSD: cfb.c,v 1.62 2018/01/24 05:35:58 riastradh Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -719,7 +719,7 @@ set_cursor(struct cfb_softc *sc, struct if (v & WSDISPLAY_CURSOR_DOCMAP) { index = p->cmap.index; count = p->cmap.count; - if (index >= 2 || (index + count) > 2) + if (index >= 2 || count > 2 - index) return (EINVAL); error = copyin(p->cmap.red, &r[index], count); if (error) Index: src/sys/dev/tc/tfb.c diff -u src/sys/dev/tc/tfb.c:1.61 src/sys/dev/tc/tfb.c:1.62 --- src/sys/dev/tc/tfb.c:1.61 Wed Jan 11 21:12:36 2012 +++ src/sys/dev/tc/tfb.c Wed Jan 24 05:35:58 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: tfb.c,v 1.61 2012/01/11 21:12:36 macallan Exp $ */ +/* $NetBSD: tfb.c,v 1.62 2018/01/24 05:35:58 riastradh Exp $ */ /*- * Copyright (c) 1998, 1999 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: tfb.c,v 1.61 2012/01/11 21:12:36 macallan Exp $"); +__KERNEL_RCSID(0, "$NetBSD: tfb.c,v 1.62 2018/01/24 05:35:58 riastradh Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -777,7 +777,7 @@ set_cursor(struct tfb_softc *sc, struct if (v & WSDISPLAY_CURSOR_DOCMAP) { index = p->cmap.index; count = p->cmap.count; - if (index >= 2 || (index + count) > 2) + if (index >= 2 || count > 2 - index) return (EINVAL); error = copyin(p->cmap.red, &r[index], count); if (error) Index: src/sys/dev/tc/mfb.c diff -u src/sys/dev/tc/mfb.c:1.59 src/sys/dev/tc/mfb.c:1.60 --- src/sys/dev/tc/mfb.c:1.59 Mon Nov 4 16:53:09 2013 +++ src/sys/dev/tc/mfb.c Wed Jan 24 05:35:58 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: mfb.c,v 1.59 2013/11/04 16:53:09 christos Exp $ */ +/* $NetBSD: mfb.c,v 1.60 2018/01/24 05:35:58 riastradh Exp $ */ /*- * Copyright (c) 1998, 1999 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: mfb.c,v 1.59 2013/11/04 16:53:09 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: mfb.c,v 1.60 2018/01/24 05:35:58 riastradh Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -617,7 +617,7 @@ set_cursor(struct mfb_softc *sc, struct if (v & WSDISPLAY_CURSOR_DOCMAP) { index = p->cmap.index; count = p->cmap.count; - if (index >= 2 || (index + count) > 2) + if (index >= 2 || count > 2 - index) return (EINVAL); error = copyin(p->cmap.red, &color[index], count); if (error) Index: src/sys/dev/tc/sfb.c diff -u src/sys/dev/tc/sfb.c:1.84 src/sys/dev/tc/sfb.c:1.85 --- src/sys/dev/tc/sfb.c:1.84 Wed Jan 11 21:12:36 2012 +++ src/sys/dev/tc/sfb.c Wed Jan 24 05:35:58 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: sfb.c,v 1.84 2012/01/11 21:12:36 macallan Exp $ */ +/* $NetBSD: sfb.c,v 1.85 2018/01/24 05:35:58 riastradh Exp $ */ /*- * Copyright (c) 1998, 1999 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: sfb.c,v 1.84 2012/01/11 21:12:36 macallan Exp $"); +__KERNEL_RCSID(0, "$NetBSD: sfb.c,v 1.85 2018/01/24 05:35:58 riastradh Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -773,7 +773,7 @@ set_cursor(struct sfb_softc *sc, struct if (v & WSDISPLAY_CURSOR_DOCMAP) { index = p->cmap.index; count = p->cmap.count; - if (index >= 2 || (index + count) > 2) + if (index >= 2 || count > 2 - index) return (EINVAL); error = copyin(p->cmap.red, &r[index], count); if (error) Index: src/sys/dev/tc/sfbplus.c diff -u src/sys/dev/tc/sfbplus.c:1.37 src/sys/dev/tc/sfbplus.c:1.38 --- src/sys/dev/tc/sfbplus.c:1.37 Wed Jan 11 21:12:36 2012 +++ src/sys/dev/tc/sfbplus.c Wed Jan 24 05:35:58 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: sfbplus.c,v 1.37 2012/01/11 21:12:36 macallan Exp $ */ +/* $NetBSD: sfbplus.c,v 1.38 2018/01/24 05:35:58 riastradh Exp $ */ /*- * Copyright (c) 1999, 2000, 2001 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: sfbplus.c,v 1.37 2012/01/11 21:12:36 macallan Exp $"); +__KERNEL_RCSID(0, "$NetBSD: sfbplus.c,v 1.38 2018/01/24 05:35:58 riastradh Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -757,7 +757,7 @@ set_cursor(struct sfbp_softc *sc, struct if (v & WSDISPLAY_CURSOR_DOCMAP) { index = p->cmap.index; count = p->cmap.count; - if (index >= 2 || (index + count) > 2) + if (index >= 2 || count > 2 - index) return (EINVAL); error = copyin(p->cmap.red, &r[index], count); if (error) Index: src/sys/dev/tc/stic.c diff -u src/sys/dev/tc/stic.c:1.51 src/sys/dev/tc/stic.c:1.52 --- src/sys/dev/tc/stic.c:1.51 Fri Jul 25 08:10:39 2014 +++ src/sys/dev/tc/stic.c Wed Jan 24 05:35:58 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: stic.c,v 1.51 2014/07/25 08:10:39 dholland Exp $ */ +/* $NetBSD: stic.c,v 1.52 2018/01/24 05:35:58 riastradh Exp $ */ /*- * Copyright (c) 1999, 2000, 2001 The NetBSD Foundation, Inc. @@ -36,7 +36,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: stic.c,v 1.51 2014/07/25 08:10:39 dholland Exp $"); +__KERNEL_RCSID(0, "$NetBSD: stic.c,v 1.52 2018/01/24 05:35:58 riastradh Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -1305,7 +1305,7 @@ stic_set_cursor(struct stic_info *si, st if ((v & WSDISPLAY_CURSOR_DOCMAP) != 0) { index = p->cmap.index; count = p->cmap.count; - if (index >= 2 || (index + count) > 2) + if (index >= 2 || count > 2 - index) return (EINVAL); error = copyin(p->cmap.red, &r[index], count); if (error) Index: src/sys/dev/tc/xcfb.c diff -u src/sys/dev/tc/xcfb.c:1.55 src/sys/dev/tc/xcfb.c:1.56 --- src/sys/dev/tc/xcfb.c:1.55 Wed Jan 11 21:12:37 2012 +++ src/sys/dev/tc/xcfb.c Wed Jan 24 05:35:58 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: xcfb.c,v 1.55 2012/01/11 21:12:37 macallan Exp $ */ +/* $NetBSD: xcfb.c,v 1.56 2018/01/24 05:35:58 riastradh Exp $ */ /*- * Copyright (c) 1998, 1999 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: xcfb.c,v 1.55 2012/01/11 21:12:37 macallan Exp $"); +__KERNEL_RCSID(0, "$NetBSD: xcfb.c,v 1.56 2018/01/24 05:35:58 riastradh Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -595,7 +595,7 @@ set_cursor(struct xcfb_softc *sc, struct index = p->cmap.index; count = p->cmap.count; - if (index >= 2 || index + count > 2) + if (index >= 2 || count > 2 - index) return (EINVAL); error = copyin(p->cmap.red, &r[index], count); if (error)