Crash when trying to throw "Invalid host name" error
Version: awall-1.11.0-r0
When awall is unable to resolve a host name in my config (NXDOMAIN), it crashes with the following trace:
/usr/share/lua/5.4/awall/host.lua:49: attempt to index a nil value (local 'context')
stack traceback:
/usr/share/lua/5.4/awall/uerror.lua:25: in metamethod 'index'
/usr/share/lua/5.4/awall/host.lua:49: in function 'awall.host.resolve'
/usr/share/lua/5.4/awall/host.lua:78: in function 'awall.host.resolveunique'
/usr/share/lua/5.4/awall/modules/filter.lua:115: in function </usr/share/lua/5.4/awall/modules/filter.lua:106>
(...tail calls...)
/usr/share/lua/5.4/awall/modules/filter.lua:163: in function </usr/share/lua/5.4/awall/modules/filter.lua:162>
(...tail calls...)
/usr/share/lua/5.4/awall/modules/filter.lua:228: in method 'init'
/usr/share/lua/5.4/awall/class.lua:36: in field 'morph'
/usr/share/lua/5.4/awall/init.lua:75: in method 'init'
/usr/share/lua/5.4/awall/class.lua:36: in function </usr/share/lua/5.4/awall/class.lua:29>
(...tail calls...)
/usr/sbin/awall:231: in upvalue 'f'
/usr/share/lua/5.4/awall/uerror.lua:20: in function </usr/share/lua/5.4/awall/uerror.lua:20>
[C]: in function 'xpcall'
/usr/share/lua/5.4/awall/uerror.lua:19: in function 'call'
/usr/sbin/awall:163: in main chunk
[C]: in ?
This change fixed it for me:
diff --git a/awall/host.lua b/awall/host.lua
index 2d59e41..c93083e 100644
--- a/awall/host.lua
+++ b/awall/host.lua
@@ -75,7 +75,7 @@ end
function M.resolveunique(list, families, context)
local res = {}
- for _, addr in M.resolve(list, self, {range=true}) do
+ for _, addr in M.resolve(list, context, {range=true}) do
local family = addr[1]
if util.contains(families, family) then
if res[family] then context:error('Address must be unique') end
On a related note I'd like to suggest changing the error message in question from "Invalid host name" to something like "Unable to resolve host name", because that's what is really happening here.