diff options
author | 2005-01-08 19:09:19 +0000 | |
---|---|---|
committer | 2005-01-08 19:09:19 +0000 | |
commit | 61328d76a982a32e7558102b3984bbaf675c919d (patch) | |
tree | 6b85c14af8fcc1d6c5a973a350bc88668007a7f7 /mail-mta/exim/files | |
parent | Initial commit. Thanks to Olivier Rolland in bug #72041. (diff) | |
download | historical-61328d76a982a32e7558102b3984bbaf675c919d.tar.gz historical-61328d76a982a32e7558102b3984bbaf675c919d.tar.bz2 historical-61328d76a982a32e7558102b3984bbaf675c919d.zip |
Big year change in copyright, also a number of bug fixes, see changelog for more details
Diffstat (limited to 'mail-mta/exim/files')
-rw-r--r-- | mail-mta/exim/files/digest-exim-4.43-r2 | 2 | ||||
-rw-r--r-- | mail-mta/exim/files/exim-4.43-r2-host_aton-buff.patch | 191 | ||||
-rw-r--r-- | mail-mta/exim/files/exim-4.43-r2-localscan_dlopen.patch | 259 | ||||
-rw-r--r-- | mail-mta/exim/files/exim.rc6 | 4 |
4 files changed, 454 insertions, 2 deletions
diff --git a/mail-mta/exim/files/digest-exim-4.43-r2 b/mail-mta/exim/files/digest-exim-4.43-r2 new file mode 100644 index 000000000000..5deaf298b99b --- /dev/null +++ b/mail-mta/exim/files/digest-exim-4.43-r2 @@ -0,0 +1,2 @@ +MD5 f8f646d4920660cb5579becd9265a3bf exim-4.43.tar.bz2 1388183 +MD5 5363ec73d6c3f9b5c8c87b246027cbf7 exiscan-acl-4.43-28.patch 440225 diff --git a/mail-mta/exim/files/exim-4.43-r2-host_aton-buff.patch b/mail-mta/exim/files/exim-4.43-r2-host_aton-buff.patch new file mode 100644 index 000000000000..bf69b49c6ea6 --- /dev/null +++ b/mail-mta/exim/files/exim-4.43-r2-host_aton-buff.patch @@ -0,0 +1,191 @@ +*** src/lookups/dnsdb.c Tue Oct 5 09:32:08 2004 +- --- dnsdb.c Wed Dec 29 09:36:13 2004 +*************** +*** 125,131 **** + /* If the type is PTR, we have to construct the relevant magic lookup + key. This code is now in a separate function. */ + +! if (type == T_PTR) + { + dns_build_reverse(keystring, buffer); + keystring = buffer; +- --- 125,131 ---- + /* If the type is PTR, we have to construct the relevant magic lookup + key. This code is now in a separate function. */ + +! if (type == T_PTR && string_is_ip_address(keystring, NULL)) + { + dns_build_reverse(keystring, buffer); + keystring = buffer; +*** src/host.c Tue Oct 5 09:32:08 2004 +- --- host.c Wed Dec 29 09:43:17 2004 +*************** +*** 710,721 **** + + if (*p == ':') p++; + +! /* Split the address into components separated by colons. */ + + while (*p != 0) + { + int len = Ustrcspn(p, ":"); + if (len == 0) nulloffset = ci; + component[ci++] = p; + p += len; + if (*p == ':') p++; +- --- 754,771 ---- + + if (*p == ':') p++; + +! /* Split the address into components separated by colons. The input address +! is supposed to be checked for syntax. There was a case where this was +! overlooked; to guard against that happening again, check here and crash if +! there is a violation. */ + + while (*p != 0) + { + int len = Ustrcspn(p, ":"); + if (len == 0) nulloffset = ci; ++ if (ci > 7) log_write(0, LOG_MAIN|LOG_PANIC_DIE, ++ "Internal error: invalid IPv6 address \"%s\" passed to host_aton()", ++ address); + component[ci++] = p; + p += len; + if (*p == ':') p++; +*** src/auths/auth-spa.c Tue Oct 5 09:32:08 2004 +- --- auth-spa.c Wed Dec 29 10:55:58 2004 +*************** +*** 404,411 **** + *out = '\0'; + } + + int +! spa_base64_to_bits (char *out, const char *in) + /* base 64 to raw bytes in quasi-big-endian order, returning count of bytes */ + { + int len = 0; +- --- 406,416 ---- + *out = '\0'; + } + ++ ++ /* The outlength parameter was added by PH, December 2004 */ ++ + int +! spa_base64_to_bits (char *out, int outlength, const char *in) + /* base 64 to raw bytes in quasi-big-endian order, returning count of bytes */ + { + int len = 0; +*************** +*** 418,423 **** +- --- 423,430 ---- + + do + { ++ if (len >= outlength) /* Added by PH */ ++ return (-1); /* Added by PH */ + digit1 = in[0]; + if (DECODE64 (digit1) == BAD) + return (-1); +*************** +*** 435,445 **** +- --- 442,456 ---- + ++len; + if (digit3 != '=') + { ++ if (len >= outlength) /* Added by PH */ ++ return (-1); /* Added by PH */ + *out++ = + ((DECODE64 (digit2) << 4) & 0xf0) | (DECODE64 (digit3) >> 2); + ++len; + if (digit4 != '=') + { ++ if (len >= outlength) /* Added by PH */ ++ return (-1); /* Added by PH */ + *out++ = ((DECODE64 (digit3) << 6) & 0xc0) | DECODE64 (digit4); + ++len; + } +*** src/auths/auth-spa.h Tue Oct 5 09:32:08 2004 +- --- auth-spa.h Wed Dec 29 10:55:58 2004 +*************** +*** 9,14 **** +- --- 11,19 ---- + * All the code used here was torn by Marc Prud'hommeaux out of the + * Samba project (by Andrew Tridgell, Jeremy Allison, and others). + */ ++ ++ /* December 2004: The spa_base64_to_bits() function has no length checking in ++ it. I have added a check. PH */ + + /* It seems that some systems have existing but different definitions of some + of the following types. I received a complaint about "int16" causing +*************** +*** 75,81 **** + #define spa_request_length(ptr) (((ptr)->buffer - (uint8x*)(ptr)) + (ptr)->bufIndex) + + void spa_bits_to_base64 (unsigned char *, const unsigned char *, int); +! int spa_base64_to_bits(char *, const char *); + void spa_build_auth_response (SPAAuthChallenge *challenge, + SPAAuthResponse *response, char *user, char *password); + void spa_build_auth_request (SPAAuthRequest *request, char *user, +- --- 80,86 ---- + #define spa_request_length(ptr) (((ptr)->buffer - (uint8x*)(ptr)) + (ptr)->bufIndex) + + void spa_bits_to_base64 (unsigned char *, const unsigned char *, int); +! int spa_base64_to_bits(char *, int, const char *); + void spa_build_auth_response (SPAAuthChallenge *challenge, + SPAAuthResponse *response, char *user, char *password); + void spa_build_auth_request (SPAAuthRequest *request, char *user, +*** src/auths/spa.c Tue Oct 5 09:32:08 2004 +- --- spa.c Wed Dec 29 10:55:58 2004 +*************** +*** 133,139 **** + return FAIL; + } + +! if (spa_base64_to_bits((char *)(&request), (const char *)(data)) < 0) + { + DEBUG(D_auth) debug_printf("auth_spa_server(): bad base64 data in " + "request: %s\n", data); +- --- 135,141 ---- + return FAIL; + } + +! if (spa_base64_to_bits((char *)(&request), sizeof(request), (const char *)(data)) < 0) + { + DEBUG(D_auth) debug_printf("auth_spa_server(): bad base64 data in " + "request: %s\n", data); +*************** +*** 153,159 **** + } + + /* dump client response */ +! if (spa_base64_to_bits((char *)(&response), (const char *)(data)) < 0) + { + DEBUG(D_auth) debug_printf("auth_spa_server(): bad base64 data in " + "response: %s\n", data); +- --- 155,161 ---- + } + + /* dump client response */ +! if (spa_base64_to_bits((char *)(&response), sizeof(response), (const char *)(data)) < 0) + { + DEBUG(D_auth) debug_printf("auth_spa_server(): bad base64 data in " + "response: %s\n", data); +*************** +*** 319,325 **** + /* convert the challenge into the challenge struct */ + DSPA("\n\n%s authenticator: challenge (%s)\n\n", + ablock->name, buffer + 4); +! spa_base64_to_bits ((char *)(&challenge), (const char *)(buffer + 4)); + + spa_build_auth_response (&challenge, &response, + CS username, CS password); +- --- 324,330 ---- + /* convert the challenge into the challenge struct */ + DSPA("\n\n%s authenticator: challenge (%s)\n\n", + ablock->name, buffer + 4); +! spa_base64_to_bits ((char *)(&challenge), sizeof(challenge), (const char *)(buffer + 4)); + + spa_build_auth_response (&challenge, &response, + CS username, CS password); diff --git a/mail-mta/exim/files/exim-4.43-r2-localscan_dlopen.patch b/mail-mta/exim/files/exim-4.43-r2-localscan_dlopen.patch new file mode 100644 index 000000000000..146606a1fd0c --- /dev/null +++ b/mail-mta/exim/files/exim-4.43-r2-localscan_dlopen.patch @@ -0,0 +1,259 @@ +diff -Naur exim-4.32/src/EDITME exim-4.32-dlopen/src/EDITME +--- src/EDITME 2004-04-15 08:27:01.000000000 +0000 ++++ src/EDITME 2004-05-06 16:15:47.000000000 +0000 +@@ -505,6 +505,21 @@ + + + #------------------------------------------------------------------------------ ++# On systems which support dynamic loading of shared libraries, Exim can ++# load a local_scan function specified in its config file instead of having ++# to be recompiled with the desired local_scan function. For a full ++# description of the API to this function, see the Exim specification. ++ ++DLOPEN_LOCAL_SCAN=yes ++ ++# If you set DLOPEN_LOCAL_SCAN, then you need to include -rdynamic in the ++# linker flags. Without it, the loaded .so won't be able to access any ++# functions from exim. ++ ++LFLAGS=-rdynamic -ldl ++ ++ ++#------------------------------------------------------------------------------ + # The default distribution of Exim contains only the plain text form of the + # documentation. Other forms are available separately. If you want to install + # the documentation in "info" format, first fetch the Texinfo documentation +diff -Naur exim-4.32/src/config.h.defaults exim-4.32-dlopen/src/config.h.defaults +--- src/config.h.defaults 2004-04-15 08:27:01.000000000 +0000 ++++ src/config.h.defaults 2004-05-06 16:16:30.000000000 +0000 +@@ -20,6 +20,8 @@ + #define AUTH_PLAINTEXT + #define AUTH_SPA + ++#define DLOPEN_LOCAL_SCAN ++ + #define BIN_DIRECTORY + + #define CONFIGURE_FILE +diff -Naur exim-4.32/src/globals.c exim-4.32-dlopen/src/globals.c +--- src/globals.c 2004-04-15 08:27:01.000000000 +0000 ++++ src/globals.c 2004-05-06 16:17:07.000000000 +0000 +@@ -109,6 +109,10 @@ + uschar *tls_verify_hosts = NULL; + #endif + ++#ifdef DLOPEN_LOCAL_SCAN ++uschar *local_scan_path = NULL; ++#endif ++ + + /* Input-reading functions for messages, so we can use special ones for + incoming TCP/IP. The defaults use stdin. We never need these for any +diff -Naur exim-4.32/src/globals.h exim-4.32-dlopen/src/globals.h +--- src/globals.h 2004-04-15 08:27:01.000000000 +0000 ++++ src/globals.h 2004-05-06 16:17:50.000000000 +0000 +@@ -73,6 +73,9 @@ + extern uschar *tls_verify_hosts; /* Mandatory client verification */ + #endif + ++#ifdef DLOPEN_LOCAL_SCAN ++extern uschar *local_scan_path; /* Path to local_scan() library */ ++#endif + + /* Input-reading functions for messages, so we can use special ones for + incoming TCP/IP. */ +diff -Naur exim-4.32/src/local_scan.c exim-4.32-dlopen/src/local_scan.c +--- src/local_scan.c 2004-04-15 08:27:01.000000000 +0000 ++++ src/local_scan.c 2004-05-06 16:21:57.000000000 +0000 +@@ -5,60 +5,131 @@ + /* Copyright (c) University of Cambridge 1995 - 2004 */ + /* See the file NOTICE for conditions of use and distribution. */ + ++#include "exim.h" + +-/****************************************************************************** +-This file contains a template local_scan() function that just returns ACCEPT. +-If you want to implement your own version, you should copy this file to, say +-Local/local_scan.c, and edit the copy. To use your version instead of the +-default, you must set +- +-LOCAL_SCAN_SOURCE=Local/local_scan.c +- +-in your Local/Makefile. This makes it easy to copy your version for use with +-subsequent Exim releases. +- +-For a full description of the API to this function, see the Exim specification. +-******************************************************************************/ +- +- +-/* This is the only Exim header that you should include. The effect of +-including any other Exim header is not defined, and may change from release to +-release. Use only the documented interface! */ +- +-#include "local_scan.h" +- +- +-/* This is a "do-nothing" version of a local_scan() function. The arguments +-are: +- +- fd The file descriptor of the open -D file, which contains the +- body of the message. The file is open for reading and +- writing, but modifying it is dangerous and not recommended. +- +- return_text A pointer to an unsigned char* variable which you can set in +- order to return a text string. It is initialized to NULL. +- +-The return values of this function are: +- +- LOCAL_SCAN_ACCEPT +- The message is to be accepted. The return_text argument is +- saved in $local_scan_data. +- +- LOCAL_SCAN_REJECT +- The message is to be rejected. The returned text is used +- in the rejection message. +- +- LOCAL_SCAN_TEMPREJECT +- This specifies a temporary rejection. The returned text +- is used in the rejection message. +-*/ ++#ifdef DLOPEN_LOCAL_SCAN ++#include <dlfcn.h> ++static int (*local_scan_fn)(int fd, uschar **return_text) = NULL; ++static int load_local_scan_library(void); ++#endif + + int + local_scan(int fd, uschar **return_text) + { + fd = fd; /* Keep picky compilers happy */ + return_text = return_text; +-return LOCAL_SCAN_ACCEPT; ++#ifdef DLOPEN_LOCAL_SCAN ++/* local_scan_path is defined AND not the empty string */ ++if (local_scan_path && *local_scan_path) ++ { ++ if (!local_scan_fn) ++ { ++ if (!load_local_scan_library()) ++ { ++ char *base_msg , *error_msg , *final_msg ; ++ int final_length = -1 ; ++ ++ base_msg=US"Local configuration error - local_scan() library failure\n"; ++ error_msg = dlerror() ; ++ ++ final_length = strlen(base_msg) + strlen(error_msg) + 1 ; ++ final_msg = (char*)malloc( final_length*sizeof(char) ) ; ++ *final_msg = '\0' ; ++ ++ strcat( final_msg , base_msg ) ; ++ strcat( final_msg , error_msg ) ; ++ ++ *return_text = final_msg ; ++ return LOCAL_SCAN_TEMPREJECT; ++ } ++ } ++ return local_scan_fn(fd, return_text); ++ } ++else ++#endif ++ return LOCAL_SCAN_ACCEPT; ++} ++ ++#ifdef DLOPEN_LOCAL_SCAN ++ ++static int load_local_scan_library(void) ++{ ++/* No point in keeping local_scan_lib since we'll never dlclose() anyway */ ++void *local_scan_lib = NULL; ++int (*local_scan_version_fn)(void); ++int vers_maj; ++int vers_min; ++ ++local_scan_lib = dlopen(local_scan_path, RTLD_NOW); ++if (!local_scan_lib) ++ { ++ log_write(0, LOG_MAIN|LOG_REJECT, "local_scan() library open failed - " ++ "message temporarily rejected"); ++ return FALSE; ++ } ++ ++local_scan_version_fn = dlsym(local_scan_lib, "local_scan_version_major"); ++if (!local_scan_version_fn) ++ { ++ dlclose(local_scan_lib); ++ log_write(0, LOG_MAIN|LOG_REJECT, "local_scan() library doesn't contain " ++ "local_scan_version_major() function - message temporarily rejected"); ++ return FALSE; ++ } ++ ++/* The major number is increased when the ABI is changed in a non ++ backward compatible way. */ ++vers_maj = local_scan_version_fn(); ++ ++local_scan_version_fn = dlsym(local_scan_lib, "local_scan_version_minor"); ++if (!local_scan_version_fn) ++ { ++ dlclose(local_scan_lib); ++ log_write(0, LOG_MAIN|LOG_REJECT, "local_scan() library doesn't contain " ++ "local_scan_version_minor() function - message temporarily rejected"); ++ return FALSE; ++ } ++ ++/* The minor number is increased each time a new feature is added (in a ++ way that doesn't break backward compatibility) -- Marc */ ++vers_min = local_scan_version_fn(); ++ ++ ++if (vers_maj != LOCAL_SCAN_ABI_VERSION_MAJOR) ++ { ++ dlclose(local_scan_lib); ++ local_scan_lib = NULL; ++ log_write(0, LOG_MAIN|LOG_REJECT, "local_scan() has an incompatible major" ++ "version number, you need to recompile your module for this version" ++ "of exim (The module was compiled for version %d.%d and this exim provides" ++ "ABI version %d.%d)", vers_maj, vers_min, LOCAL_SCAN_ABI_VERSION_MAJOR, ++ LOCAL_SCAN_ABI_VERSION_MINOR); ++ return FALSE; ++ } ++else if (vers_min > LOCAL_SCAN_ABI_VERSION_MINOR) ++ { ++ dlclose(local_scan_lib); ++ local_scan_lib = NULL; ++ log_write(0, LOG_MAIN|LOG_REJECT, "local_scan() has an incompatible minor" ++ "version number, you need to recompile your module for this version" ++ "of exim (The module was compiled for version %d.%d and this exim provides" ++ "ABI version %d.%d)", vers_maj, vers_min, LOCAL_SCAN_ABI_VERSION_MAJOR, ++ LOCAL_SCAN_ABI_VERSION_MINOR); ++ return FALSE; ++ } ++ ++local_scan_fn = dlsym(local_scan_lib, "local_scan"); ++if (!local_scan_fn) ++ { ++ dlclose(local_scan_lib); ++ log_write(0, LOG_MAIN|LOG_REJECT, "local_scan() library doesn't contain " ++ "local_scan() function - message temporarily rejected"); ++ return FALSE; ++ } ++ ++return TRUE; + } + ++#endif /* DLOPEN_LOCAL_SCAN */ ++ + /* End of local_scan.c */ +diff -Naur exim-4.32/src/readconf.c exim-4.32-dlopen/src/readconf.c +--- src/readconf.c 2004-04-15 08:27:01.000000000 +0000 ++++ src/readconf.c 2004-05-06 16:23:12.000000000 +0000 +@@ -223,6 +223,9 @@ + { "local_from_prefix", opt_stringptr, &local_from_prefix }, + { "local_from_suffix", opt_stringptr, &local_from_suffix }, + { "local_interfaces", opt_stringptr, &local_interfaces }, ++#ifdef DLOPEN_LOCAL_SCAN ++ { "local_scan_path", opt_stringptr, &local_scan_path }, ++#endif + { "local_scan_timeout", opt_time, &local_scan_timeout }, + { "local_sender_retain", opt_bool, &local_sender_retain }, + { "localhost_number", opt_stringptr, &host_number_string }, diff --git a/mail-mta/exim/files/exim.rc6 b/mail-mta/exim/files/exim.rc6 index e858463a87e0..ac162940842a 100644 --- a/mail-mta/exim/files/exim.rc6 +++ b/mail-mta/exim/files/exim.rc6 @@ -1,7 +1,7 @@ #!/sbin/runscript # Copyright 1999-2004 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/mail-mta/exim/files/exim.rc6,v 1.2 2004/07/14 22:31:04 agriffis Exp $ +# $Header: /var/cvsroot/gentoo-x86/mail-mta/exim/files/exim.rc6,v 1.3 2005/01/08 19:09:19 peitolm Exp $ depend() { need logger net @@ -16,6 +16,6 @@ start() { stop() { ebegin "Stopping exim" - start-stop-daemon --stop --quiet --exec /usr/sbin/exim + start-stop-daemon --stop --quiet --pidfile /var/run/exim.pid --name exim eend $? } |