summaryrefslogtreecommitdiffstats
path: root/contrib/sendmail/libmilter
diff options
context:
space:
mode:
authorgshapiro <gshapiro@FreeBSD.org>2003-09-19 23:11:30 +0000
committergshapiro <gshapiro@FreeBSD.org>2003-09-19 23:11:30 +0000
commit96b960fca637a0765d566591885b7d42576e723f (patch)
treee6205d213aedfefacf00b4211611f436bae5e680 /contrib/sendmail/libmilter
parentac5ff30ae19ff6f7473f23c0d36d94301124b150 (diff)
downloadFreeBSD-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/README9
-rw-r--r--contrib/sendmail/libmilter/docs/sample.html10
-rw-r--r--contrib/sendmail/libmilter/docs/smfi_chgheader.html2
-rw-r--r--contrib/sendmail/libmilter/docs/smfi_register.html6
-rw-r--r--contrib/sendmail/libmilter/docs/smfi_setconn.html6
-rw-r--r--contrib/sendmail/libmilter/docs/smfi_setreply.html18
-rw-r--r--contrib/sendmail/libmilter/engine.c5
-rw-r--r--contrib/sendmail/libmilter/libmilter.h4
-rw-r--r--contrib/sendmail/libmilter/listener.c31
-rw-r--r--contrib/sendmail/libmilter/signal.c21
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 &lt;libmilter/mfapi.h&gt;
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)
{
OpenPOWER on IntegriCloud