From 750af86e830d828a4fbbed17a5b248503fdf1f54 Mon Sep 17 00:00:00 2001 From: Philip Hazel Date: Mon, 22 Aug 2005 10:49:04 +0000 Subject: [PATCH] (1) Patch for radius problem. (2) Include config.h inside local_scan.h. --- doc/doc-txt/ChangeLog | 19 ++++++++++++++++++- src/ACKNOWLEDGMENTS | 3 ++- src/src/auths/call_radius.c | 9 +++++---- src/src/exim.h | 7 +++---- src/src/local_scan.h | 6 ++++-- src/src/verify.c | 10 ++++++++-- 6 files changed, 40 insertions(+), 14 deletions(-) diff --git a/doc/doc-txt/ChangeLog b/doc/doc-txt/ChangeLog index 8297b97c1..7ab667a28 100644 --- a/doc/doc-txt/ChangeLog +++ b/doc/doc-txt/ChangeLog @@ -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 ----------------- diff --git a/src/ACKNOWLEDGMENTS b/src/ACKNOWLEDGMENTS index c8b4d505c..cd9c597d0 100644 --- a/src/ACKNOWLEDGMENTS +++ b/src/ACKNOWLEDGMENTS @@ -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 diff --git a/src/src/auths/call_radius.c b/src/src/auths/call_radius.c index a20237689..816164253 100644 --- a/src/src/auths/call_radius.c +++ b/src/src/auths/call_radius.c @@ -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) diff --git a/src/src/exim.h b/src/src/exim.h index 85571f62f..f1f4bcee9 100644 --- a/src/src/exim.h +++ b/src/src/exim.h @@ -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" diff --git a/src/src/local_scan.h b/src/src/local_scan.h index fdc73bed5..627a3c588 100644 --- a/src/src/local_scan.h +++ b/src/src/local_scan.h @@ -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 +#include "config.h" #include "mytypes.h" #include "store.h" diff --git a/src/src/verify.c b/src/src/verify.c index 5852aa293..c35571e6f 100644 --- a/src/src/verify.c +++ b/src/src/verify.c @@ -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) { -- 2.25.1