Skip to content

Commit cbeef2b

Browse files
cesnietorcesnietor
andauthored
Fix URL safe string decoding for DownloadPublicObject API (#3328)
Co-authored-by: cesnietor <[email protected]>
1 parent e68a74b commit cbeef2b

File tree

2 files changed

+12
-4
lines changed

2 files changed

+12
-4
lines changed

api/public_objects.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ func getDownloadPublicObjectResponse(params public.DownloadSharedObjectParams) (
9393

9494
// b64toMinIOStringURL decodes url and validates is a MinIO url endpoint
9595
func b64toMinIOStringURL(inputEncodedURL string) (*string, error) {
96-
inputURLDecoded, err := b64.StdEncoding.DecodeString(inputEncodedURL)
96+
inputURLDecoded, err := b64.URLEncoding.DecodeString(inputEncodedURL)
9797
if err != nil {
9898
return nil, err
9999
}

api/public_objects_test.go

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,14 @@ func Test_b64toMinIOStringURL(t *testing.T) {
7676
wantError: swag.String("unexpected scheme found "),
7777
expected: nil,
7878
},
79+
{
80+
test: "encoded url is url safe decoded",
81+
args: args{
82+
encodedURL: "aHR0cHM6Ly9sb2NhbGhvc3Q6OTAwMC9jZXN0ZXN0L0F1ZGlvJTIwaWNvbi5zdmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTY=",
83+
},
84+
wantError: nil,
85+
expected: swag.String("https://localhost:9000/cestest/Audio%20icon.svg?X-Amz-Algorithm=AWS4-HMAC-SHA256"),
86+
},
7987
}
8088

8189
for _, tt := range tests {
@@ -84,16 +92,16 @@ func Test_b64toMinIOStringURL(t *testing.T) {
8492
if tt.wantError != nil {
8593
if err != nil {
8694
if err.Error() != *tt.wantError {
87-
t.Errorf("b64toMinIOStringURL() error: `%v`, wantErr: `%s`", err, *tt.wantError)
95+
t.Errorf("b64toMinIOStringURL() error: `%v`, wantErr: `%s`, input: `%s`", err, *tt.wantError, tt.args.encodedURL)
8896
return
8997
}
9098
} else {
91-
t.Errorf("b64toMinIOStringURL() error: `%v`, wantErr: `%s`", err, *tt.wantError)
99+
t.Errorf("b64toMinIOStringURL() error: `%v`, wantErr: `%s`, input: `%s`", err, *tt.wantError, tt.args.encodedURL)
92100
return
93101
}
94102
} else {
95103
if err != nil {
96-
t.Errorf("b64toMinIOStringURL() error: `%s`, wantErr: `%v`", err, tt.wantError)
104+
t.Errorf("b64toMinIOStringURL() error: `%s`, wantErr: `%v`, input: `%s`", err, tt.wantError, tt.args.encodedURL)
97105
return
98106
}
99107
tAssert.Equal(*tt.expected, *url)

0 commit comments

Comments
 (0)