+2007-03-21 [colin] 2.8.1cvs28
+
+ * src/procmime.c
+ Fix bug 1157, 'some broken messages confuse
+ mime parser'. Make sure we can't have MimeInfos
+ with negative sizes.
+
2007-03-20 [colin] 2.8.1cvs27
* src/main.c
( cvs diff -u -r 1.213.2.135 -r 1.213.2.136 src/folder.c; cvs diff -u -r 1.87.2.37 -r 1.87.2.38 src/folder.h; cvs diff -u -r 1.105.2.87 -r 1.105.2.88 src/prefs_account.c; cvs diff -u -r 1.1.2.51 -r 1.1.2.52 src/wizard.c; ) > 2.8.1cvs25.patchset
( cvs diff -u -r 1.79.2.52 -r 1.79.2.53 src/mh.c; ) > 2.8.1cvs26.patchset
( cvs diff -u -r 1.115.2.143 -r 1.115.2.144 src/main.c; ) > 2.8.1cvs27.patchset
+( cvs diff -u -r 1.49.2.90 -r 1.49.2.91 src/procmime.c; ) > 2.8.1cvs28.patchset
guint content_start, i;
FILE *fp;
gchar *tmp;
+ gint len = 0;
procmime_decode_content(mimeinfo);
content_start = ftell(fp);
fclose(fp);
+ len = mimeinfo->length - (content_start - mimeinfo->offset);
+ if (len < 0)
+ len = 0;
procmime_parse_mimepart(mimeinfo,
hentry[0].body, hentry[1].body,
hentry[2].body, hentry[3].body,
hentry[4].body, hentry[5].body,
mimeinfo->data.filename, content_start,
- mimeinfo->length - (content_start - mimeinfo->offset));
+ len);
for (i = 0; i < (sizeof hentry / sizeof hentry[0]); i++) {
g_free(hentry[i].body);
if (IS_BOUNDARY(buf, boundary, boundary_len)) {
if (lastoffset != -1) {
+ gint len = (ftell(fp) - strlen(buf)) - lastoffset - 1;
+ if (len < 0)
+ len = 0;
result = procmime_parse_mimepart(mimeinfo,
hentry[0].body, hentry[1].body,
hentry[2].body, hentry[3].body,
hentry[4].body, hentry[5].body,
mimeinfo->data.filename, lastoffset,
- (ftell(fp) - strlen(buf)) - lastoffset - 1);
+ len);
}
if (buf[2 + boundary_len] == '-' &&