summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSage Weil <sage@inktank.com>2013-08-13 11:16:17 -0700
committerSage Weil <sage@inktank.com>2013-08-13 13:21:01 -0700
commit810c52de36719c3ee6cf2bdf59d5cde8840bbe55 (patch)
tree9affd05308a0f8510088ed0f7f01dfedc731557a
parente9d4f9b048d4fcb3a8aa427dbfafdb864f6d7372 (diff)
downloadceph-810c52de36719c3ee6cf2bdf59d5cde8840bbe55.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>
-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 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;
}