diff options
author | Patrick Monnerat <patrick@monnerat.net> | 2017-10-19 18:33:27 +0100 |
---|---|---|
committer | Patrick Monnerat <patrick@monnerat.net> | 2017-10-19 18:33:27 +0100 |
commit | a8742efe42d72e25a8c5041db35115dbf4fa6c45 (patch) | |
tree | cc761732e9b15f3b00e886bcf4ca68b37f0b3027 | |
parent | 2509395ecf57765542b7137d84d16eedc0abb835 (diff) |
mime: limit bas64-encoded lines length to 76 characters
-rw-r--r-- | lib/mime.c | 4 | ||||
-rw-r--r-- | tests/data/test648 | 4 |
2 files changed, 4 insertions, 4 deletions
diff --git a/lib/mime.c b/lib/mime.c index c3c370891..d9b7f524e 100644 --- a/lib/mime.c +++ b/lib/mime.c @@ -406,7 +406,7 @@ static size_t encoder_base64_read(char *buffer, size_t size, bool ateof, while(st->bufbeg < st->bufend) { /* Line full ? */ - if(st->pos >= MAX_ENCODED_LINE_LENGTH - 4) { + if(st->pos > MAX_ENCODED_LINE_LENGTH - 4) { /* Yes, we need 2 characters for CRLF. */ if(size < 2) break; @@ -421,7 +421,7 @@ static size_t encoder_base64_read(char *buffer, size_t size, bool ateof, if(size < 4 || st->bufend - st->bufbeg < 3) break; - /* Encode three bytes a four characters. */ + /* Encode three bytes as four characters. */ i = st->buf[st->bufbeg++] & 0xFF; i = (i << 8) | (st->buf[st->bufbeg++] & 0xFF); i = (i << 8) | (st->buf[st->bufbeg++] & 0xFF); diff --git a/tests/data/test648 b/tests/data/test648 index cd8f02085..a2b227bcf 100644 --- a/tests/data/test648 +++ b/tests/data/test648 @@ -66,8 +66,8 @@ This is the e-mail inline text with a very long line containing the special= Content-Disposition: attachment; filename="test648.txt"
Content-Transfer-Encoding: base64
-VGhpcyBpcyBhbiBhdHRhY2hlZCBmaWxlLgoKSXQgbWF5IGNvbnRhaW4gYW55IHR5cGUgb2Yg
-ZGF0YSBhbmQgd2lsbCBiZSBlbmNvZGVkIGluIGJhc2U2NCBmb3IgdHJhbnNmZXIuCg==
+VGhpcyBpcyBhbiBhdHRhY2hlZCBmaWxlLgoKSXQgbWF5IGNvbnRhaW4gYW55IHR5cGUgb2YgZGF0
+YSBhbmQgd2lsbCBiZSBlbmNvZGVkIGluIGJhc2U2NCBmb3IgdHJhbnNmZXIuCg==
--------------------------------
.
</upload> |