diff options
author | 2014-11-23 21:27:53 +0000 | |
---|---|---|
committer | 2014-11-23 21:27:53 +0000 | |
commit | ca860d9fe8539447c37a50c302a3f658dc2d82a6 (patch) | |
tree | 2857a909be2c010157b8c41b3279566e5f557f93 | |
parent | regen (diff) | |
download | wireguard-openbsd-ca860d9fe8539447c37a50c302a3f658dc2d82a6.tar.xz wireguard-openbsd-ca860d9fe8539447c37a50c302a3f658dc2d82a6.zip |
some third-party applications generate malformed headers which we can still
parse correctly, do not reject message as malformed in this case
-rw-r--r-- | usr.sbin/smtpd/rfc2822.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/usr.sbin/smtpd/rfc2822.c b/usr.sbin/smtpd/rfc2822.c index 023224d46af..afc5737a7c2 100644 --- a/usr.sbin/smtpd/rfc2822.c +++ b/usr.sbin/smtpd/rfc2822.c @@ -1,4 +1,4 @@ -/* $OpenBSD: rfc2822.c,v 1.2 2014/10/15 19:23:29 gilles Exp $ */ +/* $OpenBSD: rfc2822.c,v 1.3 2014/11/23 21:27:53 gilles Exp $ */ /* * Copyright (c) 2014 Gilles Chehade <gilles@poolp.org> @@ -82,7 +82,12 @@ parser_feed_header(struct rfc2822_parser *rp, char *line) return 0; memset(rp->header.name, 0, sizeof rp->header.name); (void)memcpy(rp->header.name, line, pos - line); - return parser_feed_header(rp, pos + 1); + if (isspace(*(pos + 1))) + return parser_feed_header(rp, pos + 1); + else { + *pos = ' '; + return parser_feed_header(rp, pos); + } } /* continuation */ |