------- You are receiving this mail because: -------
You are the QA contact for the bug, or are watching the QA contact.

http://www.exim.org/bugzilla/show_bug.cgi?id=440

           Summary: dnslists '=' following '!=' treated as '!='
           Product: Exim
           Version: 4.64
          Platform: Other
        OS/Version: All
            Status: NEW
          Severity: bug
          Priority: medium
         Component: ACLs
        AssignedTo: [EMAIL PROTECTED]
        ReportedBy: [EMAIL PROTECTED]
         QAContact: [email protected]


When using an ACL like this:
  deny dnslists = foo.example.com!=127.0.0.2 : bar.example.com=127.0.0.2

If the host is not listed in foo.example.com (or is with 127.0.0.2), but is
listed in bar.example.com with 127.0.0.2, the deny will not occur as expected.
The -bh debug output says
  >>> processing "deny"
  >>> check dnslists = foo.example.com!=127.0.0.2 : bar.example.com=127.0.0.2
  >>> DNS list check: foo.example.com!=127.0.0.2
  >>> new DNS lookup for 1.0.0.10.foo.example.com
  >>> DNS lookup for 1.0.0.10.foo.example.com failed
  >>> => that means 10.0.0.1 is not listed at foo.example.com
  >>> DNS list check: bar.example.com=127.0.0.2
  >>> new DNS lookup for 1.0.0.10.bar.example.com
  >>> DNS lookup for 1.0.0.10.bar.example.com succeeded (yielding 127.0.0.2)
  >>> => but we are not accepting this block class because
  >>> => there was an exclude match for =127.0.0.2
  >>> deny: condition test failed

Note the second-to-last line claiming an exclude match: invert_result is not
getting reset for each domain in the dnslists list.

In verify.c function verify_check_dnsbl, moving the "invert_result = FALSE" to
inside the while loop fixes it.

-- 
Configure bugmail: http://www.exim.org/bugzilla/userprefs.cgi?tab=email

-- 
## List details at http://www.exim.org/mailman/listinfo/exim-dev Exim details 
at http://www.exim.org/ ##

Reply via email to