]> xenbits.xensource.com Git - people/vhanquez/xen.git/commitdiff
bitmap_scnlistprintf() should always zero-terminate its output buffer
authorJan Beulich <jbeulich@suse.com>
Tue, 13 Sep 2011 09:42:07 +0000 (10:42 +0100)
committerJan Beulich <jbeulich@suse.com>
Tue, 13 Sep 2011 09:42:07 +0000 (10:42 +0100)
... as long as it has non-zero size. So far this would not happen if
the passed in CPU mask was empty.

Also fix the comment describing the return value to actually match
reality.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
xen-unstable changeset:   23820:ba75234a6f56
xen-unstable date:        Wed Sep 07 10:36:55 2011 +0100

xen/common/bitmap.c

index 363572bedb320b667f29d1197c4735947f672ae4..a34f5193590094b98f3e54c4248ff6d1d524e742 100644 (file)
@@ -363,9 +363,8 @@ static inline int bscnl_emit(char *buf, int buflen, int rbot, int rtop, int len)
  * the range.  Output format is compatible with the format
  * accepted as input by bitmap_parselist().
  *
- * The return value is the number of characters which would be
- * generated for the given input, excluding the trailing '\0', as
- * per ISO C99.
+ * The return value is the number of characters which were output,
+ * excluding the trailing '\0'.
  */
 int bitmap_scnlistprintf(char *buf, unsigned int buflen,
        const unsigned long *maskp, int nmaskbits)
@@ -383,6 +382,8 @@ int bitmap_scnlistprintf(char *buf, unsigned int buflen,
                        rbot = cur;
                }
        }
+       if (!len && buflen)
+               *buf = 0;
        return len;
 }
 EXPORT_SYMBOL(bitmap_scnlistprintf);