From 96ba34a93c3d5d8bd80c9585958ff0cc3811ba57 Mon Sep 17 00:00:00 2001 From: "stonezdj(Daojun Zhang)" Date: Tue, 9 Apr 2024 10:24:57 +0800 Subject: [PATCH] Allow empty path in redirect_url (#20238) fixes #20226 Signed-off-by: stonezdj Co-authored-by: stonezdj --- src/common/utils/utils.go | 6 +++--- src/common/utils/utils_test.go | 1 + 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/common/utils/utils.go b/src/common/utils/utils.go index 07597492e..9a7a1f07c 100644 --- a/src/common/utils/utils.go +++ b/src/common/utils/utils.go @@ -313,11 +313,11 @@ func ValidateCronString(cron string) error { // sort.Slice(input, func(i, j int) bool { // return MostMatchSorter(input[i].GroupName, input[j].GroupName, matchWord) // }) +// // a is the field to be used for sorting, b is the other field, matchWord is the word to be matched // the return value is true if a is less than b // for example, search with "user", input is {"harbor_user", "user", "users, "admin_user"} // it returns with this order {"user", "users", "admin_user", "harbor_user"} - func MostMatchSorter(a, b string, matchWord string) bool { // exact match always first if a == matchWord { @@ -333,7 +333,7 @@ func MostMatchSorter(a, b string, matchWord string) bool { return len(a) < len(b) } -// IsLocalPath checks if path is local +// IsLocalPath checks if path is local, includes the empty path func IsLocalPath(path string) bool { - return strings.HasPrefix(path, "/") && !strings.HasPrefix(path, "//") + return len(path) == 0 || (strings.HasPrefix(path, "/") && !strings.HasPrefix(path, "//")) } diff --git a/src/common/utils/utils_test.go b/src/common/utils/utils_test.go index 8849e1f0c..4e1ab2ef3 100644 --- a/src/common/utils/utils_test.go +++ b/src/common/utils/utils_test.go @@ -501,6 +501,7 @@ func TestIsLocalPath(t *testing.T) { {"other_site1", args{"//www.myexample.com"}, false}, {"other_site2", args{"https://www.myexample.com"}, false}, {"other_site", args{"http://www.myexample.com"}, false}, + {"empty_path", args{""}, true}, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) {