int read_acls(struct req_state *s, RGWAccessControlPolicy *policy, string& bucket, string& object)
{
- string upload_id = s->args.get("uploadId");
+ string upload_id;
+ url_decode(s->args.get("uploadId"), upload_id);
string oid = object;
rgw_obj obj;
string no_ns;
url_decode(s->args.get("prefix"), prefix);
- marker = s->args.get("marker");
- max_keys = s->args.get(limit_opt_name);
+ url_decode(s->args.get("marker"), marker);
+ url_decode(s->args.get(limit_opt_name), max_keys);
if (!max_keys.empty()) {
- const char *srcptr = max_keys.c_str();
char *endptr;
max = strtol(max_keys.c_str(), &endptr, 10);
if (endptr) {
url_decode(s->args.get("delimiter"), delimiter);
if (s->prot_flags & RGW_REST_OPENSTACK) {
- string path_args = s->args.get("path");
+ string path_args;
+ url_decode(s->args.get("path"), path_args);
if (!path_args.empty()) {
if (!delimiter.empty() || !prefix.empty()) {
ret = -EINVAL;
oid.append(buf);
} else {
oid = s->object_str;
- string upload_id = s->args.get("uploadId");
+ string upload_id;
+ url_decode(s->args.get("uploadId"), upload_id);
RGWMPObj mp(oid, upload_id);
multipart_meta_obj = mp.get_meta();
- part_num = s->args.get("partNumber");
+ url_decode(s->args.get("partNumber"), part_num);
if (part_num.empty()) {
ret = -EINVAL;
goto done;
void RGWAbortMultipart::execute()
{
ret = -EINVAL;
- string upload_id = s->args.get("uploadId");
+ string upload_id;
string meta_oid;
string prefix;
+ url_decode(s->args.get("uploadId"), upload_id);
map<uint32_t, RGWUploadPartInfo> obj_parts;
map<uint32_t, RGWUploadPartInfo>::iterator obj_iter;
RGWAccessControlPolicy policy;
goto done;
if (s->prot_flags & RGW_REST_OPENSTACK) {
- string path_args = s->args.get("path");
+ string path_args;
+ url_decode(s->args.get("path"), path_args);
if (!path_args.empty()) {
if (!delimiter.empty() || !prefix.empty()) {
ret = -EINVAL;
s->formatter->dump_format("Name", s->bucket);
if (!prefix.empty())
s->formatter->dump_format("Prefix", prefix.c_str());
- if (!marker.empty())
- s->formatter->dump_format("Marker", marker.c_str());
+ s->formatter->dump_format("Marker", marker.c_str());
s->formatter->dump_int("MaxKeys", max);
if (!delimiter.empty())
s->formatter->dump_format("Delimiter", delimiter.c_str());
- s->formatter->dump_format("IsTruncated", (is_truncated ? "true" : "false"));
+ s->formatter->dump_format("IsTruncated", (max && is_truncated ? "true" : "false"));
if (ret >= 0) {
vector<RGWObjEnt>::iterator iter;