]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
os/kstore: fix onode_t attr leak in _setattrs()
authorJianjian Huo <samuel.huo@gmail.com>
Wed, 17 Feb 2016 16:24:25 +0000 (08:24 -0800)
committerJianjian Huo <samuel.huo@gmail.com>
Wed, 17 Feb 2016 16:24:25 +0000 (08:24 -0800)
Signed-off-by: Jianjian Huo <samuel.huo@gmail.com>
src/os/kstore/KStore.cc

index 20e0ac0d3a693903d4cad55cf72e0fc2f2494986..9628c64d50ec326d900019161aead9a5200e47fc 100644 (file)
@@ -3125,8 +3125,12 @@ int KStore::_setattrs(TransContext *txc,
           << dendl;
   int r = 0;
   for (map<string,bufferptr>::const_iterator p = aset.begin();
-       p != aset.end(); ++p)
-    o->onode.attrs[p->first] = p->second;
+       p != aset.end(); ++p) {
+    if (p->second.is_partial())
+      o->onode.attrs[p->first] = bufferptr(p->second.c_str(), p->second.length());
+    else
+      o->onode.attrs[p->first] = p->second;
+  }
   txc->write_onode(o);
   dout(10) << __func__ << " " << c->cid << " " << o->oid
           << " " << aset.size() << " keys"