$NetBSD$

Fixes a crash on a mail with many headers.
2014-02-24 Sent upstream.

--- ./message.c.BACKUP	2014-02-03 23:27:20.000000000 +0900
+++ ./message.c	2014-02-25 00:27:04.000000000 +0900
@@ -663,7 +663,7 @@ message_multipart_next(struct filedb *fd
 		fdb->flags |= FDB_INLINE;
 		i = fdb->hdrs + nfdb->hdrs;
 		if (i > fdb->hdr_size) {
-			p = realloc(fdb->hdr, i);
+			p = realloc(fdb->hdr, sizeof(*p) * i);
 			if (!p)
 				abort();
 			fdb->hdr = p;
@@ -739,12 +739,17 @@ message_header(struct filedb *fdb)
 	fdb->hdr = malloc(sizeof(struct header) * fdb->hdr_size);
 	n = message_header_readbuf(fdb, fdb->hdr, fdb->hdr_size);
 	if (n > fdb->hdr_size) {
+		int n2;
+
 		p = realloc(fdb->hdr, sizeof(struct header) * n);
 		if (!p)
 			abort();
 		fdb->hdr = p;
-		n = message_header_readbuf(fdb, fdb->hdr + fdb->hdr_size,
+		n2 = message_header_readbuf(fdb, fdb->hdr + fdb->hdr_size,
 		    n - fdb->hdr_size);
+		if (n != n2 + fdb->hdr_size)
+		    abort();
+		fdb->hdr_size = n;
 	}
 	fdb->hdrs = n;
 	if (fdb->flags & FDB_MULTIPART) {
