diff options
author | gshapiro <gshapiro@FreeBSD.org> | 2003-09-19 23:11:30 +0000 |
---|---|---|
committer | gshapiro <gshapiro@FreeBSD.org> | 2003-09-19 23:11:30 +0000 |
commit | 96b960fca637a0765d566591885b7d42576e723f (patch) | |
tree | e6205d213aedfefacf00b4211611f436bae5e680 /contrib/sendmail/libmilter | |
parent | ac5ff30ae19ff6f7473f23c0d36d94301124b150 (diff) | |
download | FreeBSD-src-96b960fca637a0765d566591885b7d42576e723f.zip FreeBSD-src-96b960fca637a0765d566591885b7d42576e723f.tar.gz |
Import sendmail 8.12.10
Diffstat (limited to 'contrib/sendmail/libmilter')
-rw-r--r-- | contrib/sendmail/libmilter/README | 9 | ||||
-rw-r--r-- | contrib/sendmail/libmilter/docs/sample.html | 10 | ||||
-rw-r--r-- | contrib/sendmail/libmilter/docs/smfi_chgheader.html | 2 | ||||
-rw-r--r-- | contrib/sendmail/libmilter/docs/smfi_register.html | 6 | ||||
-rw-r--r-- | contrib/sendmail/libmilter/docs/smfi_setconn.html | 6 | ||||
-rw-r--r-- | contrib/sendmail/libmilter/docs/smfi_setreply.html | 18 | ||||
-rw-r--r-- | contrib/sendmail/libmilter/engine.c | 5 | ||||
-rw-r--r-- | contrib/sendmail/libmilter/libmilter.h | 4 | ||||
-rw-r--r-- | contrib/sendmail/libmilter/listener.c | 31 | ||||
-rw-r--r-- | contrib/sendmail/libmilter/signal.c | 21 |
10 files changed, 73 insertions, 39 deletions
diff --git a/contrib/sendmail/libmilter/README b/contrib/sendmail/libmilter/README index efc0b65..96fba66 100644 --- a/contrib/sendmail/libmilter/README +++ b/contrib/sendmail/libmilter/README @@ -427,6 +427,7 @@ main(argc, argv) int argc; char *argv[]; { + bool setconn = false; int c; const char *args = "p:"; @@ -443,10 +444,16 @@ main(argc, argv) exit(EX_USAGE); } (void) smfi_setconn(optarg); + setconn = true; break; } } + if (!setconn) + { + fprintf(stderr, "%s: Missing required -p argument\n", argv[0]); + exit(EX_USAGE); + } if (smfi_register(smfilter) == MI_FAILURE) { fprintf(stderr, "smfi_register failed\n"); @@ -457,4 +464,4 @@ main(argc, argv) /* eof */ -$Revision: 8.35.2.1 $, Last updated $Date: 2002/10/21 14:31:57 $ +$Revision: 8.35.2.2 $, Last updated $Date: 2003/05/26 04:10:06 $ diff --git a/contrib/sendmail/libmilter/docs/sample.html b/contrib/sendmail/libmilter/docs/sample.html index 7f669b7..2cc1948 100644 --- a/contrib/sendmail/libmilter/docs/sample.html +++ b/contrib/sendmail/libmilter/docs/sample.html @@ -379,7 +379,7 @@ usage(prog) char *prog; { fprintf(stderr, - "Usage: %s [-p socket-addr] [-t timeout] [-r reject-addr] [-a add-addr]\n", + "Usage: %s -p socket-addr [-t timeout] [-r reject-addr] [-a add-addr]\n", prog); } @@ -388,6 +388,7 @@ main(argc, argv) int argc; char **argv; { + bool setconn = FALSE; int c; const char *args = "p:t:r:a:h"; extern char *optarg; @@ -421,6 +422,7 @@ main(argc, argv) unlink(optarg + 5); else if (strncasecmp(optarg, "local:", 6) == 0) unlink(optarg + 6); + setconn = TRUE; break; case 't': @@ -467,6 +469,12 @@ main(argc, argv) exit(EX_USAGE); } } + if (!setconn) + { + fprintf(stderr, "%s: Missing required -p argument\n", argv[0]); + usage(argv[0]); + exit(EX_USAGE); + } if (<a href="smfi_register.html">smfi_register</a>(smfilter) == MI_FAILURE) { fprintf(stderr, "smfi_register failed\n"); diff --git a/contrib/sendmail/libmilter/docs/smfi_chgheader.html b/contrib/sendmail/libmilter/docs/smfi_chgheader.html index fc7ba97..53ad73c 100644 --- a/contrib/sendmail/libmilter/docs/smfi_chgheader.html +++ b/contrib/sendmail/libmilter/docs/smfi_chgheader.html @@ -97,7 +97,7 @@ Otherwise, it returns MI_SUCCESS. ... - ret = smfi_chgheader(ctx, "Content-Type", + ret = smfi_chgheader(ctx, "Content-Type", 1, "multipart/mixed;\n\tboundary=\"foobar\""); </pre> </td> diff --git a/contrib/sendmail/libmilter/docs/smfi_register.html b/contrib/sendmail/libmilter/docs/smfi_register.html index 2e9ee3d..0aac254 100644 --- a/contrib/sendmail/libmilter/docs/smfi_register.html +++ b/contrib/sendmail/libmilter/docs/smfi_register.html @@ -9,7 +9,7 @@ <pre> #include <libmilter/mfapi.h> int smfi_register( - smfiDesc_str descr + smfiDesc descr ); </pre> Register a set of filter callbacks. @@ -25,7 +25,7 @@ Register a set of filter callbacks. <tr align="left" valign=top> <th width="80">Effects</th> <td>smfi_register creates a filter using the information given in the -smfiDesc_str argument. Multiple calls to smfi_register within a +smfiDesc argument. Multiple calls to smfi_register within a single process are not allowed.</td> </tr> </table> @@ -36,7 +36,7 @@ single process are not allowed.</td> <tr bgcolor="#dddddd"><th>Argument</th><th>Description</th></tr> <tr valign="top"><td>descr</td> <td> -A filter descriptor of type smfiDesc_str describing the filter's +A filter descriptor of type smfiDesc describing the filter's functions. The structure has the following members: <pre> struct smfiDesc diff --git a/contrib/sendmail/libmilter/docs/smfi_setconn.html b/contrib/sendmail/libmilter/docs/smfi_setconn.html index b0aed7c..0f810b4 100644 --- a/contrib/sendmail/libmilter/docs/smfi_setconn.html +++ b/contrib/sendmail/libmilter/docs/smfi_setconn.html @@ -67,8 +67,10 @@ due to a lack of memory. 0660 (read/write permission for the socket's owner and group) which is useful if the sendmail RunAsUser option is used. The permissions for a unix/local domain socket are determined as - usual by <code>umask</code>, which should be set to 007 or 077 - before calling <code>smfi_setconn()</code>. + usual by <code>umask</code>, which should be set to 007 or 077. + Note some operating systems (e.g, Solaris) don't use the + permissions of the socket. On those systems, place the socket in a + protected directory. </ul> </td> </tr> diff --git a/contrib/sendmail/libmilter/docs/smfi_setreply.html b/contrib/sendmail/libmilter/docs/smfi_setreply.html index 87a47d7..646a8f1 100644 --- a/contrib/sendmail/libmilter/docs/smfi_setreply.html +++ b/contrib/sendmail/libmilter/docs/smfi_setreply.html @@ -15,7 +15,7 @@ int smfi_setreply( char *message ); </pre> -Set the default SMTP error reply code. +Set the default SMTP error reply code. Only 4XX and 5XX replies are accepted. </td></tr> <!----------- Description ----------> @@ -42,10 +42,13 @@ this filter.</td> <td>Opaque context structure. </td></tr> <tr valign="top"><td>rcode</td> - <td>The three-digit (RFC 821) SMTP reply code, as a null-terminated string. rcode cannot be NULL, and must be a valid reply code. - </td></tr> + <td>The three-digit (RFC 821/2821) SMTP reply code, as a + null-terminated string. rcode cannot be NULL, and must be a valid + 4XX or 5XX reply code. + </td></tr> <tr valign="top"><td>xcode</td> - <td>The extended (RFC 2034) reply code. If xcode is NULL, no extended code is used. Otherwise, xcode must conform to RFC 2034. + <td>The extended (RFC 1893/2034) reply code. If xcode is NULL, no + extended code is used. Otherwise, xcode must conform to RFC 1893/2034. </td></tr> <tr valign="top"><td>message</td> <td>The text part of the SMTP reply. If message is NULL, an empty message is used. @@ -73,8 +76,11 @@ Otherwise, it return MI_SUCCESS. <ul> <li>Values passed to smfi_setreply are not checked for standards compliance. <li>For details about reply codes and their meanings, please see RFC's -<a href="http://www.rfc-editor.org/rfc/rfc821.txt">821</a> -and <a href="http://www.rfc-editor.org/rfc/rfc2034.txt">2034</a>. +<a href="http://www.rfc-editor.org/rfc/rfc821.txt">821</a>/ +<a href="http://www.rfc-editor.org/rfc/rfc2821.txt">2821</a> +and +<a href="http://www.rfc-editor.org/rfc/rfc1893.txt">1893</a>/ +<a href="http://www.rfc-editor.org/rfc/rfc2034.txt">2034</a>. <li>If the reply code (rcode) given is a '4XX' code but SMFI_REJECT is used for the message, the custom reply is not used. <li>Similarly, if the reply code (rcode) given is a '5XX' code but diff --git a/contrib/sendmail/libmilter/engine.c b/contrib/sendmail/libmilter/engine.c index 970b005..623b2c2 100644 --- a/contrib/sendmail/libmilter/engine.c +++ b/contrib/sendmail/libmilter/engine.c @@ -9,7 +9,7 @@ */ #include <sm/gen.h> -SM_RCSID("@(#)$Id: engine.c,v 8.109.2.4 2002/12/03 17:27:32 ca Exp $") +SM_RCSID("@(#)$Id: engine.c,v 8.109.2.5 2003/08/04 18:14:33 ca Exp $") #include "libmilter.h" @@ -605,7 +605,7 @@ st_connectinfo(g) /* Move past trailing \0 in host string */ i++; family = s[i++]; - memset(&sockaddr, '\0', sizeof sockaddr); + (void) memset(&sockaddr, '\0', sizeof sockaddr); if (family != SMFIA_UNKNOWN) { (void) memcpy((void *) &port, (void *) (s + i), @@ -869,6 +869,7 @@ st_macros(g) ** noreply */ +/* ARGSUSED */ static int st_quit(g) genarg *g; diff --git a/contrib/sendmail/libmilter/libmilter.h b/contrib/sendmail/libmilter/libmilter.h index 7ae5bcd..7b2fbb8 100644 --- a/contrib/sendmail/libmilter/libmilter.h +++ b/contrib/sendmail/libmilter/libmilter.h @@ -19,7 +19,7 @@ #ifdef _DEFINE # define EXTERN # define INIT(x) = x -SM_IDSTR(MilterlId, "@(#)$Id: libmilter.h,v 8.33.2.9 2003/01/03 22:14:40 ca Exp $") +SM_IDSTR(MilterlId, "@(#)$Id: libmilter.h,v 8.33.2.12 2003/09/08 21:39:55 yuri Exp $") #else /* _DEFINE */ # define EXTERN extern # define INIT(x) @@ -151,7 +151,7 @@ typedef pthread_mutex_t smutex_t; /* hack */ #define smi_log syslog -#define sm_dprintf printf +#define sm_dprintf (void) printf #define milter_ret int #define SMI_LOG_ERR LOG_ERR #define SMI_LOG_FATAL LOG_ERR diff --git a/contrib/sendmail/libmilter/listener.c b/contrib/sendmail/libmilter/listener.c index 06087b6..5eb5f32 100644 --- a/contrib/sendmail/libmilter/listener.c +++ b/contrib/sendmail/libmilter/listener.c @@ -9,7 +9,7 @@ */ #include <sm/gen.h> -SM_RCSID("@(#)$Id: listener.c,v 8.85.2.9 2003/01/03 22:14:40 ca Exp $") +SM_RCSID("@(#)$Id: listener.c,v 8.85.2.12 2003/08/04 18:47:29 ca Exp $") /* ** listener.c -- threaded network listener @@ -382,18 +382,18 @@ mi_milteropen(conn, backlog, name) { # if NETINET case AF_INET: - memmove(&addr.sin.sin_addr, - hp->h_addr, - INADDRSZ); + (void) memmove(&addr.sin.sin_addr, + hp->h_addr, + INADDRSZ); addr.sin.sin_port = port; break; # endif /* NETINET */ # if NETINET6 case AF_INET6: - memmove(&addr.sin6.sin6_addr, - hp->h_addr, - IN6ADDRSZ); + (void) memmove(&addr.sin6.sin6_addr, + hp->h_addr, + IN6ADDRSZ); addr.sin6.sin6_port = port; break; # endif /* NETINET6 */ @@ -659,7 +659,7 @@ mi_listener(conn, dbg, smfi, timeout, backlog) { socket_t connfd = INVALID_SOCKET; int sockopt = 1; - int r; + int r, mistop; int ret = MI_SUCCESS; int mcnt = 0; /* error count for malloc() failures */ int tcnt = 0; /* error count for thread_create() failures */ @@ -678,11 +678,15 @@ mi_listener(conn, dbg, smfi, timeout, backlog) clilen = L_socksize; (void) smutex_unlock(&L_Mutex); - while (mi_stop() == MILTER_CONT) + while ((mistop = mi_stop()) == MILTER_CONT) { (void) smutex_lock(&L_Mutex); if (!ValidSocket(listenfd)) { + ret = MI_FAILURE; + smi_log(SMI_LOG_ERR, + "%s: listenfd=%d corrupted, terminating, errno=%d", + smfi->xxfi_name, listenfd, errno); (void) smutex_unlock(&L_Mutex); break; } @@ -728,7 +732,7 @@ mi_listener(conn, dbg, smfi, timeout, backlog) } scnt = 0; /* reset error counter for select() */ - memset(&cliaddr, '\0', sizeof cliaddr); + (void) memset(&cliaddr, '\0', sizeof cliaddr); connfd = accept(listenfd, (struct sockaddr *) &cliaddr, &clilen); save_errno = errno; @@ -804,7 +808,7 @@ mi_listener(conn, dbg, smfi, timeout, backlog) continue; } mcnt = 0; /* reset error counter for malloc() */ - memset(ctx, '\0', sizeof *ctx); + (void) memset(ctx, '\0', sizeof *ctx); ctx->ctx_sd = connfd; ctx->ctx_dbg = dbg; ctx->ctx_timeout = timeout; @@ -854,7 +858,12 @@ mi_listener(conn, dbg, smfi, timeout, backlog) if (ret != MI_SUCCESS) mi_stop_milters(MILTER_ABRT); else + { + if (mistop != MILTER_CONT) + smi_log(SMI_LOG_INFO, "%s: mi_stop=%d", + smfi->xxfi_name, mistop); mi_closener(); + } (void) smutex_destroy(&L_Mutex); return ret; } diff --git a/contrib/sendmail/libmilter/signal.c b/contrib/sendmail/libmilter/signal.c index aeb307a..e167959 100644 --- a/contrib/sendmail/libmilter/signal.c +++ b/contrib/sendmail/libmilter/signal.c @@ -9,7 +9,7 @@ */ #include <sm/gen.h> -SM_RCSID("@(#)$Id: signal.c,v 8.37.2.2 2002/10/23 16:52:00 ca Exp $") +SM_RCSID("@(#)$Id: signal.c,v 8.37.2.3 2003/08/04 18:14:33 ca Exp $") #include "libmilter.h" @@ -90,15 +90,15 @@ mi_signal_thread(name) int sig, errs; sigset_t set; - sigemptyset(&set); - sigaddset(&set, SIGHUP); - sigaddset(&set, SIGTERM); + (void) sigemptyset(&set); + (void) sigaddset(&set, SIGHUP); + (void) sigaddset(&set, SIGTERM); /* Handle Ctrl-C gracefully for debugging */ - sigaddset(&set, SIGINT); + (void) sigaddset(&set, SIGINT); errs = 0; - while (true) + for (;;) { sig = 0; #if defined(SOLARIS) || defined(__svr5__) @@ -138,6 +138,7 @@ mi_signal_thread(name) break; } } + /* NOTREACHED */ } /* ** MI_SPAWN_SIGNAL_THREAD -- spawn thread to handle signals @@ -158,10 +159,10 @@ mi_spawn_signal_thread(name) sigset_t set; /* Mask HUP and KILL signals */ - sigemptyset(&set); - sigaddset(&set, SIGHUP); - sigaddset(&set, SIGTERM); - sigaddset(&set, SIGINT); + (void) sigemptyset(&set); + (void) sigaddset(&set, SIGHUP); + (void) sigaddset(&set, SIGTERM); + (void) sigaddset(&set, SIGINT); if (pthread_sigmask(SIG_BLOCK, &set, NULL) != 0) { |