From 9471f96da61279b1cf335cc8e4243ad79e9cef9d Mon Sep 17 00:00:00 2001 From: Leah Neukirchen Date: Sat, 24 Feb 2024 00:09:07 +0100 Subject: improve URL validation --- htping.go | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/htping.go b/htping.go index 83c6a5e..60b8480 100644 --- a/htping.go +++ b/htping.go @@ -368,21 +368,22 @@ func main() { var wg sync.WaitGroup wg.Add(len(args)) - for _, mu := range args { - u := mu - - u2, err := url.ParseRequestURI(u) - if (err != nil && strings.HasSuffix(err.Error(), - "invalid URI for request")) || - (u2.Scheme != "http" && u2.Scheme != "https") { - u = "http://" + u - } + u := u + + parsedUrl, err := url.ParseRequestURI(u) + if (err != nil && err.(*url.Error).Op == "parse") { + u = "http://" + u + } - _, err = url.ParseRequestURI(u) + parsedUrl, err = url.ParseRequestURI(u) if err != nil { fmt.Fprintf(os.Stderr, "%s\n", err.Error()) os.Exit(1) } + if !(parsedUrl.Scheme == "http" || parsedUrl.Scheme == "https") { + fmt.Fprintf(os.Stderr, "unsupported URL scheme: %s\n", u) + os.Exit(1) + } fmt.Printf("%s %s\n", method, u) -- cgit 1.4.1