diff options
author | Gilles Chehade <gilles@poolp.org> | 2014-10-15 09:29:50 +0200 |
---|---|---|
committer | Gilles Chehade <gilles@poolp.org> | 2014-10-15 09:29:50 +0200 |
commit | 396e472feb91e245cc7610ea0921ea895bf04721 (patch) | |
tree | 2f242b54546cb2e1d67c5a1b210a7059df0598d1 | |
parent | can't fail, but better safe than sorry (diff) | |
download | OpenSMTPD-396e472feb91e245cc7610ea0921ea895bf04721.tar.xz OpenSMTPD-396e472feb91e245cc7610ea0921ea895bf04721.zip |
fix memory leak in rfc822 parser
-rw-r--r-- | smtpd/rfc822.c | 8 |
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') { |