Skip to content

Commit bea0c50

Browse files
committed
de-duplicate spaces in header values. Fixes #113
1 parent 0ccf1f8 commit bea0c50

File tree

1 file changed

+7
-1
lines changed

1 file changed

+7
-1
lines changed

lib/ex_aws/auth.ex

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ defmodule ExAws.Auth do
6262

6363
headers = headers |> canonical_headers
6464
header_string = headers
65-
|> Enum.map(fn {k, v} -> "#{k}:#{v}" end)
65+
|> Enum.map(fn {k, v} -> "#{k}:#{remove_dup_spaces(to_string(v))}" end)
6666
|> Enum.join("\n")
6767

6868
signed_headers_list = headers
@@ -85,6 +85,12 @@ defmodule ExAws.Auth do
8585
] |> IO.iodata_to_binary
8686
end
8787

88+
defp remove_dup_spaces(""), do: ""
89+
defp remove_dup_spaces(" " <> rest), do: remove_dup_spaces(" " <> rest)
90+
defp remove_dup_spaces(<< char :: binary-1, rest :: binary>>) do
91+
char <> remove_dup_spaces(rest)
92+
end
93+
8894
defp signing_key(service, datetime, config) do
8995
["AWS4", config[:secret_access_key]]
9096
|> hmac_sha256(date(datetime))

0 commit comments

Comments
 (0)