Re: [PATCH] core: dev: don't call BUG() on bad input

From: Nicolas de Pesloüan
Date: Mon Feb 14 2011 - 08:01:54 EST


Le 14/02/2011 13:23, Vasiliy Kulikov a écrit :
Hi Nicolas,

Hi Vasiliy,

On Mon, Feb 14, 2011 at 13:16 +0100, Nicolas de Pesloüan wrote:
- BUG_ON(strlen(name)>= sizeof(dev->name));
+ if (strnlen(name, sizeof(dev->name))>= sizeof(dev->name)) {

Ehh... Space after ")" is needed :)

:-D

"size_t strnlen(const char *s, size_t maxlen) : The strnlen()
function returns strlen(s), if that is less than maxlen, or maxlen
if there is no '\0' character among the first maxlen characters
pointed to by s."

How can strnlen(name, sizeof(dev->name)) be greater than sizeof(dev->name)?

Shouldn't it be "if (strnlen(name, sizeof(dev->name)) == sizeof(dev->name))" instead?

Not a big deal, but MO it's better to guard from everything that
is not a good input by negating the check. strnlen()< sizeof() is OK,
strnlen()>= sizeof() is bad. Is "==" more preferable for net/ coding style?

Agreed, both cannot cause any troubles. == is supposed to be better from the API point of view, but >= is probably more readable.

Nicolas.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/