From owner-svn-ports-head@freebsd.org Tue Aug 25 22:31:17 2015 Return-Path: Delivered-To: svn-ports-head@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id E0D6E9C3E6D; Tue, 25 Aug 2015 22:31:16 +0000 (UTC) (envelope-from vsevolod@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id D117A693; Tue, 25 Aug 2015 22:31:16 +0000 (UTC) (envelope-from vsevolod@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.70]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id t7PMVGmW095012; Tue, 25 Aug 2015 22:31:16 GMT (envelope-from vsevolod@FreeBSD.org) Received: (from vsevolod@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id t7PMVGat095010; Tue, 25 Aug 2015 22:31:16 GMT (envelope-from vsevolod@FreeBSD.org) Message-Id: <201508252231.t7PMVGat095010@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: vsevolod set sender to vsevolod@FreeBSD.org using -f From: Vsevolod Stakhov Date: Tue, 25 Aug 2015 22:31:16 +0000 (UTC) To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r395319 - in head/mail/exim: . files X-SVN-Group: ports-head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-ports-head@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for the ports tree for head List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 25 Aug 2015 22:31:17 -0000 Author: vsevolod Date: Tue Aug 25 22:31:15 2015 New Revision: 395319 URL: https://svnweb.freebsd.org/changeset/ports/395319 Log: Import the patch to fix segfault during delivery from exim git [1]. [1]: https://bugs.exim.org/show_bug.cgi?id=1671 Added: head/mail/exim/files/patch-post-transport-crash (contents, props changed) Modified: head/mail/exim/Makefile Modified: head/mail/exim/Makefile ============================================================================== --- head/mail/exim/Makefile Tue Aug 25 22:24:02 2015 (r395318) +++ head/mail/exim/Makefile Tue Aug 25 22:31:15 2015 (r395319) @@ -3,6 +3,7 @@ PORTNAME= exim PORTVERSION?= ${EXIM_VERSION} +PORTREVISION= 1 CATEGORIES= mail ipv6 MASTER_SITES= EXIM/exim4/:exim DISTNAME= ${PORTNAME}-${EXIM_VERSION} Added: head/mail/exim/files/patch-post-transport-crash ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/mail/exim/files/patch-post-transport-crash Tue Aug 25 22:31:15 2015 (r395319) @@ -0,0 +1,82 @@ +diff --git src/deliver.c.orig src/src/deliver.c +index 0e7cea3..b5aa9b9 100644 +--- src/deliver.c.orig ++++ src/deliver.c +@@ -9,6 +9,7 @@ + + + #include "exim.h" ++#include + + + /* Data block for keeping track of subprocesses for parallel remote +@@ -7914,17 +7915,36 @@ if (!regex_IGNOREQUOTA) regex_IGNOREQUOTA = + uschar * + deliver_get_sender_address (uschar * id) + { ++int rc; ++uschar * new_sender_address, ++ * save_sender_address; ++ + if (!spool_open_datafile(id)) + return NULL; + ++/* Save and restore the global sender_address. I'm not sure if we should ++not save/restore all the other global variables too, because ++spool_read_header() may change all of them. But OTOH, when this ++deliver_get_sender_address() gets called, the current message is done ++already and nobody needs the globals anymore. (HS12, 2015-08-21) */ ++ + sprintf(CS spoolname, "%s-H", id); +-if (spool_read_header(spoolname, TRUE, TRUE) != spool_read_OK) ++save_sender_address = sender_address; ++ ++rc = spool_read_header(spoolname, TRUE, TRUE); ++ ++new_sender_address = sender_address; ++sender_address = save_sender_address; ++ ++if (rc != spool_read_OK) + return NULL; + ++assert(new_sender_address); ++ + (void)close(deliver_datafile); + deliver_datafile = -1; + +-return sender_address; ++return new_sender_address; + } + + /* vi: aw ai sw=2 +diff --git src/transports/smtp.c.orig src/transports/smtp.c +index 609dba3..c93f2ef 100644 +--- src/transports/smtp.c.orig ++++ src/transports/smtp.c +@@ -1274,14 +1274,19 @@ we will veto this new message. */ + static BOOL + smtp_are_same_identities(uschar * message_id, smtp_compare_t * s_compare) + { +-uschar * save_sender_address = sender_address; +-uschar * current_local_identity = ++ ++uschar * message_local_identity, ++ * current_local_identity, ++ * new_sender_address; ++ ++current_local_identity = + smtp_local_identity(s_compare->current_sender_address, s_compare->tblock); +-uschar * new_sender_address = deliver_get_sender_address(message_id); +-uschar * message_local_identity = +- smtp_local_identity(new_sender_address, s_compare->tblock); + +-sender_address = save_sender_address; ++if (!(new_sender_address = deliver_get_sender_address(message_id))) ++ return 0; ++ ++message_local_identity = ++ smtp_local_identity(new_sender_address, s_compare->tblock); + + return Ustrcmp(current_local_identity, message_local_identity) == 0; + } +