dovecot-2.2: imap: If any FETCH/STORE tries to access modseqs wh...

dovecot at dovecot.org dovecot at dovecot.org
Thu Dec 19 21:37:51 EET 2013


details:   http://hg.dovecot.org/dovecot-2.2/rev/bd50cc9fa757
changeset: 17074:bd50cc9fa757
user:      Timo Sirainen <tss at iki.fi>
date:      Thu Dec 19 21:37:28 2013 +0200
description:
imap: If any FETCH/STORE tries to access modseqs when NOMODSEQ was returned, return BAD.

diffstat:

 src/imap/cmd-fetch.c  |  5 +++++
 src/imap/cmd-store.c  |  5 +++++
 src/imap/imap-fetch.c |  4 ++++
 3 files changed, 14 insertions(+), 0 deletions(-)

diffs (44 lines):

diff -r 1d8fef81d4b6 -r bd50cc9fa757 src/imap/cmd-fetch.c
--- a/src/imap/cmd-fetch.c	Thu Dec 19 21:31:57 2013 +0200
+++ b/src/imap/cmd-fetch.c	Thu Dec 19 21:37:28 2013 +0200
@@ -111,6 +111,11 @@
 	uint64_t modseq;
 
 	if (strcmp(name, "CHANGEDSINCE") == 0) {
+		if (cmd->client->nonpermanent_modseqs) {
+			client_send_command_error(cmd,
+				"FETCH CHANGEDSINCE can't be used with non-permanent modseqs");
+			return FALSE;
+		}
 		if (!imap_arg_get_atom(*args, &str) ||
 		    str_to_uint64(str, &modseq) < 0) {
 			client_send_command_error(cmd,
diff -r 1d8fef81d4b6 -r bd50cc9fa757 src/imap/cmd-store.c
--- a/src/imap/cmd-store.c	Thu Dec 19 21:31:57 2013 +0200
+++ b/src/imap/cmd-store.c	Thu Dec 19 21:37:28 2013 +0200
@@ -57,6 +57,11 @@
 		}
 
 		if (strcasecmp(name, "UNCHANGEDSINCE") == 0) {
+			if (ctx->cmd->client->nonpermanent_modseqs) {
+				client_send_command_error(ctx->cmd,
+					"STORE UNCHANGEDSINCE can't be used with non-permanent modseqs");
+				return FALSE;
+			}
 			if (str_to_uint64(value, &ctx->max_modseq) < 0) {
 				client_send_command_error(ctx->cmd,
 							  "Invalid modseq");
diff -r 1d8fef81d4b6 -r bd50cc9fa757 src/imap/imap-fetch.c
--- a/src/imap/imap-fetch.c	Thu Dec 19 21:31:57 2013 +0200
+++ b/src/imap/imap-fetch.c	Thu Dec 19 21:37:28 2013 +0200
@@ -804,6 +804,10 @@
 
 bool imap_fetch_modseq_init(struct imap_fetch_init_context *ctx)
 {
+	if (ctx->fetch_ctx->client->nonpermanent_modseqs) {
+		ctx->error = "FETCH MODSEQ can't be used with non-permanent modseqs";
+		return FALSE;
+	}
 	(void)client_enable(ctx->fetch_ctx->client, MAILBOX_FEATURE_CONDSTORE);
 	imap_fetch_add_handler(ctx, IMAP_FETCH_HANDLER_FLAG_BUFFERED,
 			       NULL, fetch_modseq, NULL);


More information about the dovecot-cvs mailing list