[dovecot-cvs] dovecot/src/imap imap-search.c,1.10,1.11

cras at dovecot.org cras at dovecot.org
Mon Jul 4 00:09:42 EEST 2005


Update of /var/lib/cvs/dovecot/src/imap
In directory talvi:/tmp/cvs-serv9497/imap

Modified Files:
	imap-search.c 
Log Message:
Moved sequence set range checks to imap-specific code, so that SEARCH can
accept sequence sets with sequence being larger than number of messages in
mailbox.



Index: imap-search.c
===================================================================
RCS file: /var/lib/cvs/dovecot/src/imap/imap-search.c,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -d -r1.10 -r1.11
--- imap-search.c	5 Feb 2005 18:07:26 -0000	1.10
+++ imap-search.c	3 Jul 2005 21:09:40 -0000	1.11
@@ -413,16 +413,18 @@
 	return first_sarg;
 }
 
-static int imap_search_get_msgset_arg(pool_t pool, const char *messageset,
+static int imap_search_get_msgset_arg(struct client_command_context *cmd,
+				      const char *messageset,
 				      struct mail_search_arg **arg_r,
 				      const char **error_r)
 {
 	struct mail_search_arg *arg;
 
-	arg = p_new(pool, struct mail_search_arg, 1);
+	arg = p_new(cmd->pool, struct mail_search_arg, 1);
 	arg->type = SEARCH_SEQSET;
-	arg->value.seqset = imap_messageset_parse(pool, messageset);
-	if (arg->value.seqset == NULL) {
+	arg->value.seqset = imap_messageset_parse(cmd->pool, messageset);
+	if (arg->value.seqset == NULL ||
+	    arg->value.seqset->seq2 > cmd->client->messages_count) {
 		*error_r = "Invalid messageset";
 		return -1;
 	}
@@ -452,8 +454,7 @@
 	int ret;
 
 	if (!uid) {
-		ret = imap_search_get_msgset_arg(cmd->pool, set,
-						 &search_arg, &error);
+		ret = imap_search_get_msgset_arg(cmd, set, &search_arg, &error);
 	} else {
 		ret = imap_search_get_uidset_arg(cmd->pool,
 						 cmd->client->mailbox, set,



More information about the dovecot-cvs mailing list