]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: MonitorStore: check mkdir return value for errors
authorJoao Eduardo Luis <joao.luis@inktank.com>
Wed, 17 Oct 2012 16:12:59 +0000 (17:12 +0100)
committerJoao Eduardo Luis <joao.luis@inktank.com>
Wed, 17 Oct 2012 16:47:55 +0000 (17:47 +0100)
CID 728081: Unchecked return value (CHECKED_RETURN)
At (5): Calling function "mkdir(dfn, 493U)" without checking return value.
CID 716853: Unchecked return value (CHECKED_RETURN)
At (2): Calling function "mkdir(fn, 493U)" without checking return value.
CID 716855: Unchecked return value (CHECKED_RETURN)
At (2): Calling function "mkdir(fn, 493U)" without checking return value.

Signed-off-by: Joao Eduardo Luis <joao.luis@inktank.com>
src/mon/MonitorStore.cc

index 2855a4e1f32d377a0baaba114a766f9298a83605..2f14c2ef390bdc0f25d85662910c401fee7d08d3 100644 (file)
@@ -164,7 +164,13 @@ void MonitorStore::put_int(version_t val, const char *a, const char *b)
   char fn[1024];
   snprintf(fn, sizeof(fn), "%s/%s", dir.c_str(), a);
   if (b) {
-    ::mkdir(fn, 0755);
+    int r = ::mkdir(fn, 0755);
+    if (r < 0) {
+      int err = -errno;
+      derr << __func__ << " failed to create dir " << fn << ": "
+          << cpp_strerror(err) << dendl;
+      ceph_abort();
+    }
     dout(15) << "set_int " << a << "/" << b << " = " << val << dendl;
     snprintf(fn, sizeof(fn), "%s/%s/%s", dir.c_str(), a, b);
   } else {
@@ -321,10 +327,17 @@ int MonitorStore::get_bl_ss(bufferlist& bl, const char *a, const char *b)
 
 int MonitorStore::write_bl_ss_impl(bufferlist& bl, const char *a, const char *b, bool append)
 {
+  int err = 0;
   char fn[1024];
   snprintf(fn, sizeof(fn), "%s/%s", dir.c_str(), a);
   if (b) {
-    ::mkdir(fn, 0755);
+    int r = ::mkdir(fn, 0755);
+    if (r < 0) {
+      err = -errno;
+      derr << __func__ << " failed to create dir " << fn
+          << ": " << cpp_strerror(err) << dendl;
+      return err;
+    }
     dout(15) << "put_bl " << a << "/" << b << " = " << bl.length() << " bytes" << dendl;
     snprintf(fn, sizeof(fn), "%s/%s/%s", dir.c_str(), a, b);
   } else {
@@ -332,7 +345,6 @@ int MonitorStore::write_bl_ss_impl(bufferlist& bl, const char *a, const char *b,
   }
   
   char tfn[1024];
-  int err = 0;
   int fd;
   if (append) {
     fd = ::open(fn, O_WRONLY|O_CREAT|O_APPEND, 0600);
@@ -401,7 +413,13 @@ int MonitorStore::put_bl_sn_map(const char *a,
   // make sure dir exists
   char dfn[1024];
   snprintf(dfn, sizeof(dfn), "%s/%s", dir.c_str(), a);
-  ::mkdir(dfn, 0755);
+  int r = ::mkdir(dfn, 0755);
+  if (r < 0) {
+    int err = -errno;
+    derr << __func__ << " failed to create dir " << dfn << ": "
+        << cpp_strerror(err) << dendl;
+    return err;
+  }
 
   for (map<version_t,bufferlist>::iterator p = start; p != end; ++p) {
     char tfn[1024], fn[1024];