Fix another case of bad comparison between IPv6 addresses that may or
authorPhilip Hazel <ph10@hermes.cam.ac.uk>
Mon, 28 Nov 2005 10:07:55 +0000 (10:07 +0000)
committerPhilip Hazel <ph10@hermes.cam.ac.uk>
Mon, 28 Nov 2005 10:07:55 +0000 (10:07 +0000)
may not be abbreviated.

doc/doc-txt/ChangeLog
src/src/verify.c

index 75826bdaccfaa617c2e971b36f1659e613518508..a81309b3bf081531b5cf21c6abd01fc4c1e95877 100644 (file)
@@ -1,4 +1,4 @@
-$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.267 2005/11/21 12:04:23 ph10 Exp $
+$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.268 2005/11/28 10:07:55 ph10 Exp $
 
 Change log file for Exim from version 4.21
 -------------------------------------------
 
 Change log file for Exim from version 4.21
 -------------------------------------------
@@ -161,6 +161,11 @@ PH/19 Exim expands the IPv6 address given to -bh to its full non-abbreviated
       by converting both addresses to binary, so now that is used instead of
       the text comparison.
 
       by converting both addresses to binary, so now that is used instead of
       the text comparison.
 
+PH/20 There was another similar case to PH/19, when a complete host name was
+      given in a host list; looking up its IP address could give an abbreviated
+      form, whereas the current host's name might or might not be abbreviated.
+      The same fix has been applied.
+
 
 Exim version 4.54
 -----------------
 
 Exim version 4.54
 -----------------
index fb4382c2452ac3257251e7815e49bcce18ac73ba..b84044d0c06ea3874c626025dcde37ede2afded0 100644 (file)
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/verify.c,v 1.28 2005/11/21 10:24:02 ph10 Exp $ */
+/* $Cambridge: exim/src/src/verify.c,v 1.29 2005/11/28 10:07:55 ph10 Exp $ */
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
@@ -2109,9 +2109,7 @@ if (*t == 0)
     host_item *hh;
     for (hh = &h; hh != NULL; hh = hh->next)
       {
     host_item *hh;
     for (hh = &h; hh != NULL; hh = hh->next)
       {
-      if (Ustrcmp(hh->address, (Ustrchr(hh->address, ':') == NULL)?
-        cb->host_ipv4 : cb->host_address) == 0)
-          return OK;
+      if (host_is_in_net(hh->address, cb->host_address, 0)) return OK;
       }
     return FAIL;
     }
       }
     return FAIL;
     }