From f29ed67985a159ccf1dd1f2f181ca160427956c4 Mon Sep 17 00:00:00 2001 From: Arjun Naik Date: Tue, 15 Mar 2022 10:24:11 +0100 Subject: [PATCH] Do not set path when resolving URL path --- urivalidate.go | 4 ++-- urivalidate_test.go | 12 ++++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/urivalidate.go b/urivalidate.go index 48c3117..3735284 100644 --- a/urivalidate.go +++ b/urivalidate.go @@ -65,8 +65,8 @@ func ParseUrls(baseUrl, redirectUrl string) (retBaseUrl, retRedirectUrl *url.URL } // resolve references to base url - retBaseUrl = (&url.URL{Scheme: base.Scheme, Host: host, Path: "/"}).ResolveReference(&url.URL{Path: base.Path}) - retRedirectUrl = (&url.URL{Scheme: base.Scheme, Host: host, Path: "/"}).ResolveReference(&url.URL{Path: redirect.Path, RawQuery: redirect.RawQuery}) + retBaseUrl = (&url.URL{Scheme: base.Scheme, Host: host}).ResolveReference(&url.URL{Path: base.Path}) + retRedirectUrl = (&url.URL{Scheme: base.Scheme, Host: host}).ResolveReference(&url.URL{Path: redirect.Path, RawQuery: redirect.RawQuery}) return } diff --git a/urivalidate_test.go b/urivalidate_test.go index c5e2748..76b4c04 100644 --- a/urivalidate_test.go +++ b/urivalidate_test.go @@ -18,6 +18,18 @@ func TestURIValidate(t *testing.T) { "http://localhost:14000/appauth", "http://localhost:14000/appauth", }, + { + "Only domain, exact match", + "http://google.com", + "http://google.com", + "http://google.com", + }, + { + "Only domain, with subpath", + "http://google.com", + "http://google.com/redirect", + "http://google.com/redirect", + }, { "Trailing slash", "http://www.google.com/myapp",