[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