From a692ca789ae916b1393a39236ff8cf3e8a431717 Mon Sep 17 00:00:00 2001 From: Jo-Philipp Wich Date: Tue, 11 Dec 2018 09:17:42 +0100 Subject: [PATCH] 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 --- libs/luci-lib-httpclient/luasrc/httpclient.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/libs/luci-lib-httpclient/luasrc/httpclient.lua b/libs/luci-lib-httpclient/luasrc/httpclient.lua index f19fa4438..79ce41294 100644 --- a/libs/luci-lib-httpclient/luasrc/httpclient.lua +++ b/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 -- 2.25.1