diff options
author | Alexander Pakulov <apakulov@stripe.com> | 2019-08-14 12:00:27 -0700 |
---|---|---|
committer | Hiroshi SHIBATA <hsbt@ruby-lang.org> | 2019-08-17 07:35:48 +0900 |
commit | 25a327d41bcb881f27acfcc58f262986a8f4e5b4 (patch) | |
tree | b3adfbc57fbf9c2e4789c2076ec8a97373027f3f /lib | |
parent | c4f7c260f995778a40c6fc15107090fdb51d49a8 (diff) | |
download | ruby-25a327d41bcb881f27acfcc58f262986a8f4e5b4.tar.gz |
[rubygems/rubygems] Do not mutate uri.query during s3 signature creation
https://github.com/rubygems/rubygems/commit/c0275ee537
Diffstat (limited to 'lib')
-rw-r--r-- | lib/rubygems/s3_uri_signer.rb | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/lib/rubygems/s3_uri_signer.rb b/lib/rubygems/s3_uri_signer.rb index 437fdbf3dc..4caf07131f 100644 --- a/lib/rubygems/s3_uri_signer.rb +++ b/lib/rubygems/s3_uri_signer.rb @@ -49,12 +49,12 @@ class Gem::S3URISigner credential_info = "#{date}/#{s3_config.region}/s3/aws4_request" canonical_host = "#{uri.host}.s3.#{s3_config.region}.amazonaws.com" - uri.query = generate_canonical_query_params(s3_config, date_time, credential_info, expiration) - canonical_request = generate_canonical_request(canonical_host) + query_params = generate_canonical_query_params(s3_config, date_time, credential_info, expiration) + canonical_request = generate_canonical_request(canonical_host, query_params) string_to_sign = generate_string_to_sign(date_time, credential_info, canonical_request) signature = generate_signature(s3_config, date, string_to_sign) - URI.parse("https://#{canonical_host}#{uri.path}?#{uri.query}&X-Amz-Signature=#{signature}") + URI.parse("https://#{canonical_host}#{uri.path}?#{query_params}&X-Amz-Signature=#{signature}") end private @@ -76,11 +76,11 @@ class Gem::S3URISigner end.join("&") end - def generate_canonical_request(canonical_host) + def generate_canonical_request(canonical_host, query_params) [ "GET", uri.path, - uri.query, + query_params, "host:#{canonical_host}", "", # empty params "host", @@ -131,11 +131,11 @@ class Gem::S3URISigner else id = auth[:id] || auth["id"] secret = auth[:secret] || auth["secret"] - raise ConfigurationError.new("s3_source for #{host} missing id or secret") unless id && secret - security_token = auth[:security_token] || auth["security_token"] end + raise ConfigurationError.new("s3_source for #{host} missing id or secret") unless id && secret + region = auth[:region] || auth["region"] || "us-east-1" S3Config.new(id, secret, security_token, region) end |