diff options
author | Gilles Chehade <gilles@poolp.org> | 2019-06-26 11:10:04 +0200 |
---|---|---|
committer | Gilles Chehade <gilles@poolp.org> | 2019-06-26 11:10:04 +0200 |
commit | a4bb4c983136b05e27016f09b31a44785b15e144 (patch) | |
tree | be3ed3d4080a0ccf39b3bb1a32204315a8dfa02b | |
parent | sync (diff) | |
parent | sync (diff) | |
download | OpenSMTPD-a4bb4c983136b05e27016f09b31a44785b15e144.tar.xz OpenSMTPD-a4bb4c983136b05e27016f09b31a44785b15e144.zip |
Merge branch 'master' into portable
-rw-r--r-- | smtpd/mta_session.c | 18 | ||||
-rw-r--r-- | smtpd/smtp_session.c | 11 |
2 files changed, 19 insertions, 10 deletions
diff --git a/smtpd/mta_session.c b/smtpd/mta_session.c index b616cae5..01ca16fb 100644 --- a/smtpd/mta_session.c +++ b/smtpd/mta_session.c @@ -1,4 +1,4 @@ -/* $OpenBSD: mta_session.c,v 1.117 2019/06/14 19:55:25 eric Exp $ */ +/* $OpenBSD: mta_session.c,v 1.118 2019/06/24 15:14:01 gilles Exp $ */ /* * Copyright (c) 2008 Pierre-Yves Ritschard <pyr@openbsd.org> @@ -167,8 +167,8 @@ void mta_hoststat_uncache(const char *, uint64_t); static struct tree wait_helo; static struct tree wait_ptr; static struct tree wait_fd; -static struct tree wait_ssl_init; -static struct tree wait_ssl_verify; +static struct tree wait_tls_init; +static struct tree wait_tls_verify; static struct runq *hangon; @@ -181,8 +181,8 @@ mta_session_init(void) tree_init(&wait_helo); tree_init(&wait_ptr); tree_init(&wait_fd); - tree_init(&wait_ssl_init); - tree_init(&wait_ssl_verify); + tree_init(&wait_tls_init); + tree_init(&wait_tls_verify); runq_init(&hangon, mta_on_timeout); init = 1; } @@ -1463,7 +1463,7 @@ mta_cert_init(struct mta_session *s) } if (cert_init(name, fallback, mta_cert_init_cb, s)) { - tree_xset(&wait_ssl_init, s->id, s); + tree_xset(&wait_tls_init, s->id, s); s->flags |= MTA_WAIT; } } @@ -1477,7 +1477,7 @@ mta_cert_init_cb(void *arg, int status, const char *name, const void *cert, char *xname = NULL, *xcert = NULL; if (s->flags & MTA_WAIT) - mta_tree_pop(&wait_ssl_init, s->id); + mta_tree_pop(&wait_tls_init, s->id); if (status == CA_FAIL && s->relay->pki_name) { log_info("%016"PRIx64" mta closing reason=ca-failure", s->id); @@ -1513,7 +1513,7 @@ mta_cert_verify(struct mta_session *s) } if (cert_verify(io_tls(s->io), name, fallback, mta_cert_verify_cb, s)) { - tree_xset(&wait_ssl_verify, s->id, s); + tree_xset(&wait_tls_verify, s->id, s); io_pause(s->io, IO_IN); s->flags |= MTA_WAIT; } @@ -1526,7 +1526,7 @@ mta_cert_verify_cb(void *arg, int status) int resume = 0; if (s->flags & MTA_WAIT) { - mta_tree_pop(&wait_ssl_verify, s->id); + mta_tree_pop(&wait_tls_verify, s->id); resume = 1; } diff --git a/smtpd/smtp_session.c b/smtpd/smtp_session.c index b14aaef6..9d3bef1f 100644 --- a/smtpd/smtp_session.c +++ b/smtpd/smtp_session.c @@ -1,4 +1,4 @@ -/* $OpenBSD: smtp_session.c,v 1.391 2019/06/12 17:42:53 eric Exp $ */ +/* $OpenBSD: smtp_session.c,v 1.392 2019/06/26 08:46:08 gilles Exp $ */ /* * Copyright (c) 2008 Gilles Chehade <gilles@poolp.org> @@ -1095,6 +1095,15 @@ smtp_io(struct io *io, int evt, void *arg) return; } + if (strchr(line, '\r')) { + s->flags |= SF_BADINPUT; + smtp_reply(s, "500 %s: <CR> is only allowed before <LF>", + esc_code(ESC_STATUS_PERMFAIL, ESC_OTHER_STATUS)); + smtp_enter_state(s, STATE_QUIT); + io_set_write(io); + return; + } + /* No complete line received */ if (line == NULL) return; |