NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
kern/38112: questionable code in sys/dev/usb/usb_port.h
>Number: 38112
>Category: kern
>Synopsis: questionable code in sys/dev/usb/usb_port.h
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: kern-bug-people
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Wed Feb 27 18:55:00 +0000 2008
>Originator: FUKUMOTO Atsushi
>Release: NetBSD 4.0_STABLE
>Organization:
>Environment:
System: NetBSD kestrel 4.0_STABLE NetBSD 4.0_STABLE (Kestrel) #15: Tue Feb 19
03:07:05 JST 2008
fukumoto@kestrel:/usr/src.netbsd4/sys/arch/i386/compile/Kestrel i386
Architecture: i386
Machine: i386
>Description:
While trying to modify a USB device driver, I noticed a
questionable code in sys/dev/usb/usb_port.h.
#define UCOMBUSCF_PORTNO -1
Only reference to UCOMBUSCF_PORTNO is in ucomsubmatch():
cf->cf_loc[UCOMBUSCF_PORTNO] != UCOMBUSCF_PORTNO_DEFAULT &&
cf->cf_loc[UCOMBUSCF_PORTNO] != uca->portno)
which means it is accessing cf->cf_loc[-1], which looks wrong
to me.
The definition is imported from OpenBSD on 2000/11/10, and the
line is changed in OpenBSD sys/dev/usb/usb_port.h rev.1.49
(May 26 2004) to 0. I haven't looked further but I guess
there may be other fixes yet to be imported to NetBSD.
>How-To-Repeat:
>Fix:
Index: usb_port.h
===================================================================
RCS file: /cvsroot/src/sys/dev/usb/usb_port.h,v
retrieving revision 1.73
diff -u -u -r1.73 usb_port.h
--- usb_port.h 16 Nov 2006 01:33:27 -0000 1.73
+++ usb_port.h 27 Feb 2008 18:38:44 -0000
@@ -229,7 +229,7 @@
typedef struct proc *usb_proc_ptr;
-#define UCOMBUSCF_PORTNO -1
+#define UCOMBUSCF_PORTNO 0
#define UCOMBUSCF_PORTNO_DEFAULT -1
#define XS_STS_DONE ITSDONE
>Unformatted:
Home |
Main Index |
Thread Index |
Old Index