aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Monnerat <patrick@monnerat.net>2017-10-19 18:33:27 +0100
committerPatrick Monnerat <patrick@monnerat.net>2017-10-19 18:33:27 +0100
commita8742efe42d72e25a8c5041db35115dbf4fa6c45 (patch)
treecc761732e9b15f3b00e886bcf4ca68b37f0b3027
parent2509395ecf57765542b7137d84d16eedc0abb835 (diff)
mime: limit bas64-encoded lines length to 76 characters
-rw-r--r--lib/mime.c4
-rw-r--r--tests/data/test6484
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>