From: Timo Sirainen Date: Wed, 23 Apr 2003 14:11:17 +0000 (+0300) Subject: Fail if sequence numbers in messageset are out of range. X-Git-Tag: 1.1.alpha1~4726 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c17ad7481328cba7b2ab7172fba8c77c27a4dd7b;p=thirdparty%2Fdovecot%2Fcore.git Fail if sequence numbers in messageset are out of range. --HG-- branch : HEAD --- diff --git a/src/lib-storage/index/index-messageset.c b/src/lib-storage/index/index-messageset.c index 364747e941..c5bc3b5c71 100644 --- a/src/lib-storage/index/index-messageset.c +++ b/src/lib-storage/index/index-messageset.c @@ -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; }