- Don't relay on bFormatIndex as an internal array index, since this
authormglocker <mglocker@openbsd.org>
Thu, 31 Jul 2008 15:26:25 +0000 (15:26 +0000)
committermglocker <mglocker@openbsd.org>
Thu, 31 Jul 2008 15:26:25 +0000 (15:26 +0000)
commit6e7dc0a31a0d7017826ac86307ec250d63552640
treef94ac1489ddc9c77c2ebda1c5b536c978467f60a
parent83aa46d28ca8c44227aeab8fe37c4bdc0b83d232
- Don't relay on bFormatIndex as an internal array index, since this
field is unreliable and can start with any number.  Use an own internal
array index instead.

- If the read buffer is too small, return a propper error to the calling
functions.  Just check the buffer size if we use the read(2) method since
it doesn't affect mmap(2).

Fixes kernel crashes seen with the M$ LifeCam NX-6000 and internal
(laptop) Sonix chipsets.

Tested by jcs@ (Sonix) and myself (NX-6000).

OK deraadt@
sys/dev/usb/uvideo.c
sys/dev/usb/uvideo.h
sys/dev/video.c
sys/dev/video_if.h