]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: fix cmpxattr string construction
authorSage Weil <sage@newdream.net>
Tue, 2 Aug 2011 20:54:00 +0000 (13:54 -0700)
committerSage Weil <sage@newdream.net>
Tue, 2 Aug 2011 21:20:36 +0000 (14:20 -0700)
The bufferlist may not contain a terminating '\0'.

Signed-off-by: Sage Weil <sage@newdream.net>
src/osd/ReplicatedPG.cc

index 91d4c79fdcbbd7fdfdb5e10143b1cf8705ff0d3e..383bd8bfd385f5d3912f91d8446e3b6a447c0c33 100644 (file)
@@ -1031,9 +1031,11 @@ int ReplicatedPG::do_xattr_cmp_str(int op, string& v1s, bufferlist& xattr)
 {
   const char *v1, *v2;
   v1 = v1s.data();
-  if (xattr.length())
-    v2 = xattr.c_str();
-  else
+  string v2s;
+  if (xattr.length()) {
+    v2s = string(xattr.c_str(), xattr.length());
+    v2 = v2s.c_str();
+  } else
     v2 = "";
 
   dout(20) << "do_xattr_cmp_str '" << v1s << "' vs '" << v2 << "' op " << op << dendl;