From abdfcfcfe2f4fb79a05bd0e2def3d65a668e96ae Mon Sep 17 00:00:00 2001 From: Jeffrey Stedfast Date: Wed, 14 Jun 2000 05:10:57 +0000 Subject: 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 --- camel/camel-mime-filter-crlf.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'camel/camel-mime-filter-crlf.c') 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++; } } -- cgit v1.2.3