Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
awall
awall
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 7
    • Issues 7
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge Requests 0
    • Merge Requests 0
  • CI / CD
    • CI / CD
    • Pipelines
    • Jobs
    • Schedules
  • Operations
    • Operations
    • Environments
  • Analytics
    • Analytics
    • CI / CD
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Collapse sidebar
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
  • alpine
  • awallawall
  • Issues
  • #9646

Closed
Open
Opened Nov 24, 2020 by tuedel@tuedel
  • Report abuse
  • New issue
Report abuse New issue

Hostname-based rules/dnscache are broken

When trying to use hostnames in rule definitions, awall crashes with the following error:

/usr/share/lua/5.3/awall/host.lua:36: attempt to index a nil value (field 'PATTERNS')
stack traceback:
        /usr/share/lua/5.3/awall/uerror.lua:25: in metamethod '__index'
        /usr/share/lua/5.3/awall/host.lua:36: in function 'awall.host.resolve'
        /usr/share/lua/5.3/awall/host.lua:74: in function 'awall.host.resolveunique'
        /usr/share/lua/5.3/awall/modules/filter.lua:112: in function </usr/share/lua/5.3/awall/modules/filter.lua:103>
        (...tail calls...)
        /usr/share/lua/5.3/awall/modules/filter.lua:160: in function </usr/share/lua/5.3/awall/modules/filter.lua:159>
        (...tail calls...)
        /usr/share/lua/5.3/awall/modules/filter.lua:226: in method 'init'
        /usr/share/lua/5.3/awall/class.lua:31: in field 'morph'
        /usr/share/lua/5.3/awall/init.lua:129: in method 'init'
        /usr/share/lua/5.3/awall/class.lua:31: in function </usr/share/lua/5.3/awall/class.lua:29>
        (...tail calls...)
        /usr/sbin/awall:235: in upvalue 'f'
        /usr/share/lua/5.3/awall/uerror.lua:20: in function </usr/share/lua/5.3/awall/uerror.lua:20>
        [C]: in function 'xpcall'
        /usr/share/lua/5.3/awall/uerror.lua:19: in function 'awall.uerror.call'
        /usr/sbin/awall:163: in main chunk
        [C]: in ?

This happens because the family referenced on line 36 in hosts.lua is shadowed on line 26 and line 30.

An easy fix would be something like

diff --git a/awall/host.lua b/awall/host.lua
index 9ca9d0a..581a0d6 100644
--- a/awall/host.lua
+++ b/awall/host.lua
@@ -9,6 +9,7 @@ local M = {}
 
 local family = require('awall.family')
 local identify = family.identify
+local PATTERNS = family.PATTERNS
 
 local util = require('awall.util')
 local listpairs = util.listpairs
@@ -33,7 +34,7 @@ function M.resolve(list, context, allow)
                  if answer then
                     if rec == '' then break end
                     local addr = rec:match(
-                       '^'..family.PATTERNS.domain..'%s+%d+%s+IN%s+'..rtype..
+                       '^'..PATTERNS.domain..'%s+%d+%s+IN%s+'..rtype..
                           '%s+(.+)'
                     )
                     if addr then

But IMHO it probably makes more sense to rethink the naming of those variables altogether.

Assignee
Assign to
None
Milestone
None
Assign milestone
Time tracking
None
Due date
None
0
Labels
None
Assign labels
  • View project labels
Reference: alpine/awall#9646