Browse Source

luci-lib-httpclient: prevent nil access with invalid IP address literals

Fixes: a54baf7be ("luci-lib-httpclient: revamp URL handling")
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Jo-Philipp Wich 5 years ago
parent
commit
a692ca789a
1 changed files with 4 additions and 4 deletions
  1. 4 4
      libs/luci-lib-httpclient/luasrc/httpclient.lua

+ 4 - 4
libs/luci-lib-httpclient/luasrc/httpclient.lua

@@ -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