|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
Patches by Paul Howarth
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
https://bugzilla.redhat.com/show_bug.cgi?id=485426
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
--- sendmail-8.14.3/sendmail/milter.c 2008-09-19 15:51:03.000000000 +0100
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
+++ sendmail-8.14.3/sendmail/milter.c 2008-09-19 16:37:57.000000000 +0100
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
@@ -30,6 +30,9 @@
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
# include <sm/fdset.h>
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
+# include <unistd.h>
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
+# include <fcntl.h>
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
+
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
static void milter_connect_timeout __P((int));
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
static void milter_error __P((struct milter *, ENVELOPE *));
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
static int milter_open __P((struct milter *, bool, ENVELOPE *));
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
@@ -650,6 +653,7 @@
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
SOCKADDR_LEN_T addrlen = 0;
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
int addrno = 0;
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
int save_errno;
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
+ int fdflags;
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
char *p;
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
char *colon;
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
char *at;
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
@@ -1186,6 +1190,21 @@
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
(char *)&nodelay, sizeof(nodelay));
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
}
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
# endif /* MILTER_NO_NAGLE && !defined(TCP_CORK) */
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
+
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
+ /*
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
+ ** Need to set close-on-exec for sock to prevent it
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
+ ** leaking to the local delivery process
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
+ */
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
+ if ((fdflags = fcntl(sock, F_GETFD, 0)) == -1 ||
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
+ fcntl(sock, F_SETFD, fdflags | FD_CLOEXEC) == -1)
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
+ {
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
+ save_errno = errno;
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
+ if (MilterLogLevel > 0)
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
+ sm_syslog(LOG_WARNING, e->e_id,
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
+ "Milter (%s): Unable to set close-on-exec on sock (%s)",
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
+ m->mf_name, sm_errstring(save_errno = errno));
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
+ }
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
+
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
return sock;
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
}
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
--- sendmail-8.14.3/libmilter/listener.c 2007-04-23 23:22:50.000000000 +0100
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
+++ sendmail-8.14.3/libmilter/listener.c 2008-06-18 16:36:38.000000000 +0100
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
@@ -728,6 +728,7 @@
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
int acnt = 0; /* error count for accept() failures */
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
int scnt = 0; /* error count for select() failures */
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
int save_errno = 0;
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
+ int fdflags;
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
#if !_FFR_WORKERS_POOL
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
sthread_t thread_id;
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
#endif /* !_FFR_WORKERS_POOL */
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
@@ -807,6 +808,19 @@
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
(void) smutex_unlock(&L_Mutex);
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
/*
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
+ ** Need to set close-on-exec for connfd in case a user's
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
+ ** filter starts other applications
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
+ */
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
+ if ((fdflags = fcntl(connfd, F_GETFD, 0)) == -1 ||
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
+ fcntl(connfd, F_SETFD, fdflags | FD_CLOEXEC) == -1)
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
+ {
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
+ smi_log(SMI_LOG_WARN,
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
+ "%s: Unable to set close-on-exec on connfd (%s)",
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
+ smfi->xxfi_name, sm_errstring(errno));
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
+ /* XXX: continue? */
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
+ }
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
+
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
+ /*
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
** If remote side closes before accept() finishes,
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
** sockaddr might not be fully filled in.
|
|
![](https://seccdn.libravatar.org/avatar/1fd6a6dfddf24bd26e126f65144baf02c9ee908e4b74a78db3835cbfbb5888c5?s=16&d=retro) |
997411a |
*/
|