From 5d1e6ae408ee0d9e2972b3de9f81b6a95e86a0a3 Mon Sep 17 00:00:00 2001 From: xiexingguo <258156334@qq.com> Date: Mon, 26 Oct 2015 18:38:01 +0800 Subject: [PATCH] FileStore: potential memory leak if _fgetattrs fails Memory leak happens if _fgetattrs encounters some error and simply returns. Fixes: #13597 Signed-off-by: xie xingguo (cherry picked from commit ace7dd096b58a88e25ce16f011aed09269f2a2b4) --- src/os/FileStore.cc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/os/FileStore.cc b/src/os/FileStore.cc index 3e8bb29fcc4e..78e24a139257 100644 --- a/src/os/FileStore.cc +++ b/src/os/FileStore.cc @@ -3922,6 +3922,7 @@ int FileStore::_fgetattrs(int fd, map& aset) dout(10) << " -ERANGE, got " << len << dendl; if (len < 0) { assert(!m_filestore_fail_eio || len != -EIO); + delete[] names2; return len; } name = names2; @@ -3940,8 +3941,10 @@ int FileStore::_fgetattrs(int fd, map& 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; -- 2.47.3