fix(parseCredentialHeader): trim right Slash from credElements

This commit is contained in:
Chris-Daniel Stegmaier 2025-09-28 19:01:54 +02:00
parent b8631cf531
commit 6a28f28db4
2 changed files with 20 additions and 1 deletions

View File

@ -75,7 +75,7 @@ func parseCredentialHeader(credElement string, region string, stype serviceType)
if creds[0] != "Credential" { if creds[0] != "Credential" {
return ch, ErrMissingCredTag return ch, ErrMissingCredTag
} }
credElements := strings.Split(strings.TrimSpace(creds[1]), SlashSeparator) credElements := strings.Split(strings.TrimRight(strings.TrimSpace(creds[1]), SlashSeparator), SlashSeparator)
if len(credElements) < 5 { if len(credElements) < 5 {
return ch, ErrCredMalformed return ch, ErrCredMalformed
} }

View File

@ -236,6 +236,25 @@ func TestParseCredentialHeader(t *testing.T) {
"aws4_request"), "aws4_request"),
expectedErrCode: ErrNone, expectedErrCode: ErrNone,
}, },
// Test Case - 12.
// Test case with right inputs but trailing `/`. Expected to return a valid CredentialHeader.
// "aws4_request" is the valid request version.
{
inputCredentialStr: generateCredentialStr(
"Z7IXGOO6BZ0REAN1Q26I",
sampleTimeStr,
"us-west-1",
"s3",
"aws4_request/"),
expectedCredentials: generateCredentials(
t,
"Z7IXGOO6BZ0REAN1Q26I",
sampleTimeStr,
"us-west-1",
"s3",
"aws4_request"),
expectedErrCode: ErrNone,
},
} }
for i, testCase := range testCases { for i, testCase := range testCases {