PERFORCE change 129580 for review

Alfred Perlstein alfred at freebsd.org
Mon Nov 26 23:56:51 PST 2007


* Hans Petter Selasky <hselasky at FreeBSD.org> [071126 12:25] wrote:
> http://perforce.freebsd.org/chv.cgi?CH=129580
> 
> Change 129580 by hselasky at hselasky_laptop001 on 2007/11/26 20:24:39
> 
> 	
> 	Bugfix.
> 
> Affected files ...
> 
> .. //depot/projects/usb/src/sys/dev/usb/ulpt.c#29 edit
> 
> Differences ...
> 
> ==== //depot/projects/usb/src/sys/dev/usb/ulpt.c#29 (text+ko) ====
> 
> @@ -707,7 +707,7 @@
>  	for (p = str - 1; p; p = strchr(p, ';')) {
>  		p++;			/* skip ';' */
>  		if (strncmp(p, "MFG:", 4) == 0 ||
> -		    strncmp(p, "MANUFACTURER:", 14) == 0 ||
> +		    strncmp(p, "MANUFACTURER:", 13) == 0 ||
>  		    strncmp(p, "MDL:", 4) == 0 ||
>  		    strncmp(p, "MODEL:", 6) == 0) {
>  			q = strchr(p, ';');

This can be done with the following macro to avoid bugs:

/* used as so: CONSTSTRCMP(p, "MFG:") */
#define CONSTSTRCMP(str, cstr)	strncmp(str, cstr, sizeof(cstr))

(you may need a -1 after the sizeof, I forget at this hour.)

of course this fails, badly if one doesn't use a const string as
the second arg.

For non time critical code one could replace the sizeof() with
strlen().

-- 
- Alfred Perlstein


More information about the p4-projects mailing list