]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
FileStore: potential memory leak if _fgetattrs fails 6377/head
authorxiexingguo <258156334@qq.com>
Mon, 26 Oct 2015 10:38:01 +0000 (18:38 +0800)
committerxiexingguo <258156334@qq.com>
Mon, 26 Oct 2015 23:29:35 +0000 (07:29 +0800)
Memory leak happens if _fgetattrs encounters some error and simply returns.
Fixes: #13597
Signed-off-by: xie xingguo <xie.xingguo@zte.com.cn>
src/os/FileStore.cc

index 5f175444619372dcfce06ebe3732a1540b53a9da..5b06da5f9bac7d0f6092dfe33b3f85dbf68dbc26 100644 (file)
@@ -3903,6 +3903,7 @@ int FileStore::_fgetattrs(int fd, map<string,bufferptr>& aset)
     dout(10) << " -ERANGE, got " << len << dendl;
     if (len < 0) {
       assert(!m_filestore_fail_eio || len != -EIO);
+      delete[] names2;
       return len;
     }
     name = names2;
@@ -3921,8 +3922,10 @@ int FileStore::_fgetattrs(int fd, map<string,bufferptr>& aset)
       if (*name) {
         dout(20) << "fgetattrs " << fd << " getting '" << name << "'" << dendl;
         int r = _fgetattr(fd, attrname, aset[name]);
-        if (r < 0)
+        if (r < 0) {
+         delete[] names2;
          return r;
+        }
       }
     }
     name += strlen(name) + 1;