(1) Patch for radius problem. (2) Include config.h inside local_scan.h.
authorPhilip Hazel <ph10@hermes.cam.ac.uk>
Mon, 22 Aug 2005 10:49:04 +0000 (10:49 +0000)
committerPhilip Hazel <ph10@hermes.cam.ac.uk>
Mon, 22 Aug 2005 10:49:04 +0000 (10:49 +0000)
doc/doc-txt/ChangeLog
src/ACKNOWLEDGMENTS
src/src/auths/call_radius.c
src/src/exim.h
src/src/local_scan.h
src/src/verify.c

index 8297b97..7ab667a 100644 (file)
@@ -1,4 +1,4 @@
-$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.205 2005/08/16 12:35:12 tom Exp $
+$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.206 2005/08/22 10:49:04 ph10 Exp $
 
 Change log file for Exim from version 4.21
 -------------------------------------------
@@ -83,9 +83,26 @@ PH/21 Added support for host-specific ports to manualroute, queryprogram,
 PH/22 If the log selector "outgoing_port" is set, the port is now also given on
       host errors such as "Connection refused".
 
+PH/23 Applied a patch to fix problems with exim-4.52 while doing radius
+      authentication with radiusclient 0.4.9:
+
+      - Error returned from rc_read_config was caught wrongly
+      - Username/password not passed on to radius server due to wrong length.
+
+      The presumption is that some radiusclient API changes for 4.51/PH/17
+      were not taken care of correctly. The code is still untested by me (my
+      Linux distribution still has 0.3.2 of radiusclient), but it was
+      contributed by a Radius user.
+
+PH/24 When doing a callout, the value of $domain wasn't set correctly when
+      expanding the "port" option of the smtp transport.
+
 TK/04 MIME ACL: Fix buffer underrun that occurs when EOF condition is met
       while reading a MIME header. Thanks to Tom Hughes for a patch.
 
+PH/24 Include config.h inside local_scan.h so that configuration settings are
+      available.
+
 
 Exim version 4.52
 -----------------
index c8b4d50..cd9c597 100644 (file)
@@ -1,4 +1,4 @@
-$Cambridge: exim/src/ACKNOWLEDGMENTS,v 1.30 2005/08/02 11:22:23 ph10 Exp $
+$Cambridge: exim/src/ACKNOWLEDGMENTS,v 1.31 2005/08/22 10:49:04 ph10 Exp $
 
 EXIM ACKNOWLEDGEMENTS
 
@@ -208,6 +208,7 @@ Peter Savitch             Diagnosis of FPE bug when statvfs() fails on spool
 Harald Schueler           Patch for dn_expand() failure on truncated data
 Heiko Schlichting         Diagnosis of intermittent daemon crash bug
 Stephan Schulz            Patch for $host_data caching error
+Lai Zit Seng              Patch for radiusclient 0.4.9 interface bugs
 Tony Sheen                Log files with datestamped names and auto rollover
 Martin Sluka              Patch for exigrep to include non-message lines
 Adam Stephens             Suggested patch for IGNOREQUOTA in LMTP
index a202376..8161642 100644 (file)
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/auths/call_radius.c,v 1.3 2005/03/29 14:19:21 ph10 Exp $ */
+/* $Cambridge: exim/src/src/auths/call_radius.c,v 1.4 2005/08/22 10:49:04 ph10 Exp $ */
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
@@ -113,16 +113,17 @@ else if (rc_avpair_add(&send, PW_SERVICE_TYPE, &service, 0) == NULL)
 
 #else  /* RADIUS_LIB_RADIUSCLIENT unset => RADIUS_LIB_RADIUSCLIENT2 */
 
-if ((h = rc_read_config(RADIUS_CONFIG_FILE)) != 0)
+if ((h = rc_read_config(RADIUS_CONFIG_FILE)) == NULL)
   *errptr = string_sprintf("RADIUS: can't open %s", RADIUS_CONFIG_FILE);
 
 else if (rc_read_dictionary(h, rc_conf_str(h, "dictionary")) != 0)
   *errptr = string_sprintf("RADIUS: can't read dictionary");
 
-else if (rc_avpair_add(h, &send, PW_USER_NAME, user, 0, 0) == NULL)
+else if (rc_avpair_add(h, &send, PW_USER_NAME, user, Ustrlen(user), 0) == NULL)
   *errptr = string_sprintf("RADIUS: add user name failed\n");
 
-else if (rc_avpair_add(h, &send, PW_USER_PASSWORD, CS radius_args, 0, 0) == NULL)
+else if (rc_avpair_add(h, &send, PW_USER_PASSWORD, CS radius_args,
+    Ustrlen(radius_args), 0) == NULL)
   *errptr = string_sprintf("RADIUS: add password failed\n");
 
 else if (rc_avpair_add(h, &send, PW_SERVICE_TYPE, &service, 0, 0) == NULL)
index 85571f6..f1f4bce 100644 (file)
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/exim.h,v 1.17 2005/06/29 10:56:35 ph10 Exp $ */
+/* $Cambridge: exim/src/src/exim.h,v 1.18 2005/08/22 10:49:04 ph10 Exp $ */
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
@@ -417,9 +417,8 @@ extern int ferror(FILE *);
 #include "pcre/pcre.h"
 
 /* Exim includes are in several files. Note that local_scan.h #includes
-mytypes.h and store.h, so we don't need to mention them explicitly. */
-
-#include "config.h"
+config.h, mytypes.h, and store.h, so we don't need to mention them explicitly.
+*/
 
 #include "local_scan.h"
 #include "macros.h"
index fdc73be..627a3c5 100644 (file)
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/local_scan.h,v 1.4 2005/03/22 14:11:54 ph10 Exp $ */
+/* $Cambridge: exim/src/src/local_scan.h,v 1.5 2005/08/22 10:49:04 ph10 Exp $ */
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
@@ -14,9 +14,11 @@ available for use in that function, and which are documented.
 This API is also used for functions called by the ${dlfunc expansion item. */
 
 
-/* Some basic types that make some things easier, and the store functions. */
+/* Some basic types that make some things easier, the Exim configuration
+settings, and the store functions. */
 
 #include <sys/types.h>
+#include "config.h"
 #include "mytypes.h"
 #include "store.h"
 
index 5852aa2..c35571e 100644 (file)
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/verify.c,v 1.24 2005/08/01 13:20:28 ph10 Exp $ */
+/* $Cambridge: exim/src/src/verify.c,v 1.25 2005/08/22 10:49:04 ph10 Exp $ */
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
@@ -152,6 +152,7 @@ BOOL done = FALSE;
 uschar *address_key;
 uschar *from_address;
 uschar *random_local_part = NULL;
+uschar *save_deliver_domain = deliver_domain;
 uschar **failure_ptr = is_recipient?
   &recipient_verify_failure : &sender_verify_failure;
 open_db dbblock;
@@ -415,12 +416,14 @@ for (host = host_list; host != NULL && !done; host = host->next)
 
   deliver_host = host->name;
   deliver_host_address = host->address;
+  deliver_domain = addr->domain;
   if (!smtp_get_interface(tf->interface, host_af, addr, NULL, &interface,
           US"callout") ||
       !smtp_get_port(tf->port, addr, &port, US"callout"))
     log_write(0, LOG_MAIN|LOG_PANIC, "<%s>: %s", addr->address,
       addr->message);
   deliver_host = deliver_host_address = NULL;
+  deliver_domain = save_deliver_domain;
 
   /* Set HELO string according to the protocol */
 
@@ -1053,13 +1056,16 @@ while (addr_new != NULL)
         if (tf.hosts != NULL && (host_list == NULL || tf.hosts_override))
           {
           uschar *s;
+          uschar *save_deliver_domain = deliver_domain;
+          uschar *save_deliver_localpart = deliver_localpart;
 
           host_list = NULL;    /* Ignore the router's hosts */
 
           deliver_domain = addr->domain;
           deliver_localpart = addr->local_part;
           s = expand_string(tf.hosts);
-          deliver_domain = deliver_localpart = NULL;
+          deliver_domain = save_deliver_domain;
+          deliver_localpart = save_deliver_localpart;
 
           if (s == NULL)
             {