summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDanny Al-Gaaf <danny.al-gaaf@bisect.de>2013-02-08 17:17:59 +0100
committerDanny Al-Gaaf <danny.al-gaaf@bisect.de>2013-02-10 10:05:06 +0100
commit89df090e04ef9fc5aae29122df106b0347786fab (patch)
treead3d0ba33cbb600a4b6f50b2c147daa02b658f9e
parentf0ba80756d1c3c313014ad7be18191981fb545be (diff)
downloadceph-89df090e04ef9fc5aae29122df106b0347786fab.tar.gz
rgw/rgw_rest.cc: fix 4K memory leak
Fix 4K memory leak in case RGWClientIO::read() fails in read_all_chunked_input(). Error from cppcheck was: Checking src/rgw/rgw_rest.cc... [src/rgw/rgw_rest.cc:688]: (error) Memory leak: data Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
-rw-r--r--src/rgw/rgw_rest.cc4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/rgw/rgw_rest.cc b/src/rgw/rgw_rest.cc
index 72aab14c522..ab3927e7a62 100644
--- a/src/rgw/rgw_rest.cc
+++ b/src/rgw/rgw_rest.cc
@@ -684,8 +684,10 @@ static int read_all_chunked_input(req_state *s, char **pdata, int *plen)
int read_len = 0, len = 0;
do {
int r = s->cio->read(data + len, need_to_read, &read_len);
- if (r < 0)
+ if (r < 0) {
+ free(data);
return r;
+ }
len += read_len;