}
try {
- decode_json_obj(out, &parser);
+ decode_json_obj(out, &parser);
} catch (JSONDecoder::err& e) {
- return -EINVAL;
+ free(data);
+ return -EINVAL;
}
*pdata = data;
{
#define GET_BUCKET_VERSIONING_BUF_MAX (128 * 1024)
- char *data;
+ char *data = nullptr;
int len = 0;
int r =
rgw_rest_read_all_input(s, &data, &len, GET_BUCKET_VERSIONING_BUF_MAX);
if (r < 0) {
return r;
}
+
+ auto data_deleter = std::unique_ptr<char, decltype(free)*>{data, free};
if (s->aws4_auth_needs_complete) {
int ret_auth = do_aws4_auth_completion();
if (!parser.init()) {
ldout(s->cct, 0) << "ERROR: failed to initialize parser" << dendl;
r = -EIO;
- goto done;
+ return r;
}
if (!parser.parse(data, len, 1)) {
ldout(s->cct, 10) << "failed to parse data: " << data << dendl;
r = -EINVAL;
- goto done;
+ return r;
}
r = parser.get_versioning_status(&enable_versioning);
-
-done:
- free(data);
-
+
return r;
}
{
static constexpr uint32_t GET_BUCKET_WEBSITE_BUF_MAX = (128 * 1024);
- char *data;
+ char *data = nullptr;
int len = 0;
int r = rgw_rest_read_all_input(s, &data, &len, GET_BUCKET_WEBSITE_BUF_MAX);
if (r < 0) {
return r;
}
+ auto data_deleter = std::unique_ptr<char, decltype(free)*>{data, free};
+
if (s->aws4_auth_needs_complete) {
int ret_auth = do_aws4_auth_completion();
if (ret_auth < 0) {