From a902bf027cb4fc24cced75ef34d701e1c0c4c191 Mon Sep 17 00:00:00 2001 From: Yehuda Sadeh Date: Wed, 12 May 2010 15:08:09 -0700 Subject: [PATCH] cmpxattr: null termination fixes --- src/osd/ReplicatedPG.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index 3c36fe86afd6..5af607256640 100644 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@ -950,7 +950,6 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops, // modify? bool is_modify; string cname, mname; -dout(0) << "osd_op.data.length=" << osd_op.data.length() << dendl; bufferlist::iterator bp = osd_op.data.begin(); switch (op.op) { case CEPH_OSD_OP_CALL: @@ -1106,6 +1105,7 @@ dout(0) << "osd_op.data.length=" << osd_op.data.length() << dendl; string aname; bp.copy(op.xattr.name_len, aname); string name = "_" + aname; + name[op.xattr.name_len + 1] = 0; bufferlist xattr; result = osd->store->getattr(coll_t::build_pg_coll(info.pgid), soid, name.c_str(), xattr); @@ -1117,6 +1117,7 @@ dout(0) << "osd_op.data.length=" << osd_op.data.length() << dendl; { string val; bp.copy(op.xattr.value_len, val); + val[op.xattr.value_len] = 0; dout(10) << "CEPH_OSD_OP_CMPXATTR name=" << name << " val=" << val << " op=" << (int)op.xattr.cmp_op << " mode=" << (int)op.xattr.cmp_mode << dendl; result = do_xattr_cmp_str(op.xattr.cmp_op, val, xattr); -- 2.47.3