Mercurial
diff s3/s3_uploader.c @ 201:6cdee35a7ba9
[MrJuneJune] notes
| author | MrJuneJune <me@mrjunejune.com> |
|---|---|
| date | Sun, 15 Feb 2026 07:07:50 -0800 |
| parents | 83f16548ba41 |
| children | 240337164a80 |
line wrap: on
line diff
--- a/s3/s3_uploader.c Sat Feb 14 16:32:24 2026 -0800 +++ b/s3/s3_uploader.c Sun Feb 15 07:07:50 2026 -0800 @@ -388,40 +388,23 @@ char expires_str[16]; snprintf(expires_str, sizeof(expires_str), "%d", expires_seconds); + // URL-encode signed headers (semicolon becomes %3B) + char *encoded_signed_headers = s3__uri_encode_strict(signed_headers, p_arena); + size_t query_len = 1024 + strlen(encoded_credential); char *canonical_query = Dowa_Arena_Allocate(p_arena, query_len); - if (content_type && strcmp(method, "PUT") == 0) - { - char *encoded_content_type = s3__uri_encode_strict(content_type, p_arena); - snprintf(canonical_query, query_len, - "X-Amz-Algorithm=%s" - "&X-Amz-Credential=%s" - "&X-Amz-Date=%s" - "&X-Amz-Expires=%s" - "&X-Amz-SignedHeaders=%s" - "&x-amz-content-type=%s", - S3_ALGORITHM, - encoded_credential, - ts.datetime, - expires_str, - signed_headers, - encoded_content_type); - } - else - { - snprintf(canonical_query, query_len, - "X-Amz-Algorithm=%s" - "&X-Amz-Credential=%s" - "&X-Amz-Date=%s" - "&X-Amz-Expires=%s" - "&X-Amz-SignedHeaders=%s", - S3_ALGORITHM, - encoded_credential, - ts.datetime, - expires_str, - signed_headers); - } + snprintf(canonical_query, query_len, + "X-Amz-Algorithm=%s" + "&X-Amz-Credential=%s" + "&X-Amz-Date=%s" + "&X-Amz-Expires=%s" + "&X-Amz-SignedHeaders=%s", + S3_ALGORITHM, + encoded_credential, + ts.datetime, + expires_str, + encoded_signed_headers); // Build canonical headers size_t headers_len = 256 + strlen(host) + (content_type ? strlen(content_type) : 0);