aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGilles Chehade <gilles@poolp.org>2014-10-15 09:29:50 +0200
committerGilles Chehade <gilles@poolp.org>2014-10-15 09:29:50 +0200
commit396e472feb91e245cc7610ea0921ea895bf04721 (patch)
tree2f242b54546cb2e1d67c5a1b210a7059df0598d1
parentcan't fail, but better safe than sorry (diff)
downloadOpenSMTPD-396e472feb91e245cc7610ea0921ea895bf04721.tar.xz
OpenSMTPD-396e472feb91e245cc7610ea0921ea895bf04721.zip
fix memory leak in rfc822 parser
-rw-r--r--smtpd/rfc822.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/smtpd/rfc822.c b/smtpd/rfc822.c
index 1e0ca34f..46f1093e 100644
--- a/smtpd/rfc822.c
+++ b/smtpd/rfc822.c
@@ -84,12 +84,16 @@ parse_addresses(struct rfc822_parser *rp, const char *buffer, size_t len)
}
/* some flags still set, malformed header */
- if (rp->escape || rp->comment || rp->quote || rp->bracket)
+ if (rp->escape || rp->comment || rp->quote || rp->bracket) {
+ free(ra);
return 0;
+ }
/* no value, malformed header */
- if (ra->name[0] == '\0' && ra->address[0] == '\0')
+ if (ra->name[0] == '\0' && ra->address[0] == '\0') {
+ free(ra);
return 0;
+ }
/* no <>, use name as address */
if (ra->address[0] == '\0') {