From: Timo Sirainen Date: Fri, 3 May 2024 09:45:51 +0000 (+0300) Subject: imap: COMPRESS - Fail if client pipelines data without waiting for OK reply X-Git-Tag: 2.4.0~1577 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=f0a8fd3ce659567b5913bffff1baa6aa794dae16;p=thirdparty%2Fdovecot%2Fcore.git imap: COMPRESS - Fail if client pipelines data without waiting for OK reply --- diff --git a/src/imap/cmd-compress.c b/src/imap/cmd-compress.c index 52c74b5a82..0c3042cc29 100644 --- a/src/imap/cmd-compress.c +++ b/src/imap/cmd-compress.c @@ -75,6 +75,14 @@ bool cmd_compress(struct client_command_context *cmd) } client_skip_line(client); + + /* Client cannot assume that COMPRESS works and just start sending + compressed data pipelined. Add an explicit sanity check for this. */ + if (i_stream_get_data_size(client->input) > 0) { + client_send_tagline(cmd, "BAD Client did not wait for COMPRESS reply before sending more data"); + return TRUE; + } + client_send_tagline(cmd, "OK Begin compression."); uoff_t prev_out_offset = client->output->offset;