]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
kv/KeyValueDB: return const char* from MergeOperator::name() 23566/head
authorSage Weil <sage@redhat.com>
Tue, 7 Aug 2018 22:02:56 +0000 (17:02 -0500)
committerPrashant D <pdhange@redhat.com>
Tue, 14 Aug 2018 03:43:16 +0000 (23:43 -0400)
This avoids a c_str() on a temporary string later down the line, which
avoids a use-after-free.

Fixes: http://tracker.ceph.com/issues/26875
Signed-off-by: Sage Weil <sage@redhat.com>
(cherry picked from commit e9be5dabf256c18a5575d1394e481e4f21ece97d)

Conflicts:
src/kv/RocksDBStore.cc : Resolved for Name()

src/kv/KeyValueDB.h
src/os/bluestore/BitmapFreelistManager.cc
src/os/bluestore/BlueStore.cc
src/test/objectstore/test_kv.cc

index 818884a1a97edbf5dd6c11ab9978776903d0e934..905eec2db71c1543f79c466e190045e6e886a296 100644 (file)
@@ -337,7 +337,7 @@ public:
       const char *rdata, size_t rlen,
       std::string *new_value) = 0;
     /// We use each operator name and each prefix to construct the overall RocksDB operator name for consistency check at open time.
-    virtual string name() const = 0;
+    virtual const char *name() const = 0;
 
     virtual ~MergeOperator() {}
   };
index 575d3a4becacf874ce8bdef23149073d5a0dbf2c..ce0f9158ab841202767ce129a641ca7f3edf891e 100644 (file)
@@ -35,7 +35,7 @@ struct XorMergeOperator : public KeyValueDB::MergeOperator {
   }
   // We use each operator name and each prefix to construct the
   // overall RocksDB operator name for consistency check at open time.
-  string name() const override {
+  const char *name() const override {
     return "bitwise_xor";
   }
 };
index ec8942477dc931ddb756cf69feeba293f3ad680f..0298a42f9ef378a2e2d817ec894c4f322902e8ce 100644 (file)
@@ -555,7 +555,7 @@ struct Int64ArrayMergeOperator : public KeyValueDB::MergeOperator {
   }
   // We use each operator name and each prefix to construct the
   // overall RocksDB operator name for consistency check at open time.
-  string name() const override {
+  const char *name() const override {
     return "int64_array";
   }
 };
index 46a8a8be32d90625366e35f2a72b512467718419..8fb53eeee6920a61618e302ed7fdd66e5812e69e 100644 (file)
@@ -204,7 +204,7 @@ struct AppendMOP : public KeyValueDB::MergeOperator {
   }
   // We use each operator name and each prefix to construct the
   // overall RocksDB operator name for consistency check at open time.
-  string name() const override {
+  const char *name() const override {
     return "Append";
   }
 };