]> git.karo-electronics.de Git - karo-tx-linux.git/commit
lib/vsprintf.c: fix potential NULL deref in hex_string
authorRasmus Villemoes <linux@rasmusvillemoes.dk>
Tue, 7 Apr 2015 23:44:55 +0000 (09:44 +1000)
committerStephen Rothwell <sfr@canb.auug.org.au>
Tue, 7 Apr 2015 23:44:55 +0000 (09:44 +1000)
commitac829e719320765e775a100618bb025b8320aeef
tree52255bccb389d80f8696ad7a6d7c53d860aad51e
parent591861e4689c4cf6b9312632d47ed72a72aced72
lib/vsprintf.c: fix potential NULL deref in hex_string

The helper hex_string() is broken in two ways.  First, it doesn't
increment buf regardless of whether there is room to print, so callers
such as kasprintf() that try to probe the correct storage to allocate will
get a too small return value.  But even worse, kasprintf() (and likely
anyone else trying to find the size of the result) pass NULL for buf and 0
for size, so we also have end == NULL.  But this means that the end-1 in
hex_string() is (char*)-1, so buf < end-1 is true and we get a NULL
pointer deref.  I double-checked this with a trivial kernel module that
just did a kasprintf(GFP_KERNEL, "%14ph", "CrashBoomBang").

Nobody seems to be using %ph with kasprintf, but we might as well fix it
before it hits someone.

Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
Acked-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
lib/vsprintf.c