Correct connect() call in dcc code. Fixes: #909
authorNigel Metheringham <nigel@exim.org>
Thu, 12 Nov 2009 08:34:23 +0000 (08:34 +0000)
committerNigel Metheringham <nigel@exim.org>
Thu, 12 Nov 2009 08:34:23 +0000 (08:34 +0000)
doc/doc-txt/ChangeLog
src/src/dcc.c

index 01ec5d2a95fc94d0470e3401343a50f7c2c3a5f7..67529ad2fa94466803f9ead4b2f149ab72ceb27c 100644 (file)
@@ -1,4 +1,4 @@
-$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.589 2009/11/09 10:22:10 nm4 Exp $
+$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.590 2009/11/12 08:34:23 nm4 Exp $
 
 Change log file for Exim from version 4.21
 -------------------------------------------
@@ -151,6 +151,8 @@ NM/34 Bugzilla 901: Fix sign/unsigned and UTF mistmatches
 NM/35 Bugzilla 39: Base64 decode bug fixes
       Patch by Jakob Hirsch
 
+NM/36 Bugzilla 909: Correct connect() call in dcc code
+
 
 Exim version 4.69
 -----------------
index cc06ed9ced601d117ac2a400bdcaea35d70d34b3..ff760bcf69cecd7012efd1a74dd8dd1d8a5be4a4 100644 (file)
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/dcc.c,v 1.4 2009/11/11 10:08:01 nm4 Exp $ */
+/* $Cambridge: exim/src/src/dcc.c,v 1.5 2009/11/12 08:34:23 nm4 Exp $ */
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
@@ -59,7 +59,7 @@ int dcc_process(uschar **listptr) {
   uschar *xtra_hdrs = NULL;
 
   /* from local_scan */
-  int i, j, k, c, retval, sockfd, servlen, resp, line;
+  int i, j, k, c, retval, sockfd, resp, line;
   unsigned int portnr;
   struct sockaddr_un  serv_addr;
   struct sockaddr_in  serv_addr_in;
@@ -219,7 +219,6 @@ int dcc_process(uschar **listptr) {
     bzero((char *)&serv_addr,sizeof(serv_addr));
     serv_addr.sun_family = AF_UNIX;
     Ustrcpy(serv_addr.sun_path, sockpath);
-    servlen = Ustrlen(serv_addr.sun_path) + sizeof(serv_addr.sun_family);
     if ((sockfd = socket(AF_UNIX, SOCK_STREAM,0)) < 0){
       DEBUG(D_acl)
         debug_printf("Creating socket failed: %s\n", strerror(errno));
@@ -229,7 +228,7 @@ int dcc_process(uschar **listptr) {
       return retval;
     }
     /* Now connecting the socket (UNIX) */
-    if (connect(sockfd, (struct sockaddr *) &serv_addr, servlen) < 0){
+    if (connect(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0){
       DEBUG(D_acl)
                             debug_printf("Connecting socket failed: %s\n", strerror(errno));
       log_write(0,LOG_REJECT,"Connecting socket failed: %s\n", strerror(errno));