Module Name:    src
Committed By:   christos
Date:           Tue Feb 24 12:57:58 UTC 2015

Modified Files:
        src/sys/dev/pci: if_iwm.c

Log Message:
Work around Coverity CIDs 127102{0,1}: Confused by the comparison
nrates > __arraycount(lq->rs_table), coverity erroneously binds nrates
to the range [0..16), whereas it is really bound to [0..15) by
ni->ni_rates.rs_nrates (IEEE80211_RATE_MAXSIZE). We add an explicit comparison
to unconfuse it that will always succeed.


To generate a diff of this commit:
cvs rdiff -u -r1.13 -r1.14 src/sys/dev/pci/if_iwm.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/dev/pci/if_iwm.c
diff -u src/sys/dev/pci/if_iwm.c:1.13 src/sys/dev/pci/if_iwm.c:1.14
--- src/sys/dev/pci/if_iwm.c:1.13	Mon Feb 23 21:26:15 2015
+++ src/sys/dev/pci/if_iwm.c	Tue Feb 24 07:57:58 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_iwm.c,v 1.13 2015/02/24 02:26:15 nonaka Exp $	*/
+/*	$NetBSD: if_iwm.c,v 1.14 2015/02/24 12:57:58 christos Exp $	*/
 /*	OpenBSD: if_iwm.c,v 1.18 2015/02/11 01:12:42 brad Exp	*/
 
 /*
@@ -105,7 +105,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_iwm.c,v 1.13 2015/02/24 02:26:15 nonaka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_iwm.c,v 1.14 2015/02/24 12:57:58 christos Exp $");
 
 #include <sys/param.h>
 #include <sys/conf.h>
@@ -5329,7 +5329,8 @@ iwm_setrates(struct iwm_node *in)
 	int i, ridx, tab = 0;
 	int txant = 0;
 
-	if (nrates > __arraycount(lq->rs_table)) {
+	if (nrates > __arraycount(lq->rs_table) ||
+	    nrates > IEEE80211_RATE_MAXSIZE) {
 		DPRINTF(("%s: node supports %d rates, driver handles only "
 		    "%zu\n", DEVNAME(sc), nrates, __arraycount(lq->rs_table)));
 		return;

Reply via email to