Fix base64 encoded prefix received on the server side for chinese characters (#1126)

Signed-off-by: Daniel Valdivia <18384552+dvaldivia@users.noreply.github.com>
This commit is contained in:
Daniel Valdivia
2021-10-19 13:00:13 -07:00
committed by GitHub
parent c62fecbac1
commit ba9f4d094b
3 changed files with 15 additions and 10 deletions

View File

@@ -838,7 +838,7 @@ func getBucketRewindResponse(session *models.Principal, params user_api.GetBucke
defer cancel() defer cancel()
var prefix = "" var prefix = ""
if params.Prefix != nil { if params.Prefix != nil {
encodedPrefix := *params.Prefix encodedPrefix := SanitizeEncodedPrefix(*params.Prefix)
decodedPrefix, err := base64.StdEncoding.DecodeString(encodedPrefix) decodedPrefix, err := base64.StdEncoding.DecodeString(encodedPrefix)
if err != nil { if err != nil {
return nil, prepareError(err) return nil, prepareError(err)

View File

@@ -87,7 +87,7 @@ func registerObjectsHandlers(api *operations.ConsoleAPI) {
var prefixPath string var prefixPath string
var filename string var filename string
if params.Prefix != "" { if params.Prefix != "" {
encodedPrefix := params.Prefix encodedPrefix := SanitizeEncodedPrefix(params.Prefix)
decodedPrefix, err := base64.StdEncoding.DecodeString(encodedPrefix) decodedPrefix, err := base64.StdEncoding.DecodeString(encodedPrefix)
if err != nil { if err != nil {
log.Println(err) log.Println(err)
@@ -187,7 +187,7 @@ func getListObjectsResponse(session *models.Principal, params user_api.ListObjec
var withVersions bool var withVersions bool
var withMetadata bool var withMetadata bool
if params.Prefix != nil { if params.Prefix != nil {
encodedPrefix := *params.Prefix encodedPrefix := SanitizeEncodedPrefix(*params.Prefix)
decodedPrefix, err := base64.StdEncoding.DecodeString(encodedPrefix) decodedPrefix, err := base64.StdEncoding.DecodeString(encodedPrefix)
if err != nil { if err != nil {
return nil, prepareError(err) return nil, prepareError(err)
@@ -290,7 +290,7 @@ func getDownloadObjectResponse(session *models.Principal, params user_api.Downlo
ctx := context.Background() ctx := context.Background()
var prefix string var prefix string
if params.Prefix != "" { if params.Prefix != "" {
encodedPrefix := params.Prefix encodedPrefix := SanitizeEncodedPrefix(params.Prefix)
decodedPrefix, err := base64.StdEncoding.DecodeString(encodedPrefix) decodedPrefix, err := base64.StdEncoding.DecodeString(encodedPrefix)
if err != nil { if err != nil {
return nil, prepareError(err) return nil, prepareError(err)
@@ -492,7 +492,7 @@ func getUploadObjectResponse(session *models.Principal, params user_api.PostBuck
func uploadFiles(ctx context.Context, client MinioClient, params user_api.PostBucketsBucketNameObjectsUploadParams) error { func uploadFiles(ctx context.Context, client MinioClient, params user_api.PostBucketsBucketNameObjectsUploadParams) error {
var prefix string var prefix string
if params.Prefix != nil { if params.Prefix != nil {
encodedPrefix := *params.Prefix encodedPrefix := SanitizeEncodedPrefix(*params.Prefix)
decodedPrefix, err := base64.StdEncoding.DecodeString(encodedPrefix) decodedPrefix, err := base64.StdEncoding.DecodeString(encodedPrefix)
if err != nil { if err != nil {
return err return err
@@ -541,7 +541,7 @@ func getShareObjectResponse(session *models.Principal, params user_api.ShareObje
ctx := context.Background() ctx := context.Background()
var prefix string var prefix string
if params.Prefix != "" { if params.Prefix != "" {
encodedPrefix := params.Prefix encodedPrefix := SanitizeEncodedPrefix(params.Prefix)
decodedPrefix, err := base64.StdEncoding.DecodeString(encodedPrefix) decodedPrefix, err := base64.StdEncoding.DecodeString(encodedPrefix)
if err != nil { if err != nil {
return nil, prepareError(err) return nil, prepareError(err)
@@ -595,7 +595,7 @@ func getSetObjectLegalHoldResponse(session *models.Principal, params user_api.Pu
minioClient := minioClient{client: mClient} minioClient := minioClient{client: mClient}
var prefix string var prefix string
if params.Prefix != "" { if params.Prefix != "" {
encodedPrefix := params.Prefix encodedPrefix := SanitizeEncodedPrefix(params.Prefix)
decodedPrefix, err := base64.StdEncoding.DecodeString(encodedPrefix) decodedPrefix, err := base64.StdEncoding.DecodeString(encodedPrefix)
if err != nil { if err != nil {
return prepareError(err) return prepareError(err)
@@ -631,7 +631,7 @@ func getSetObjectRetentionResponse(session *models.Principal, params user_api.Pu
minioClient := minioClient{client: mClient} minioClient := minioClient{client: mClient}
var prefix string var prefix string
if params.Prefix != "" { if params.Prefix != "" {
encodedPrefix := params.Prefix encodedPrefix := SanitizeEncodedPrefix(params.Prefix)
decodedPrefix, err := base64.StdEncoding.DecodeString(encodedPrefix) decodedPrefix, err := base64.StdEncoding.DecodeString(encodedPrefix)
if err != nil { if err != nil {
return prepareError(err) return prepareError(err)
@@ -684,7 +684,7 @@ func deleteObjectRetentionResponse(session *models.Principal, params user_api.De
minioClient := minioClient{client: mClient} minioClient := minioClient{client: mClient}
var prefix string var prefix string
if params.Prefix != "" { if params.Prefix != "" {
encodedPrefix := params.Prefix encodedPrefix := SanitizeEncodedPrefix(params.Prefix)
decodedPrefix, err := base64.StdEncoding.DecodeString(encodedPrefix) decodedPrefix, err := base64.StdEncoding.DecodeString(encodedPrefix)
if err != nil { if err != nil {
return prepareError(err) return prepareError(err)
@@ -719,7 +719,7 @@ func getPutObjectTagsResponse(session *models.Principal, params user_api.PutObje
minioClient := minioClient{client: mClient} minioClient := minioClient{client: mClient}
var prefix string var prefix string
if params.Prefix != "" { if params.Prefix != "" {
encodedPrefix := params.Prefix encodedPrefix := SanitizeEncodedPrefix(params.Prefix)
decodedPrefix, err := base64.StdEncoding.DecodeString(encodedPrefix) decodedPrefix, err := base64.StdEncoding.DecodeString(encodedPrefix)
if err != nil { if err != nil {
return prepareError(err) return prepareError(err)

View File

@@ -136,3 +136,8 @@ func ExpireSessionCookie() http.Cookie {
SameSite: http.SameSiteLaxMode, SameSite: http.SameSiteLaxMode,
} }
} }
// SanitizeEncodedPrefix replaces spaces for + since those are lost when you do GET parameters
func SanitizeEncodedPrefix(rawPrefix string) string {
return strings.Replace(rawPrefix, " ", "+", -1)
}