]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: aws4 uri encoding bugfix 8445/head
authorJavier M. Mellid <jmunhoz@igalia.com>
Tue, 5 Apr 2016 14:00:10 +0000 (16:00 +0200)
committerJavier M. Mellid <jmunhoz@igalia.com>
Tue, 5 Apr 2016 14:00:10 +0000 (16:00 +0200)
Fixes: http://tracker.ceph.com/issues/15358
Signed-off-by: Javier M. Mellid <jmunhoz@igalia.com>
src/rgw/rgw_rest_s3.cc

index e4731ba0a0bc3cd3efc7ae1007c76c3a006c8cdd..d8119f9d4219feee1fc4516b6d8012ebb5d5731c 100644 (file)
@@ -3437,8 +3437,20 @@ int RGW_Auth_S3::authorize_v4(RGWRados *store, struct req_state *s)
         string encoded_key;
         string encoded_val;
         if (key != "X-Amz-Credential") {
-          aws4_uri_encode(key, encoded_key);
-          aws4_uri_encode(val, encoded_val);
+          string key_decoded;
+          url_decode(key, key_decoded);
+          if (key.length() != key_decoded.length()) {
+            encoded_key = key;
+          } else {
+            aws4_uri_encode(key, encoded_key);
+          }
+          string val_decoded;
+          url_decode(val, val_decoded);
+          if (val.length() != val_decoded.length()) {
+            encoded_val = val;
+          } else {
+            aws4_uri_encode(val, encoded_val);
+          }
         } else {
           encoded_key = key;
           encoded_val = val;