str: Always null-terminate string in str_format_26adic().
authorBen Pfaff <blp@cs.stanford.edu>
Sat, 23 Apr 2011 19:02:04 +0000 (12:02 -0700)
committerBen Pfaff <blp@cs.stanford.edu>
Tue, 26 Apr 2011 04:13:52 +0000 (21:13 -0700)
It seems like a good idea to always supply a null terminator, even on
error.

src/libpspp/str.c

index c630cf9ada761aa89b260197ca0718b1e9ff4344..7e722c17e6b92602798725e3bdd618327a46691f 100644 (file)
@@ -270,17 +270,22 @@ str_format_26adic (unsigned long int number, char buffer[], size_t size)
   while (number-- > 0)
     {
       if (length >= size)
-        return false;
+        goto overflow;
       buffer[length++] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"[number % 26];
       number /= 26;
     }
 
   if (length >= size)
-    return false;
+    goto overflow;
   buffer[length] = '\0';
 
   buf_reverse (buffer, length);
   return true;
+
+overflow:
+  if (length > 0)
+    buffer[0] = '\0';
+  return false;
 }
 
 /* Sets the SIZE bytes starting at BLOCK to C,