summaryrefslogtreecommitdiff
path: root/libexec/spamd
diff options
context:
space:
mode:
authorTodd C. Miller <millert@cvs.openbsd.org>2014-12-29 20:39:28 +0000
committerTodd C. Miller <millert@cvs.openbsd.org>2014-12-29 20:39:28 +0000
commit60d2e499429708604c12444bdd5be626337b0eb8 (patch)
tree1dfb99e145a0c518b0075f67f17aed807cbb18d8 /libexec/spamd
parent71227a16882b248cd1da8d433afd6b9d5c2c3a7a (diff)
Minor cleanup:
o doreply() just calls build_reply() o remove a few dead stores and useless variables o use the asprintf() return value OK deraadt@
Diffstat (limited to 'libexec/spamd')
-rw-r--r--libexec/spamd/spamd.c36
1 files changed, 10 insertions, 26 deletions
diff --git a/libexec/spamd/spamd.c b/libexec/spamd/spamd.c
index 995cf8b8a2a..ae82ebf1f60 100644
--- a/libexec/spamd/spamd.c
+++ b/libexec/spamd/spamd.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: spamd.c,v 1.116 2014/11/23 21:19:47 guenther Exp $ */
+/* $OpenBSD: spamd.c,v 1.117 2014/12/29 20:39:27 millert Exp $ */
/*
* Copyright (c) 2002-2007 Bob Beck. All rights reserved.
@@ -88,7 +88,6 @@ int parse_configline(char *);
void parse_configs(void);
void do_config(void);
int append_error_string (struct con *, size_t, char *, int, void *);
-void build_reply(struct con *);
void doreply(struct con *);
void setlog(char *, size_t, char *);
void initcon(struct con *, int, struct sockaddr *);
@@ -481,7 +480,7 @@ loglists(struct con *cp)
}
void
-build_reply(struct con *cp)
+doreply(struct con *cp)
{
struct sdlist **matches;
int off = 0;
@@ -491,7 +490,6 @@ build_reply(struct con *cp)
goto nomatch;
for (; *matches; matches++) {
int used = 0;
- char *c = cp->obuf + off;
int left = cp->osize - off;
used = append_error_string(cp, off, matches[0]->string,
@@ -502,8 +500,7 @@ build_reply(struct con *cp)
left -= used;
if (cp->obuf[off - 1] != '\n') {
if (left < 1) {
- c = grow_obuf(cp, off);
- if (c == NULL)
+ if (grow_obuf(cp, off) == NULL)
goto bad;
}
cp->obuf[off++] = '\n';
@@ -515,21 +512,17 @@ nomatch:
/* No match. give generic reply */
free(cp->obuf);
cp->obuf = NULL;
- cp->osize = 0;
if (cp->blacklists != NULL)
- asprintf(&cp->obuf,
+ cp->osize = asprintf(&cp->obuf,
"%s-Sorry %s\n"
"%s-You are trying to send mail from an address "
"listed by one\n"
"%s or more IP-based registries as being a SPAM source.\n",
nreply, cp->addr, nreply, nreply);
else
- asprintf(&cp->obuf,
+ cp->osize = asprintf(&cp->obuf,
"451 Temporary failure, please try again later.\r\n");
- if (cp->obuf != NULL)
- cp->osize = strlen(cp->obuf) + 1;
- else
- cp->osize = 0;
+ cp->osize++; /* size includes the NUL (also changes -1 to 0) */
return;
bad:
if (cp->obuf != NULL) {
@@ -540,12 +533,6 @@ bad:
}
void
-doreply(struct con *cp)
-{
- build_reply(cp);
-}
-
-void
setlog(char *p, size_t len, char *f)
{
char *s;
@@ -619,7 +606,7 @@ initcon(struct con *cp, int fd, struct sockaddr *sa)
{
socklen_t len = sa->sa_len;
time_t tt;
- char *tmp;
+ char ctimebuf[26];
int error;
time(&tt);
@@ -650,13 +637,10 @@ initcon(struct con *cp, int fd, struct sockaddr *sa)
if (error)
errx(1, "%s", gai_strerror(error));
#endif
- tmp = strdup(ctime(&t));
- if (tmp == NULL)
- err(1, "malloc");
- tmp[strlen(tmp) - 1] = '\0'; /* nuke newline */
+ ctime_r(&t, ctimebuf);
+ ctimebuf[sizeof(ctimebuf) - 2] = '\0'; /* nuke newline */
snprintf(cp->obuf, cp->osize, "220 %s ESMTP %s; %s\r\n",
- hostname, spamd, tmp);
- free(tmp);
+ hostname, spamd, ctimebuf);
cp->op = cp->obuf;
cp->ol = strlen(cp->op);
cp->w = tt + cp->stutter;