]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw/rgw_metadata.cc: fix possible null dereferencing
authorDanny Al-Gaaf <danny.al-gaaf@bisect.de>
Wed, 24 Jul 2013 16:43:00 +0000 (18:43 +0200)
committerDanny Al-Gaaf <danny.al-gaaf@bisect.de>
Wed, 24 Jul 2013 16:43:00 +0000 (18:43 +0200)
CID 1054827 (#1 of 1): Dereference after null check (FORWARD_NULL)
  var_deref_model: Passing null pointer "objv_tracker->read_version"
  to function "obj_version::operator =(obj_version const &)", which
  dereferences it.

Moved affected 2 cases into the block checking for objv_tracker

Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
src/rgw/rgw_metadata.cc

index ac8c703f5e0567e7ea2beea5bd609e19cb188a19..e9094ad35d698e8570cfe7fd705d27dc8f6ee1f4 100644 (file)
@@ -505,15 +505,15 @@ int RGWMetadataManager::pre_modify(RGWMetadataHandler *handler, string& section,
   /* if write version has not been set, and there's a read version, set it so that we can
    * log it
    */
-  if (objv_tracker && objv_tracker->read_version.ver &&
-      !objv_tracker->write_version.ver) {
-    objv_tracker->write_version = objv_tracker->read_version;
-    objv_tracker->write_version.ver++;
+  if (objv_tracker) {
+    if (objv_tracker->read_version.ver && !objv_tracker->write_version.ver) {
+      objv_tracker->write_version = objv_tracker->read_version;
+      objv_tracker->write_version.ver++;
+    }
+    log_data.read_version = objv_tracker->read_version;
+    log_data.write_version = objv_tracker->write_version;
   }
 
-  log_data.read_version = objv_tracker->read_version;
-  log_data.write_version = objv_tracker->write_version;
-
   log_data.status = op_type;
 
   bufferlist logbl;