[exim-cvs] cvs commit: exim/exim-doc/doc-txt ChangeLog exim…

Top Page
Delete this message
Reply to this message
Author: Philip Hazel
Date:  
To: exim-cvs
Subject: [exim-cvs] cvs commit: exim/exim-doc/doc-txt ChangeLog exim/exim-src/src dns.c
ph10 2006/11/20 13:53:44 GMT

  Modified files:
    exim-doc/doc-txt     ChangeLog 
    exim-src/src         dns.c 
  Log:
  Lock out "A-for-A" DNS lookups.


  Revision  Changes    Path
  1.438     +6 -0      exim/exim-doc/doc-txt/ChangeLog
  1.16      +15 -1     exim/exim-src/src/dns.c


  Index: ChangeLog
  ===================================================================
  RCS file: /home/cvs/exim/exim-doc/doc-txt/ChangeLog,v
  retrieving revision 1.437
  retrieving revision 1.438
  diff -u -r1.437 -r1.438
  --- ChangeLog    20 Nov 2006 11:57:56 -0000    1.437
  +++ ChangeLog    20 Nov 2006 13:53:44 -0000    1.438
  @@ -1,4 +1,4 @@
  -$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.437 2006/11/20 11:57:56 ph10 Exp $
  +$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.438 2006/11/20 13:53:44 ph10 Exp $


   Change log file for Exim from version 4.21
   -------------------------------------------
  @@ -324,6 +324,12 @@
         to match changes made in 4.64-PH/43


   PH/46 Applied Jori Hamalainen's patch to add features to exiqsumm.
  +
  +PH/47 Put in an explicit test for a DNS lookup of an address record where the
  +      "domain" is actually an IP address, and force a failure. This locks out
  +      those revolvers/nameservers that support "A-for-A" lookups, in
  +      contravention of the specifications.
  +





  Index: dns.c
  ===================================================================
  RCS file: /home/cvs/exim/exim-src/src/dns.c,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- dns.c    7 Nov 2006 14:13:19 -0000    1.15
  +++ dns.c    20 Nov 2006 13:53:44 -0000    1.16
  @@ -1,4 +1,4 @@
  -/* $Cambridge: exim/exim-src/src/dns.c,v 1.15 2006/11/07 14:13:19 ph10 Exp $ */
  +/* $Cambridge: exim/exim-src/src/dns.c,v 1.16 2006/11/20 13:53:44 ph10 Exp $ */


   /*************************************************
   *     Exim - an Internet mail transport agent    *
  @@ -453,6 +453,7 @@
   Returns:    DNS_SUCCEED   successful lookup
               DNS_NOMATCH   name not found (NXDOMAIN)
                             or name contains illegal characters (if checking)
  +                          or name is an IP address (for IP address lookup)
               DNS_NODATA    domain exists, but no data for this type (NODATA)
               DNS_AGAIN     soft failure, try again later
               DNS_FAIL      DNS failure
  @@ -539,7 +540,20 @@
   number of bytes the message would need, so we need to check for this case. The
   effect is to truncate overlong data.


  -If we are running in the test harness, instead of calling the normal resolver
  +On some systems, res_search() will recognize "A-for-A" queries and return
  +the IP address instead of returning -1 with h_error=HOST_NOT_FOUND. Some
  +nameservers are also believed to do this. It is, of course, contrary to the
  +specification of the DNS, so we lock it out. */
  +
  +if ((
  +    #ifdef SUPPORT_A6
  +    type == T_A6 ||
  +    #endif
  +    type == T_A || type == T_AAAA) &&
  +    string_is_ip_address(name, NULL) != 0)
  +  return DNS_NOMATCH;
  +
  +/* If we are running in the test harness, instead of calling the normal resolver
   (res_search), we call fakens_search(), which recognizes certain special
   domains, and interfaces to a fake nameserver for certain special zones. */