]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: add RGWFormatter_Plain allocation to sidestep cranky strlen()
authorSage Weil <sage@inktank.com>
Tue, 2 Jul 2013 00:33:11 +0000 (17:33 -0700)
committerSage Weil <sage@inktank.com>
Tue, 2 Jul 2013 17:08:30 +0000 (10:08 -0700)
Valgrind complains about an invalid read when we don't pad the allocation,
and because it is inlined we can't whitelist it for valgrind.  Workaround
the warning by just padding our allocations a bit.

Fixes: #5346
Backport: cuttlefish
Signed-off-by: Sage Weil <sage@inktank.com>
(cherry picked from commit 49ff63b1750789070a8c6fef830c9526ae0f6d9f)

src/rgw/rgw_formats.cc

index 66704c4f5bb6fd9be7f57b79996959854bbbfa55..56fc7e7da0802575c9d8e9c4b0882950a1663134 100644 (file)
@@ -165,7 +165,7 @@ void RGWFormatter_Plain::write_data(const char *fmt, ...)
 {
 #define LARGE_ENOUGH_LEN 128
   int n, size = LARGE_ENOUGH_LEN;
-  char s[size];
+  char s[size + 8];
   char *p, *np;
   bool p_on_stack;
   va_list ap;
@@ -187,9 +187,9 @@ void RGWFormatter_Plain::write_data(const char *fmt, ...)
     else           /* glibc 2.0 */
       size *= 2;  /* twice the old size */
     if (p_on_stack)
-      np = (char *)malloc(size);
+      np = (char *)malloc(size + 8);
     else
-      np = (char *)realloc(p, size);
+      np = (char *)realloc(p, size + 8);
     if (!np)
       goto done_free;
     p = np;