copy query values before update to preserve the expected keys (#15310)

in success_action_redirect we were missing required
query params as per S3 spec - updated tests.
This commit is contained in:
Harshavardhana 2022-07-15 15:04:48 -07:00 committed by GitHub
parent 785b429737
commit 1cd6713e24
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 6 deletions

View file

@ -1117,9 +1117,11 @@ func (api objectAPIHandlers) PostPolicyBucketHandler(w http.ResponseWriter, r *h
})
if redirectURL != nil { // success_action_redirect is valid and set.
redirectURL.Query().Add("bucket", objInfo.Bucket)
redirectURL.Query().Add("key", objInfo.Name)
redirectURL.Query().Add("etag", "\""+objInfo.ETag+"\"")
v := redirectURL.Query()
v.Add("bucket", objInfo.Bucket)
v.Add("key", objInfo.Name)
v.Add("etag", "\""+objInfo.ETag+"\"")
redirectURL.RawQuery = v.Encode()
writeRedirectSeeOther(w, redirectURL.String())
return
}

View file

@ -499,9 +499,11 @@ func testPostPolicyBucketHandlerRedirect(obj ObjectLayer, instanceType string, t
t.Error("Unexpected error: ", err)
}
redirectURL.Query().Add("bucket", info.Bucket)
redirectURL.Query().Add("key", info.Name)
redirectURL.Query().Add("etag", "\""+info.ETag+"\"")
v := redirectURL.Query()
v.Add("bucket", info.Bucket)
v.Add("key", info.Name)
v.Add("etag", "\""+info.ETag+"\"")
redirectURL.RawQuery = v.Encode()
expectedLocation := redirectURL.String()
// Check the new location url