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-16 18:40:22 +0100
commitad6655e976916d3b62e0c91fd469eeb49fe7da3e (patch)
treef1306cc3ab0876cfadb2a9b60c203e79421ea2ba
parent3de692753c28ddbeb3c86b51466be16e94c9c458 (diff)
downloadceph-ad6655e976916d3b62e0c91fd469eeb49fe7da3e.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> (cherry picked from commit 89df090e04ef9fc5aae29122df106b0347786fab)
-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;