[dovecot-cvs] dovecot/src/lib-storage/index index-messageset.c,1.17,1.18

cras at procontrol.fi cras at procontrol.fi
Mon Jun 23 21:10:04 EEST 2003


Update of /home/cvs/dovecot/src/lib-storage/index
In directory danu:/tmp/cvs-serv415/src/lib-storage/index

Modified Files:
	index-messageset.c 
Log Message:
Accessing messages in empty mailbox caused some crashes.



Index: index-messageset.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-storage/index/index-messageset.c,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -d -r1.17 -r1.18
--- index-messageset.c	23 Apr 2003 14:11:17 -0000	1.17
+++ index-messageset.c	23 Jun 2003 17:10:01 -0000	1.18
@@ -176,6 +176,12 @@
 		return FALSE;
 	}
 
+	if (ctx->messages_count == 0 && !ctx->uidset &&
+	    num == (unsigned int)-1) {
+		ctx->error = "No messages in mailbox";
+		return FALSE;
+	}
+
 	return TRUE;
 }
 
@@ -187,11 +193,17 @@
 		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) {



More information about the dovecot-cvs mailing list