diff options
author | Jo-Philipp Wich <jo@mein.io> | 2018-03-02 14:42:52 +0100 |
---|---|---|
committer | Jo-Philipp Wich <jo@mein.io> | 2018-03-02 14:42:52 +0100 |
commit | bf49505ea0a07c35719a7b71f8212e547d999d62 (patch) | |
tree | 4e83740bc26795c5ca8a4f68fde7da1669b1cf86 /modules/luci-base | |
parent | 852ec6e28bf90d67882cf909b15a91ecc4501b55 (diff) |
luci-base: properly handle undefined IPv6 local-address information
If IPv6 prefix assignment is disabled, the "local-address" structure
might exist, but be empty which causes the adress formatting in the
network model class to bail out.
Verify the completeness of the "local-address" structure before using
it in order to avoid runtime errors.
Fixes #1657.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Diffstat (limited to 'modules/luci-base')
-rw-r--r-- | modules/luci-base/luasrc/model/network.lua | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/modules/luci-base/luasrc/model/network.lua b/modules/luci-base/luasrc/model/network.lua index 3521c6d57a..c8ec5364ed 100644 --- a/modules/luci-base/luasrc/model/network.lua +++ b/modules/luci-base/luasrc/model/network.lua @@ -1001,7 +1001,10 @@ function protocol.ip6addrs(self) if type(addrs) == "table" then for n, addr in ipairs(addrs) do - if type(addr["local-address"]) == "table" then + if type(addr["local-address"]) == "table" and + type(addr["local-address"].mask) == "number" and + type(addr["local-address"].address) == "string" + then rv[#rv+1] = "%s/%d" %{ addr["local-address"].address, addr["local-address"].mask |