diff options
author | Vijay Bellur <vbellur@redhat.com> | 2019-02-27 13:38:33 -0800 |
---|---|---|
committer | hari gowtham <hari.gowtham005@gmail.com> | 2019-07-16 04:55:17 +0000 |
commit | 2d36dea60d079092cb9af0e9be1eb7954a4e32ee (patch) | |
tree | be1bc19191f6cc59def0d6b1e36d7d0e63baea86 /xlators/mgmt/glusterd/src/glusterd-handler.c | |
parent | 0bd67afd2bf0cba6c18e2b635af5f45ef4c0a852 (diff) |
mgmt/glusterd: Fix a memory leak when peer detach fails
Dictionary object is not being unref'd when an error happens
in __glusterd_handle_cli_deprobe(). This patch addresses that problem.
Change-Id: I11e1f92d06dc9edd1260845256f435ea31ef1a87
fixes: bz#1683815
Signed-off-by: Vijay Bellur <vbellur@redhat.com>
(cherry picked from commit 16b4936696c8b602243513fbde0b20a1e8417432)
Diffstat (limited to 'xlators/mgmt/glusterd/src/glusterd-handler.c')
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-handler.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-handler.c b/xlators/mgmt/glusterd/src/glusterd-handler.c index f754b52e6fe..e1ba98dd452 100644 --- a/xlators/mgmt/glusterd/src/glusterd-handler.c +++ b/xlators/mgmt/glusterd/src/glusterd-handler.c @@ -1337,6 +1337,7 @@ __glusterd_handle_cli_deprobe(rpcsvc_request_t *req) glusterd_volinfo_t *tmp = NULL; glusterd_snap_t *snapinfo = NULL; glusterd_snap_t *tmpsnap = NULL; + gf_boolean_t need_free = _gf_false; this = THIS; GF_ASSERT(this); @@ -1357,6 +1358,13 @@ __glusterd_handle_cli_deprobe(rpcsvc_request_t *req) if (cli_req.dict.dict_len) { dict = dict_new(); + if (dict) { + need_free = _gf_true; + } else { + ret = -1; + goto out; + } + ret = dict_unserialize(cli_req.dict.dict_val, cli_req.dict.dict_len, &dict); if (ret < 0) { @@ -1452,12 +1460,17 @@ __glusterd_handle_cli_deprobe(rpcsvc_request_t *req) &op_errno); } + need_free = _gf_false; + out: free(cli_req.dict.dict_val); if (ret) { ret = glusterd_xfer_cli_deprobe_resp(req, ret, op_errno, NULL, hostname, dict); + if (need_free) { + dict_unref(dict); + } } glusterd_friend_sm(); |