svn commit: r197195 - head/sys/dev/asmc

Bruce Evans brde at optusnet.com.au
Mon Sep 14 18:30:21 UTC 2009


On Mon, 14 Sep 2009, Rui Paulo wrote:

> Log:
>  Fix previous commit. I got it backwards.

It is still unfixed.

>  MFC after:	1 week
>
> Modified:
>  head/sys/dev/asmc/asmc.c
>
> Modified: head/sys/dev/asmc/asmc.c
> ==============================================================================
> --- head/sys/dev/asmc/asmc.c	Mon Sep 14 16:13:12 2009	(r197194)
> +++ head/sys/dev/asmc/asmc.c	Mon Sep 14 16:16:07 2009	(r197195)
> @@ -824,7 +824,7 @@ out:
> 		type[5] = 0;
> 		if (maxlen > sizeof(v)) {
> 			device_printf(dev, "WARNING: cropping maxlen "
> -			    "from %u to %u\n", maxlen, sizeof(v));
> +			    "from %u to %lu\n", maxlen, sizeof(v));
> 			maxlen = sizeof(v);
> 		}

This printf has the following errors:

Fatal printf format error: values of type size_t should be printed
using %zu, but here sizeof(v) is printed using %lu.  Printing it using
%u would be fatal on different systems.

Non-fatal printf format error: maxlen has type uint8_t, so its default
promotion is int, and this should be printed using %d like it was 2
commits ago.  %u will work since the value is representable using both
int and u_int, but this is not easy to see (in fact, I can't see it
in C99 -- I can only see where C99 requires va_arg(ap, u_int) to work
on a u_int).

Format-printf error (style bug).  The message is obfuscated using C90
string concatenation.

Fixed version:

 			device_printf(dev,
 			    "WARNING: cropping maxlen from %d to %zu\n",
 			    maxlen, sizeof(v));

Bruce


More information about the svn-src-all mailing list