diff options
author | Jeffrey Stedfast <fejj@src.gnome.org> | 2000-06-14 13:10:57 +0800 |
---|---|---|
committer | Jeffrey Stedfast <fejj@src.gnome.org> | 2000-06-14 13:10:57 +0800 |
commit | abdfcfcfe2f4fb79a05bd0e2def3d65a668e96ae (patch) | |
tree | 834d45054e39e3f9096ce96188b46383bcc3c134 /camel | |
parent | 477a592e59c0ff8850c01edf56033f14ce166abe (diff) | |
download | gsoc2013-evolution-abdfcfcfe2f4fb79a05bd0e2def3d65a668e96ae.tar.gz gsoc2013-evolution-abdfcfcfe2f4fb79a05bd0e2def3d65a668e96ae.tar.zst gsoc2013-evolution-abdfcfcfe2f4fb79a05bd0e2def3d65a668e96ae.zip |
updated the crlf filter:
encoder: allocate more memory (3 * len instead of 2 * len)
decoder: prevent p from pointing beyond the end of the buffer
svn path=/trunk/; revision=3561
Diffstat (limited to 'camel')
-rw-r--r-- | camel/ChangeLog | 4 | ||||
-rw-r--r-- | camel/camel-mime-filter-crlf.c | 10 |
2 files changed, 9 insertions, 5 deletions
diff --git a/camel/ChangeLog b/camel/ChangeLog index 964eab8fb6..d5e69538e3 100644 --- a/camel/ChangeLog +++ b/camel/ChangeLog @@ -1,5 +1,9 @@ 2000-06-14 Jeffrey Stedfast <fejj@helixcode.com> + * camel-mime-filter-crlf.c (filter): Updated the encoder to allocate more + memory (since we are also now adding dots). Also updated the decoder as we + have found that it sometimes passes the end of the buffer. + * providers/pop3/camel-pop3-folder.c (get_message_by_uid): Took out the filter code ( we already filter in camel_pop3_command_get_additional_data) diff --git a/camel/camel-mime-filter-crlf.c b/camel/camel-mime-filter-crlf.c index 5cc409d554..8e3ff2175c 100644 --- a/camel/camel-mime-filter-crlf.c +++ b/camel/camel-mime-filter-crlf.c @@ -76,7 +76,7 @@ filter (CamelMimeFilter *f, char *in, size_t len, size_t prespace, do_dots = crlf->mode == CAMEL_MIME_FILTER_CRLF_MODE_CRLF_DOTS; if (crlf->direction == CAMEL_MIME_FILTER_CRLF_ENCODE) { - camel_mime_filter_set_size (f, 2 * len, FALSE); + camel_mime_filter_set_size (f, 3 * len, FALSE); p = in; q = f->outbuf; @@ -96,29 +96,29 @@ filter (CamelMimeFilter *f, char *in, size_t len, size_t prespace, while (p < in + len) { if (*p == '\r') { crlf->saw_cr = TRUE; - p++; } else { if (crlf->saw_cr) { if (*p != '\n') *q++ = '\r'; crlf->saw_cr = FALSE; } - *q++ = *p++; + *q++ = *p; } if (do_dots) { if (*p == '.' && *(p - 1) == '\n') { crlf->saw_dot = TRUE; - p++; } else { if (crlf->saw_dot) { if (*p == '.') p++; crlf->saw_dot = FALSE; } - *q++ = *p++; + *q++ = *p; } } + + p++; } } |