This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "GNU Mailutils".
http://git.savannah.gnu.org/cgit/mailutils.git/commit/?id=d31b2f980ff7e040103428d9cfb227df6e260c6e The branch, master has been updated via d31b2f980ff7e040103428d9cfb227df6e260c6e (commit) via 37f87dce4a7b47cb4b61163b6f66ea6658eaf23b (commit) via b4b8b6ec832014c02a51cdcf4ce84bd38cc3f05f (commit) via 21b82ef506c8be16a2022324cd3678a421b85a91 (commit) from 1a771a60bf194a84f8e2df404a768ea71623fbf9 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit d31b2f980ff7e040103428d9cfb227df6e260c6e Author: Sergey Poznyakoff <g...@gnu.org.ua> Date: Thu Apr 29 14:08:01 2010 +0300 Minor change * libproto/include/mime0.h (struct _mu_mime): Use size_t for offsets, ssize_t for line_ndx. commit 37f87dce4a7b47cb4b61163b6f66ea6658eaf23b Author: Sergey Poznyakoff <g...@gnu.org.ua> Date: Thu Apr 29 13:59:30 2010 +0300 Allow for a sequence of semicolons before kw/value pair in a structured header. * mailbox/mimehdr.c (_header_get_param): Skip superfluous semicolons. commit b4b8b6ec832014c02a51cdcf4ce84bd38cc3f05f Author: Sergey Poznyakoff <g...@gnu.org.ua> Date: Thu Apr 29 13:38:32 2010 +0300 Remove line length limitation in mime parser. * libproto/include/mime0.h (struct _mu_mime): New member line_size. * mailbox/mime.c (_mime_setup_buffers): Use line_size instead of MIME_MAX_HDR_LEN. (_mime_parse_mpart_message): Reallocate cur_line as necessary. (mu_mime_create): Initialize line_size. commit 21b82ef506c8be16a2022324cd3678a421b85a91 Author: Sergey Poznyakoff <g...@gnu.org.ua> Date: Thu Apr 29 13:34:30 2010 +0300 Allow for certain class of broken headers. * mailbox/mimehdr.c (_header_get_param): Tolerate unquoted value parts which contain tspecials, except ';'. ----------------------------------------------------------------------- Summary of changes: libproto/include/mime0.h | 31 ++++++++++++++++--------------- mailbox/mime.c | 16 ++++++++++++---- mailbox/mimehdr.c | 14 +++++++++++++- 3 files changed, 41 insertions(+), 20 deletions(-) diff --git a/libproto/include/mime0.h b/libproto/include/mime0.h index 145db33..c1bce64 100644 --- a/libproto/include/mime0.h +++ b/libproto/include/mime0.h @@ -58,27 +58,28 @@ struct _mu_mime int flags; char *content_type; - int tparts; - int nmtp_parts; + size_t tparts; + size_t nmtp_parts; struct _mime_part **mtp_parts; /* list of parts in the msg */ char *boundary; - int cur_offset; - int cur_part; - int part_offset; - int boundary_len; - int preamble; - int postamble; + size_t cur_offset; + size_t cur_part; + size_t part_offset; + size_t boundary_len; + size_t preamble; + size_t postamble; /* parser state */ char *cur_line; - int line_ndx; + ssize_t line_ndx; + size_t line_size; char *cur_buf; - int buf_size; + size_t buf_size; char *header_buf; - int header_buf_size; - int header_length; - int body_offset; - int body_length; - int body_lines; + size_t header_buf_size; + size_t header_length; + size_t body_offset; + size_t body_length; + size_t body_lines; int parser_state; }; diff --git a/mailbox/mime.c b/mailbox/mime.c index 421d686..33186d9 100644 --- a/mailbox/mime.c +++ b/mailbox/mime.c @@ -224,7 +224,7 @@ _mime_setup_buffers (mu_mime_t mime) return ENOMEM; } if (mime->cur_line == NULL - && (mime->cur_line = calloc (MIME_MAX_HDR_LEN, 1)) == NULL) + && (mime->cur_line = calloc (mime->line_size, 1)) == NULL) { free (mime->cur_buf); return ENOMEM; @@ -380,10 +380,17 @@ _mime_parse_mpart_message (mu_mime_t mime) } } mime->line_ndx++; - if (mime->line_ndx >= MIME_MAX_HDR_LEN) + if (mime->line_ndx >= mime->line_size) { - mime->line_ndx = 0; - mime->parser_state = MIME_STATE_BEGIN_LINE; + size_t newsize = mime->line_size + MIME_MAX_HDR_LEN; + char *p = realloc (mime->cur_line, newsize); + if (!p) + { + ret = ENOMEM; + break; + } + mime->cur_line = p; + mime->line_size = newsize; } mime->cur_offset++; nbytes--; @@ -806,6 +813,7 @@ mu_mime_create (mu_mime_t *pmime, mu_message_t msg, int flags) { mime->msg = msg; mime->buf_size = MIME_DFLT_BUF_SIZE; + mime->line_size = MIME_MAX_HDR_LEN; mu_message_get_body (msg, &body); mu_body_get_stream (body, &(mime->stream)); } diff --git a/mailbox/mimehdr.c b/mailbox/mimehdr.c index 3391868..731e485 100644 --- a/mailbox/mimehdr.c +++ b/mailbox/mimehdr.c @@ -144,6 +144,18 @@ _header_get_param (const char *field_body, /* walk upto start of param */ p = mu_str_skip_class (p + 1, MU_CTYPE_SPACE); + + /* Reportedly, some MUAs insert several semicolons */ + if (*p == ';') + continue; + + /* Ignore stray characters */ + if (_ISSPECIAL (*p)) + { + p = strchr (p, ';'); + continue; + } + if ((ep = strchr (p, '=')) == NULL) break; /* Allow for optional whitespace after '=' */ @@ -176,7 +188,7 @@ _header_get_param (const char *field_body, } else { - for (e = v + 1; !(_ISSPECIAL (*e) || mu_isspace (*e)); e++) + for (e = v + 1; *e && !(*e == ';' || mu_isspace (*e)); e++) ; len = e - v; } hooks/post-receive -- GNU Mailutils _______________________________________________ Commit-mailutils mailing list Commit-mailutils@gnu.org http://lists.gnu.org/mailman/listinfo/commit-mailutils