Memory leak happens if _fgetattrs encounters some error and simply returns.
Fixes: #13597
Signed-off-by: xie xingguo <xie.xingguo@zte.com.cn>
(cherry picked from commit
ace7dd096b58a88e25ce16f011aed09269f2a2b4)
dout(10) << " -ERANGE, got " << len << dendl;
if (len < 0) {
assert(!m_filestore_fail_eio || len != -EIO);
+ delete[] names2;
return len;
}
name = names2;
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;