diff options
author | Sage Weil <sage@inktank.com> | 2013-08-13 11:16:17 -0700 |
---|---|---|
committer | Sage Weil <sage@inktank.com> | 2013-08-18 11:45:36 -0700 |
commit | 863df08a43dff99797453040eb1ef6071b0432f9 (patch) | |
tree | ceb4ad538efcfe97c77d074d877248959c5e1b0f | |
parent | 9ac003f793b6cc72059110aac44014ddf2372bee (diff) | |
download | ceph-863df08a43dff99797453040eb1ef6071b0432f9.tar.gz |
rgw: do not leak handler in get_handler() error path
If we fail to initialize, delete the handler.
Fixes (part of): #5949
Signed-off-by: Sage Weil <sage@inktank.com>
Reviewed-by: Yehuda Sadeh <yehuda@inktank.com>
(cherry picked from commit 810c52de36719c3ee6cf2bdf59d5cde8840bbe55)
-rw-r--r-- | src/rgw/rgw_rest.cc | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/rgw/rgw_rest.cc b/src/rgw/rgw_rest.cc index ee73bb94fa5..571e4869642 100644 --- a/src/rgw/rgw_rest.cc +++ b/src/rgw/rgw_rest.cc @@ -1233,8 +1233,10 @@ RGWHandler *RGWREST::get_handler(RGWRados *store, struct req_state *s, RGWClient return NULL; } *init_error = handler->init(store, s, cio); - if (*init_error < 0) + if (*init_error < 0) { + m->put_handler(handler); return NULL; + } return handler; } |