From a61f9ffd7cbe885c1bcf56cee9fa78a84af5dea1 Mon Sep 17 00:00:00 2001 From: RickyMaRui <140392518+RickyMaRui@users.noreply.github.com> Date: Tue, 19 Sep 2023 17:10:52 +0800 Subject: [PATCH] rgw: fix SignatureDoesNotMatch when extra headers Headers start with 'x-amz' but not 'x-amz-', should not be in the list of CanonicalHeaders. Signed-off-by: rui ma (cherry picked from commit aed8d4681ddf2311d18124cc64dd2b64102608c0) --- src/rgw/rgw_common.cc | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/rgw/rgw_common.cc b/src/rgw/rgw_common.cc index 5868268c5e1..4761c969ffd 100644 --- a/src/rgw/rgw_common.cc +++ b/src/rgw/rgw_common.cc @@ -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]; -- 2.47.3