From: RickyMaRui <140392518+RickyMaRui@users.noreply.github.com> Date: Tue, 19 Sep 2023 09:10:52 +0000 (+0800) Subject: rgw: fix SignatureDoesNotMatch when extra headers X-Git-Tag: v19.0.0~366^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=aed8d4681ddf2311d18124cc64dd2b64102608c0;p=ceph.git 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 --- diff --git a/src/rgw/rgw_common.cc b/src/rgw/rgw_common.cc index 4a11e11d2eb4..b14c259d0e2d 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];