From: Timo Sirainen Date: Mon, 23 Jun 2003 17:10:01 +0000 (+0300) Subject: Accessing messages in empty mailbox caused some crashes. X-Git-Tag: 1.1.alpha1~4539 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=868a0c13ed3cb7a2bba90c5db05a78b6cefb13cf;p=thirdparty%2Fdovecot%2Fcore.git Accessing messages in empty mailbox caused some crashes. --HG-- branch : HEAD --- diff --git a/src/lib-storage/index/index-messageset.c b/src/lib-storage/index/index-messageset.c index c5bc3b5c71..bf3bfd8efb 100644 --- a/src/lib-storage/index/index-messageset.c +++ b/src/lib-storage/index/index-messageset.c @@ -176,6 +176,12 @@ static int messageset_parse_next(struct messageset_context *ctx) return FALSE; } + if (ctx->messages_count == 0 && !ctx->uidset && + num == (unsigned int)-1) { + ctx->error = "No messages in mailbox"; + return FALSE; + } + return TRUE; } @@ -187,12 +193,18 @@ static int uidset_init(struct messageset_context *ctx) struct mail_index_record *rec; rec = ctx->index->lookup(ctx->index, ctx->messages_count); - ctx->num1 = rec == NULL ? 0 : rec->uid; + if (rec == NULL) + return 1; + + ctx->num1 = rec->uid; } if (ctx->num2 == (unsigned int)-1) { ctx->num2 = ctx->index->header->next_uid-1; + if (ctx->num2 == 0) + return 1; + /* num1 might actually be larger, check */ if (ctx->num1 > ctx->num2) { unsigned int temp = ctx->num1;