[packages/postfix] - updated ident patch

baggins baggins at pld-linux.org
Mon Jun 24 19:40:30 CEST 2013


commit 8dedada003d45af0c0b0c6a38c9170e5c4d2736e
Author: Jan Rękorajski <baggins at pld-linux.org>
Date:   Mon Jun 24 19:40:06 2013 +0200

    - updated ident patch

 postfix-ident.patch | 120 ++++++++++++++++++++++++++++------------------------
 1 file changed, 64 insertions(+), 56 deletions(-)
---
diff --git a/postfix-ident.patch b/postfix-ident.patch
index 42193e7..25fbeaa 100644
--- a/postfix-ident.patch
+++ b/postfix-ident.patch
@@ -253,7 +253,7 @@ diff -urN -x '*~' postfix-2.2.5/src/smtpd/smtpd_ident.c postfix-2.2.5-ident/src/
  	VAR_REJECT_TMPF_ACT, DEF_REJECT_TMPF_ACT, &var_reject_tmpf_act, 1, 0,
 --- postfix-2.9.0/src/smtpd/smtpd_peer.c.orig	2012-02-04 19:34:17.294233547 +0100
 +++ postfix-2.9.0/src/smtpd/smtpd_peer.c	2012-02-04 19:40:48.203777370 +0100
-@@ -98,6 +98,7 @@
+@@ -103,6 +103,7 @@
  
  #include <sys_defs.h>
  #include <sys/socket.h>
@@ -261,7 +261,7 @@ diff -urN -x '*~' postfix-2.2.5/src/smtpd/smtpd_ident.c postfix-2.2.5-ident/src/
  #include <netinet/in.h>
  #include <arpa/inet.h>
  #include <stdio.h>			/* strerror() */
-@@ -117,6 +118,7 @@
+@@ -123,6 +124,7 @@
  
  /* Global library. */
  
@@ -269,71 +269,79 @@ diff -urN -x '*~' postfix-2.2.5/src/smtpd/smtpd_ident.c postfix-2.2.5-ident/src/
  #include <mail_proto.h>
  #include <valid_mailhost_addr.h>
  #include <mail_params.h>
-@@ -125,6 +127,8 @@
-     }
- }
+@@ -132,6 +134,8 @@
+ 
+ #include "smtpd.h"
  
 +extern NAMADR_LIST *smtpd_ident_lookup;
 +
- /* smtpd_peer_init - initialize peer information */
- 
- void    smtpd_peer_init(SMTPD_STATE *state)
-@@ -132,6 +136,9 @@
-     const char *myname = "smtpd_peer_init";
-     SOCKADDR_SIZE sa_length;
-     struct sockaddr *sa;
-+    struct sockaddr_in serv_sin;
-+    char *ident_user = NULL;
-+    SOCKADDR_SIZE sa_len;
-     INET_PROTO_INFO *proto_info = inet_proto_info();
- 
-     sa = (struct sockaddr *) & (state->sockaddr);
-@@ -171,6 +178,7 @@
- 	state->addr_family = AF_UNSPEC;
- 	state->name_status = SMTPD_PEER_CODE_PERM;
- 	state->reverse_name_status = SMTPD_PEER_CODE_PERM;
-+	state->ident_user = mystrdup("NO-USER");
- 	state->port = mystrdup(CLIENT_PORT_UNKNOWN);
-     }
+ static INET_PROTO_INFO *proto_info;
  
-@@ -342,6 +350,7 @@
- 	    if (aierr) {
- 		msg_warn("hostname %s does not resolve to address %s: %s",
- 			 state->name, state->addr, MAI_STRERROR(aierr));
-+                state->ident_user = mystrdup("NO-USER");
- 		REJECT_PEER_NAME(state, (TEMP_AI_ERROR(aierr) ?
+  /*
+@@ -345,6 +352,7 @@
+ 	if (aierr) {
+ 	    msg_warn("hostname %s does not resolve to address %s: %s",
+ 		     state->name, state->addr, MAI_STRERROR(aierr));
++	    state->ident_user = mystrdup("NO-USER");
+ 	    REJECT_PEER_NAME(state, (TEMP_AI_ERROR(aierr) ?
  			    SMTPD_PEER_CODE_TEMP : SMTPD_PEER_CODE_FORGED));
- 	    } else {
-@@ -363,6 +372,20 @@
- 		freeaddrinfo(res0);
- 	    }
+ 	} else {
+@@ -352,6 +360,7 @@
+ 		if (res == 0) {
+ 		    msg_warn("hostname %s does not resolve to address %s",
+ 			     state->name, state->addr);
++		    state->ident_user = mystrdup("NO-USER");
+ 		    REJECT_PEER_NAME(state, SMTPD_PEER_CODE_FORGED);
+ 		    break;
+ 		}
+@@ -366,6 +375,22 @@
+ 	    freeaddrinfo(res0);
  	}
+     }
++    if (namadr_list_match(smtpd_ident_lookup, state->name, state->addr)) {
++	struct sockaddr_in serv_sin;
++	char *ident_user = NULL;
 +
-+	if (namadr_list_match(smtpd_ident_lookup, state->name, state->addr)) {
-+	    /* If getsockname fails, just forget it */
-+	    sa_len = sizeof(serv_sin);
-+	    if (getsockname(vstream_fileno(state->client), (struct sockaddr *)&serv_sin, &sa_len) >= 0) {
-+		ident_user = smtpd_ident((struct sockaddr_in *)sa, &serv_sin);
-+		if (ident_user == NULL)
-+		    state->ident_user = mystrdup("NO-USER");
-+		else
-+		    state->ident_user = ident_user;
-+	    } else
-+		msg_warn("getsockname failed while doing ident lookup: %s", strerror(errno));
++	/* If getsockname fails, just forget it */
++	sa_length = sizeof(serv_sin);
++	if (getsockname(vstream_fileno(state->client), (struct sockaddr *)&serv_sin, &sa_length) >= 0) {
++	    ident_user = smtpd_ident((struct sockaddr_in *)sa, &serv_sin);
++	    if (ident_user == NULL)
++		state->ident_user = mystrdup("NO-USER");
++	    else
++		state->ident_user = ident_user;
 +	} else
++	    msg_warn("getsockname failed while doing ident lookup: %s", strerror(errno));
++    } else
 +	    state->ident_user = mystrdup("NO-USER");
-     }
+ }
  
-     /*
-@@ -383,6 +406,7 @@
- 	state->name_status = SMTPD_PEER_CODE_OK;
- 	state->reverse_name_status = SMTPD_PEER_CODE_OK;
- 	state->port = mystrdup("0");		/* XXX bogus. */
-+	state->ident_user = mystrdup("NO-USER");
-     }
+ /* smtpd_peer_hostaddr_to_sockaddr - convert numeric string to binary */
+@@ -411,6 +433,7 @@
+     state->addr_family = AF_UNSPEC;
+     state->name_status = SMTPD_PEER_CODE_OK;
+     state->reverse_name_status = SMTPD_PEER_CODE_OK;
++    state->ident_user = mystrdup("NO-USER");
+     state->port = mystrdup("0");		/* XXX bogus. */
+ }
  
-     /*
-@@ -401,6 +425,8 @@
+@@ -426,6 +449,7 @@
+     state->addr_family = AF_UNSPEC;
+     state->name_status = SMTPD_PEER_CODE_PERM;
+     state->reverse_name_status = SMTPD_PEER_CODE_PERM;
++    state->ident_user = mystrdup("NO-USER");
+     state->port = mystrdup(CLIENT_PORT_UNKNOWN);
+ }
+ 
+@@ -554,6 +578,7 @@
+     state->addr = 0;
+     state->namaddr = 0;
+     state->rfc_addr = 0;
++    state->ident_user = 0;
+     state->port = 0;
+     state->dest_addr = 0;
+ 
+@@ -604,6 +629,8 @@
  	myfree(state->namaddr);
      if (state->rfc_addr)
  	myfree(state->rfc_addr);
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/postfix.git/commitdiff/8dedada003d45af0c0b0c6a38c9170e5c4d2736e



More information about the pld-cvs-commit mailing list