]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: fix SignatureDoesNotMatch when extra headers 53770/head
authorRickyMaRui <140392518+RickyMaRui@users.noreply.github.com>
Tue, 19 Sep 2023 09:10:52 +0000 (17:10 +0800)
committerCasey Bodley <cbodley@redhat.com>
Mon, 2 Oct 2023 20:20:59 +0000 (16:20 -0400)
Headers start with 'x-amz' but not 'x-amz-', should not be in the list of CanonicalHeaders.

Signed-off-by: rui ma <marui1@chinatelecom.cn>
(cherry picked from commit aed8d4681ddf2311d18124cc64dd2b64102608c0)

src/rgw/rgw_common.cc

index 5868268c5e1b174a4e1b5a5349b581e0f7208ae1..4761c969ffda33955b63587ef075d558d1d41e86 100644 (file)
@@ -385,13 +385,13 @@ struct str_len {
 
 #define STR_LEN_ENTRY(s) { s, sizeof(s) - 1 }
 
-struct str_len meta_prefixes[] = { STR_LEN_ENTRY("HTTP_X_AMZ"),
-                                   STR_LEN_ENTRY("HTTP_X_GOOG"),
-                                   STR_LEN_ENTRY("HTTP_X_DHO"),
-                                   STR_LEN_ENTRY("HTTP_X_RGW"),
-                                   STR_LEN_ENTRY("HTTP_X_OBJECT"),
-                                   STR_LEN_ENTRY("HTTP_X_CONTAINER"),
-                                   STR_LEN_ENTRY("HTTP_X_ACCOUNT"),
+struct str_len meta_prefixes[] = { STR_LEN_ENTRY("HTTP_X_AMZ_"),
+                                   STR_LEN_ENTRY("HTTP_X_GOOG_"),
+                                   STR_LEN_ENTRY("HTTP_X_DHO_"),
+                                   STR_LEN_ENTRY("HTTP_X_RGW_"),
+                                   STR_LEN_ENTRY("HTTP_X_OBJECT_"),
+                                   STR_LEN_ENTRY("HTTP_X_CONTAINER_"),
+                                   STR_LEN_ENTRY("HTTP_X_ACCOUNT_"),
                                    {NULL, 0} };
 
 void req_info::init_meta_info(const DoutPrefixProvider *dpp, bool *found_bad_meta)
@@ -411,7 +411,7 @@ void req_info::init_meta_info(const DoutPrefixProvider *dpp, bool *found_bad_met
         const char *name = p+len; /* skip the prefix */
         int name_len = header_name.size() - len;
 
-        if (found_bad_meta && strncmp(name, "_META_", name_len) == 0)
+        if (found_bad_meta && strncmp(name, "META_", name_len) == 0)
           *found_bad_meta = true;
 
         char name_low[meta_prefixes[0].len + name_len + 1];