From 74203b806e8c268aa3edac8cfc7c4b393f7b1f27 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 f6c3bb872a2ea..4f0772e9b646e 100644 --- a/src/os/FileStore.cc +++ b/src/os/FileStore.cc @@ -3780,6 +3780,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; @@ -3798,8 +3799,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.39.5