postfix-2.9-patch04.txt   [plain text]


Prereq: "2.9.3"
diff -cr --new-file /var/tmp/postfix-2.9.3/src/global/mail_version.h ./src/global/mail_version.h
*** /var/tmp/postfix-2.9.3/src/global/mail_version.h	Sun May 20 18:24:22 2012
--- ./src/global/mail_version.h	Wed Aug  1 17:48:05 2012
***************
*** 20,27 ****
    * Patches change both the patchlevel and the release date. Snapshots have no
    * patchlevel; they change the release date only.
    */
! #define MAIL_RELEASE_DATE	"20120520"
! #define MAIL_VERSION_NUMBER	"2.9.3"
  
  #ifdef SNAPSHOT
  # define MAIL_VERSION_DATE	"-" MAIL_RELEASE_DATE
--- 20,27 ----
    * Patches change both the patchlevel and the release date. Snapshots have no
    * patchlevel; they change the release date only.
    */
! #define MAIL_RELEASE_DATE	"20120801"
! #define MAIL_VERSION_NUMBER	"2.9.4"
  
  #ifdef SNAPSHOT
  # define MAIL_VERSION_DATE	"-" MAIL_RELEASE_DATE
diff -cr --new-file /var/tmp/postfix-2.9.3/HISTORY ./HISTORY
*** /var/tmp/postfix-2.9.3/HISTORY	Sun May 20 18:04:07 2012
--- ./HISTORY	Wed Aug  1 17:33:29 2012
***************
*** 17701,17703 ****
--- 17701,17720 ----
  	command must wait until its requests have reached the pickup
  	and qmgr servers before closing the UNIX-domain request
  	sockets.  Files: postqueue/postqueue.c, postqueue/Makefile.in.
+ 
+ 20120621
+ 
+ 	Bugfix (introduced: Postfix 2.8): the unused "pass" trigger
+ 	client could close the wrong file descriptors.  File:
+ 	util/unix_pass_trigger.c.
+ 
+ 20120702
+ 
+ 	Bugfix (introduced: 19990127): the BIFF client leaked an
+ 	unprivileged UDP socket. Fix by Jaroslav Skarvada.  File:
+ 	local/biff_notify.c.
+ 
+ 20120730
+ 
+ 	Bugfix (introduced: 20000314): AUTH is not allowed after
+ 	MAIL. Timo Sirainen.  File: smtpd/smtpd_sasl_proto.c.
diff -cr --new-file /var/tmp/postfix-2.9.3/src/local/biff_notify.c ./src/local/biff_notify.c
*** /var/tmp/postfix-2.9.3/src/local/biff_notify.c	Wed Jul 13 16:46:18 2005
--- ./src/local/biff_notify.c	Thu Jul  5 12:56:30 2012
***************
*** 43,48 ****
--- 43,49 ----
  /* Utility library. */
  
  #include <msg.h>
+ #include <iostuff.h>
  
  /* Application-specific. */
  
***************
*** 81,89 ****
      /*
       * Open a socket, or re-use an existing one.
       */
!     if (sock < 0 && (sock = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
! 	msg_warn("socket: %m");
! 	return;
      }
  
      /*
--- 82,93 ----
      /*
       * Open a socket, or re-use an existing one.
       */
!     if (sock < 0) {
! 	if ((sock = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
! 	    msg_warn("socket: %m");
! 	    return;
! 	}
! 	close_on_exec(sock, CLOSE_ON_EXEC);
      }
  
      /*
diff -cr --new-file /var/tmp/postfix-2.9.3/src/smtpd/smtpd_sasl_proto.c ./src/smtpd/smtpd_sasl_proto.c
*** /var/tmp/postfix-2.9.3/src/smtpd/smtpd_sasl_proto.c	Sun Dec 18 20:22:45 2011
--- ./src/smtpd/smtpd_sasl_proto.c	Wed Aug  1 17:23:15 2012
***************
*** 164,169 ****
--- 164,175 ----
  	smtpd_chat_reply(state, "503 5.5.1 Error: authentication not enabled");
  	return (-1);
      }
+ #define IN_MAIL_TRANSACTION(state) ((state)->sender != 0)
+     if (IN_MAIL_TRANSACTION(state)) {
+ 	state->error_mask |= MAIL_ERROR_PROTOCOL;
+ 	smtpd_chat_reply(state, "503 5.5.1 Error: MAIL transaction in progress");
+ 	return (-1);
+     }
      if (smtpd_milters != 0 && (err = milter_other_event(smtpd_milters)) != 0) {
  	if (err[0] == '5') {
  	    state->error_mask |= MAIL_ERROR_POLICY;
diff -cr --new-file /var/tmp/postfix-2.9.3/src/util/unix_pass_trigger.c ./src/util/unix_pass_trigger.c
*** /var/tmp/postfix-2.9.3/src/util/unix_pass_trigger.c	Sun Jan  9 19:43:52 2011
--- ./src/util/unix_pass_trigger.c	Thu Jun 21 09:41:58 2012
***************
*** 63,69 ****
  struct unix_pass_trigger {
      int     fd;
      char   *service;
!     int    *pair;
  };
  
  /* unix_pass_trigger_event - disconnect from peer */
--- 63,69 ----
  struct unix_pass_trigger {
      int     fd;
      char   *service;
!     int     pair[2];
  };
  
  /* unix_pass_trigger_event - disconnect from peer */
***************
*** 129,135 ****
      up = (struct unix_pass_trigger *) mymalloc(sizeof(*up));
      up->fd = fd;
      up->service = mystrdup(service);
!     up->pair = pair;
  
      /*
       * Write the request...
--- 129,136 ----
      up = (struct unix_pass_trigger *) mymalloc(sizeof(*up));
      up->fd = fd;
      up->service = mystrdup(service);
!     up->pair[0] = pair[0];
!     up->pair[1] = pair[1];
  
      /*
       * Write the request...