luci-lib-httpclient: prevent nil access with invalid IP address literals
[project/luci.git] / libs / luci-lib-httpclient / luasrc / httpclient.lua
index f19fa44387e0544540aef10f728a12eea8195a42..79ce41294c6074872142d2bcb8cba8bf7f542d5c 100644 (file)
@@ -108,20 +108,20 @@ function parse_url(uri)
        url.host, tmp = rest:match("^%[([0-9a-fA-F:]+)%](.*)$")
        if url.host and tmp then
                url.ip6addr = ip.IPv6(url.host)
-               url.host = string.format("[%s]", url.ip6addr:string())
-               rest = tmp
                if not url.ip6addr then
                        return nil
                end
+               url.host = string.format("[%s]", url.ip6addr:string())
+               rest = tmp
        else
                url.host, tmp = rest:match("^(%d+%.%d+%.%d+%.%d+)(.*)$")
                if url.host and tmp then
                        url.ipaddr = ip.IPv4(url.host)
-                       url.host = url.ipaddr:string()
-                       rest = tmp
                        if not url.ipaddr then
                                return nil
                        end
+                       url.host = url.ipaddr:string()
+                       rest = tmp
                else
                        url.host, tmp = rest:match("^([0-9a-zA-Z%.%-]+)(.*)$")
                        if url.host and tmp then