aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormartijn <martijn@openbsd.org>2020-09-22 18:04:27 +0000
committerGilles Chehade <gilles@poolp.org>2020-11-20 11:15:04 +0100
commite3b218f9e5e9cc750045304d47169595941a8cd8 (patch)
tree76b11c000f9221101025bc045b7d18bef19143e1
parentAdd the admd keyword. This can be used by filters interested in the (diff)
downloadOpenSMTPD-e3b218f9e5e9cc750045304d47169595941a8cd8.tar.xz
OpenSMTPD-e3b218f9e5e9cc750045304d47169595941a8cd8.zip
Allow handling long lines in an aliases table.
Pointed out by AIsha Tammy (openbsd <dot> bugs <at> aisha <dot> cc) Original diff by Edgar Pettijohn (edgar <at> pettijohn-web <dot> com) OK tb@
-rw-r--r--usr.sbin/smtpd/mailaddr.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/usr.sbin/smtpd/mailaddr.c b/usr.sbin/smtpd/mailaddr.c
index 4346e3dc..0965aea8 100644
--- a/usr.sbin/smtpd/mailaddr.c
+++ b/usr.sbin/smtpd/mailaddr.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: mailaddr.c,v 1.3 2018/05/31 21:06:12 gilles Exp $ */
+/* $OpenBSD: mailaddr.c,v 1.4 2020/09/22 18:04:27 martijn Exp $ */
/*
* Copyright (c) 2015 Gilles Chehade <gilles@poolp.org>
@@ -82,12 +82,10 @@ int
mailaddr_line(struct maddrmap *maddrmap, const char *s)
{
struct maddrnode mn;
- char buffer[LINE_MAX];
- char *p, *subrcpt;
+ char *p, *subrcpt, *buffer;
int ret;
- memset(buffer, 0, sizeof buffer);
- if (strlcpy(buffer, s, sizeof buffer) >= sizeof buffer)
+ if ((buffer = strdup(s)) == NULL)
return 0;
p = buffer;
@@ -95,12 +93,16 @@ mailaddr_line(struct maddrmap *maddrmap, const char *s)
subrcpt = strip(subrcpt);
if (subrcpt[0] == '\0')
continue;
- if (!text_to_mailaddr(&mn.mailaddr, subrcpt))
+ if (!text_to_mailaddr(&mn.mailaddr, subrcpt)) {
+ free(buffer);
return 0;
+ }
log_debug("subrcpt: [%s]", subrcpt);
maddrmap_insert(maddrmap, &mn);
}
+ free(buffer);
+
if (ret >= 0)
return 1;
/* expand_line_split() returned < 0 */