diff options
Diffstat (limited to 'modules')
-rw-r--r-- | modules/httplib/url.go | 8 | ||||
-rw-r--r-- | modules/httplib/url_test.go | 5 |
2 files changed, 10 insertions, 3 deletions
diff --git a/modules/httplib/url.go b/modules/httplib/url.go index b679b44500..903799cb68 100644 --- a/modules/httplib/url.go +++ b/modules/httplib/url.go @@ -32,9 +32,11 @@ func IsCurrentGiteaSiteURL(s string) bool { return false } if u.Path != "" { - u.Path = "/" + util.PathJoinRelX(u.Path) - if !strings.HasSuffix(u.Path, "/") { - u.Path += "/" + cleanedPath := util.PathJoinRelX(u.Path) + if cleanedPath == "" || cleanedPath == "." { + u.Path = "/" + } else { + u.Path += "/" + cleanedPath + "/" } } if urlIsRelative(s, u) { diff --git a/modules/httplib/url_test.go b/modules/httplib/url_test.go index 9b7b242298..9bf09bcf2f 100644 --- a/modules/httplib/url_test.go +++ b/modules/httplib/url_test.go @@ -53,6 +53,8 @@ func TestIsCurrentGiteaSiteURL(t *testing.T) { assert.True(t, IsCurrentGiteaSiteURL(s), "good = %q", s) } bad := []string{ + ".", + "foo", "/", "//", "\\\\", @@ -67,5 +69,8 @@ func TestIsCurrentGiteaSiteURL(t *testing.T) { setting.AppURL = "http://localhost:3000/" setting.AppSubURL = "" + assert.False(t, IsCurrentGiteaSiteURL("//")) + assert.False(t, IsCurrentGiteaSiteURL("\\\\")) + assert.False(t, IsCurrentGiteaSiteURL("http://localhost")) assert.True(t, IsCurrentGiteaSiteURL("http://localhost:3000?key=val")) } |