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
This commit is contained in:
Jeffrey Stedfast
2000-06-14 05:10:57 +00:00
parent 477a592e59
commit abdfcfcfe2
2 changed files with 9 additions and 5 deletions

View File

@ -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)

View File

@ -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++;
}
}