]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
Fail if sequence numbers in messageset are out of range.
authorTimo Sirainen <tss@iki.fi>
Wed, 23 Apr 2003 14:11:17 +0000 (17:11 +0300)
committerTimo Sirainen <tss@iki.fi>
Wed, 23 Apr 2003 14:11:17 +0000 (17:11 +0300)
--HG--
branch : HEAD

src/lib-storage/index/index-messageset.c

index 364747e9412cb049eb7fd2ec92c8b3f01fdc6ccf..c5bc3b5c71643efc6c972ad636d2c09c77e653bc 100644 (file)
@@ -111,6 +111,8 @@ static unsigned int get_next_number(const char **str)
 
 static int messageset_parse_next(struct messageset_context *ctx)
 {
+       unsigned int num;
+
        if (ctx->p == NULL) {
                /* num1..num2 already set.  */
                ctx->p = "";
@@ -165,6 +167,15 @@ static int messageset_parse_next(struct messageset_context *ctx)
                ctx->num2 = temp;
        }
 
+       num = ctx->num2 == (unsigned int)-1 ? ctx->num1 : ctx->num2;
+       if (num > ctx->messages_count && !ctx->uidset &&
+           num != (unsigned int)-1) {
+               ctx->error = t_strdup_printf("Message sequence %u "
+                                            "larger than message count (%u)",
+                                            num, ctx->messages_count);
+               return FALSE;
+       }
+
        return TRUE;
 }