xen/vsprintf: Avoid returning NULL from number()
authorAndrew Cooper <andrew.cooper3@citrix.com>
Thu, 21 Apr 2016 13:47:12 +0000 (14:47 +0100)
committerAndrew Cooper <andrew.cooper3@citrix.com>
Thu, 9 Jun 2016 13:30:33 +0000 (14:30 +0100)
In practice this is an unused codepath, as every caller of number() passes an
explicit base of 8, 10 or 16.  For all other uses, number() returns a pointer
between the str and end parameters, as do the other similar helper functions.

However, the fact that there is a NULL return path causes Coverity to check
whether the caller makes NULL checks on the return value, and complain.

Change the conditional return into an ASSERT().

No functional change, but this removes 21 instances of NULL_RETURN in
Coverity.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <JBeulich@suse.com>
xen/common/vsprintf.c

index b050ea3776ec14793ce15fa6b5b2978d13081282..f92fb675e60862348c4cc28148d9015473e9e250 100644 (file)
@@ -153,11 +153,11 @@ static char *number(
     static const char large_digits[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
     int i;
 
+    ASSERT(base >= 2 && base <= 36);
+
     digits = (type & LARGE) ? large_digits : small_digits;
     if (type & LEFT)
         type &= ~ZEROPAD;
-    if (base < 2 || base > 36)
-        return NULL;
     c = (type & ZEROPAD) ? '0' : ' ';
     sign = 0;
     if (type & SIGN) {