usb/80773: "usbd_get_string()" could have taken a length parameter
Hans Petter Selasky
hselasky at c2i.net
Sun May 8 06:50:02 PDT 2005
>Number: 80773
>Category: usb
>Synopsis: "usbd_get_string()" could have taken a length parameter
>Confidential: no
>Severity: critical
>Priority: medium
>Responsible: freebsd-usb
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Sun May 08 13:50:01 GMT 2005
>Closed-Date:
>Last-Modified:
>Originator: HPS
>Release: FreeBSD 6.0-CURRENT i386
>Organization:
>Environment:
System: FreeBSD 6.0-CURRENT FreeBSD 6.0-CURRENT #45: Mon Mar 21 15:40:17 CET
2005 root@:/usr/obj/usr/src/sys/custom i386
>Description:
>How-To-Repeat:
>Fix:
example + extra comments:
/* Use "usbd_get_string_any()" instead of
* "usbd_get_string_desc()", when the language id is not known. The
* maximum length of the string, "len", includes the terminating zero.
* "usbd_get_string_any()" will always write a terminating zero to "buf",
* also on error.
*/
usbd_status
usbd_get_string(struct usbd_device *udev, int si, char *buf, int len)
{
...
if(len == 0)
{
return (USBD_NORMAL_COMPLETION);
}
buf[0] = 0;
/* subtract the terminating zero */
len--;
...
for(i = 0; (i < n) && len; i++, len--)
{
...
}
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-usb
mailing list