diff options
author | martijn <martijn@openbsd.org> | 2020-09-22 18:04:27 +0000 |
---|---|---|
committer | Gilles Chehade <gilles@poolp.org> | 2020-11-20 11:15:04 +0100 |
commit | e3b218f9e5e9cc750045304d47169595941a8cd8 (patch) | |
tree | 76b11c000f9221101025bc045b7d18bef19143e1 | |
parent | Add the admd keyword. This can be used by filters interested in the (diff) | |
download | OpenSMTPD-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.c | 14 |
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 */ |