also sprach LaMont Jones <[email protected]> [2008.09.17.1901 +0200]:
> I'll dig into it a bit more, but I don't think that part of things is
> touched at all.

This is still present in 2.5.5-1.1 and I think I finally found the
root.

Here's the background:
  http://www.nabble.com/permit_mx_backup_networks-and-IPv6-td19287497.html

I spent a bit of time with the code and found in
smtpd_check.c:509, in function smtpd_check_parse:

        if ((flags & SMTPD_CHECK_PARSE_POLICY)
            && last && strcasecmp(last, CHECK_POLICY_SERVICE) == 0)
            policy_client_register(name);
        else if ((flags & SMTPD_CHECK_PARSE_MAPS)
                 && strchr(name, ':') && dict_handle(name) == 0) {
            dict_register(name, dict_open(name, O_RDONLY, DICT_FLAG_LOCK
                                          | DICT_FLAG_FOLD_FIX));

This seems to be the cause. At this point,
name=="[2001:6f8:128a::1]/128" and flags==-1 (ALL), but the if()
didn't match, so the elsif gets a chance, and strchr() gets a run to
find the ':' in the IPv6 address, dict_handle() apparently returns
0, and dict_open is told to open the "[2001" dictionary handler.

I cannot really figure out why the function gets called, but I am
sure that this is the source of the problem. It seems that

  #define MATCH_DICTIONARY(pattern) \
      ((pattern)[0] != '[' && strchr((pattern), ':') != 0)

from match_list.c ought to be used here as well.

The fact that you, Wietse, don't see this must then be related to
build flags. For us, this is our build command:

  gcc -Wmissing-prototypes -Wformat -DDEBIAN -DMAX_DYNAMIC_MAPS
  -DHAS_PCRE -DHAS_LDAP -DMYORIGIN_FROM_FILE -D_LARGEFILE_SOURCE
  -D_FILE_OFFSET_BITS=64 -DHAS_CDB -DHAS_MYSQL -I/usr/include/mysql
  -DHAS_PGSQL -I/usr/include/postgresql -DHAS_SSL
  -I/usr/include/openssl -DUSE_SASL_AUTH -I/usr/include/sasl
  -DUSE_CYRUS_SASL -DUSE_TLS  -O2 -I. -I../../include -DLINUX2 -c
  smtpd_check.c

I cannot figure out how this could affect things though.

-- 
 .''`.   martin f. krafft <[email protected]>      Related projects:
: :'  :  proud Debian developer               http://debiansystem.info
`. `'`   http://people.debian.org/~madduck    http://vcs-pkg.org
  `-  Debian - when you have better things to do than fixing systems

Attachment: digital_signature_gpg.asc
Description: Digital signature (see http://martin-krafft.net/gpg/)

Reply via email to