Ralf Hildebrandt:
> > It is also possible that the Exim version in question is out of date,
> > I recall seeing various bug reports on the Exim-users list about the
> > CHUNKING support in Exim, even some security issues. Don't know whether
> > the same symptoms are to be expected from a fully-patched version.
>
> According to the headers smtpgw03.nextwerk.de is running Exim 4.90_1
Also released as part of postfix-3.4-20180903.
Wietse
diff --exclude=man --exclude=html --exclude=README_FILES --exclude=INSTALL
--exclude=.indent.pro --exclude=Makefile.in -r -ur
/var/tmp/postfix-3.4-20180827/src/postscreen/postscreen_smtpd.c
./src/postscreen/postscreen_smtpd.c
--- /var/tmp/postfix-3.4-20180827/src/postscreen/postscreen_smtpd.c
2018-08-25 19:36:13.000000000 -0400
+++ ./src/postscreen/postscreen_smtpd.c 2018-09-03 18:49:28.000000000 -0400
@@ -737,6 +737,7 @@
#define PSC_SMTPD_CMD_FLAG_DESTROY (1<<1) /* dangling pointer alert */
#define PSC_SMTPD_CMD_FLAG_PRE_TLS (1<<2) /* allowed with mandatory TLS */
#define PSC_SMTPD_CMD_FLAG_SUSPEND (1<<3) /* suspend command engine */
+#define PSC_SMTPD_CMD_FLAG_HAS_PAYLOAD (1<<4) /* command has payload */
static const PSC_SMTPD_COMMAND command_table[] = {
"HELO", psc_helo_cmd, PSC_SMTPD_CMD_FLAG_ENABLE |
PSC_SMTPD_CMD_FLAG_PRE_TLS,
@@ -749,7 +750,7 @@
"RCPT", psc_rcpt_cmd, PSC_SMTPD_CMD_FLAG_ENABLE,
"DATA", psc_data_cmd, PSC_SMTPD_CMD_FLAG_ENABLE |
PSC_SMTPD_CMD_FLAG_DESTROY,
/* ".", psc_dot_cmd, PSC_SMTPD_CMD_FLAG_NONE, */
- "BDAT", psc_bdat_cmd, PSC_SMTPD_CMD_FLAG_ENABLE |
PSC_SMTPD_CMD_FLAG_DESTROY,
+ "BDAT", psc_bdat_cmd, PSC_SMTPD_CMD_FLAG_ENABLE |
PSC_SMTPD_CMD_FLAG_DESTROY | PSC_SMTPD_CMD_FLAG_HAS_PAYLOAD,
"RSET", psc_rset_cmd, PSC_SMTPD_CMD_FLAG_ENABLE,
"NOOP", psc_noop_cmd, PSC_SMTPD_CMD_FLAG_ENABLE |
PSC_SMTPD_CMD_FLAG_PRE_TLS,
"VRFY", psc_vrfy_cmd, PSC_SMTPD_CMD_FLAG_ENABLE,
@@ -1031,7 +1032,8 @@
}
}
/* Command PIPELINING test. */
- if ((state->flags & PSC_STATE_MASK_PIPEL_TODO_SKIP)
+ if ((state->flags & PSC_SMTPD_CMD_FLAG_HAS_PAYLOAD) == 0
+ && (state->flags & PSC_STATE_MASK_PIPEL_TODO_SKIP)
== PSC_STATE_FLAG_PIPEL_TODO && !PSC_SMTPD_BUFFER_EMPTY(state)) {
printable(command, '?');
PSC_SMTPD_ESCAPE_TEXT(psc_temp, PSC_SMTPD_PEEK_DATA(state),