]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
librbd/internal.cc: check earlier for null pointer
authorDanny Al-Gaaf <danny.al-gaaf@bisect.de>
Wed, 4 Jun 2014 21:22:18 +0000 (23:22 +0200)
committerJosh Durgin <josh.durgin@inktank.com>
Sat, 9 Aug 2014 22:49:10 +0000 (15:49 -0700)
Fix potential null ponter deref, move check for 'order != NULL'
to the beginning of the function to prevent a) deref in ldout() call
and b) to leave function as early as possible if check fails.

[src/librbd/internal.cc:843] -> [src/librbd/internal.cc:865]: (warning)
 Possible null pointer dereference: order - otherwise it is redundant
 to check it against null.

Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
(cherry picked from commit 3ee3e66a9520a5fcafa7d8c632586642f7bdbd29)

src/librbd/internal.cc

index 13aa1cf6bf3329e56e17b5fcfbc6acfb4da7f900..eb44c44a1c66685d5bfe87911932bc2b9ec515e5 100644 (file)
@@ -834,6 +834,9 @@ reprotect_and_return_err:
             bool old_format, uint64_t features, int *order,
             uint64_t stripe_unit, uint64_t stripe_count)
   {
+    if (!order)
+      return -EINVAL;
+
     CephContext *cct = (CephContext *)io_ctx.cct();
     ldout(cct, 20) << "create " << &io_ctx << " name = " << imgname
                   << " size = " << size << " old_format = " << old_format
@@ -859,9 +862,6 @@ reprotect_and_return_err:
       return -EEXIST;
     }
 
-    if (!order)
-      return -EINVAL;
-
     if (!*order)
       *order = cct->_conf->rbd_default_order;
     if (!*order)