summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSage Weil <sage@inktank.com>2013-05-09 09:42:27 -0700
committerSage Weil <sage@inktank.com>2013-05-09 10:49:00 -0700
commit72b5629a7ce808bd26685684a9e266ba6d5a7cc8 (patch)
tree27ea558ccf8e0201ff46e1afca4cca88d6412271
parent2bc088307220d2ed0858009e189ebdae3364ddeb (diff)
downloadceph-72b5629a7ce808bd26685684a9e266ba6d5a7cc8.tar.gz
rbd: fix buffer leak in do_import
CID 1019580 (#2 of 2): Resource leak (RESOURCE_LEAK) 10. leaked_storage: Variable "p" going out of scope leaks the storage it points to. Signed-off-by: Sage Weil <sage@inktank.com>
-rw-r--r--src/rbd.cc5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/rbd.cc b/src/rbd.cc
index 044442eb33b..79860c2d772 100644
--- a/src/rbd.cc
+++ b/src/rbd.cc
@@ -1301,7 +1301,7 @@ static int do_import(librbd::RBD &rbd, librados::IoCtx& io_ctx,
if (fd < 0) {
r = -errno;
cerr << "rbd: error opening " << path << std::endl;
- return r;
+ goto done2;
}
r = fstat(fd, &stat_buf);
@@ -1394,7 +1394,8 @@ static int do_import(librbd::RBD &rbd, librados::IoCtx& io_ctx,
pc.finish();
close(fd);
}
-
+ done2:
+ delete[] p;
return r;
}