From: Timo Sirainen Date: Wed, 6 Oct 2021 23:32:26 +0000 (+0300) Subject: lib: base64 - Add asserts to check max_line_len is in valid range X-Git-Tag: 2.3.18~233 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=44bd1596795590de128094318e737fe1503109c0;p=thirdparty%2Fdovecot%2Fcore.git lib: base64 - Add asserts to check max_line_len is in valid range --- diff --git a/src/lib/base64.c b/src/lib/base64.c index 3c7117db85..5e4f96a5bc 100644 --- a/src/lib/base64.c +++ b/src/lib/base64.c @@ -38,6 +38,7 @@ uoff_t base64_get_full_encoded_size(struct base64_encoder *enc, uoff_t src_size) if (out_size > enc->max_line_len) { /* newline between each full line */ + i_assert(enc->max_line_len > 0); newlines = (out_size / enc->max_line_len) - 1; /* an extra newline to separate the partial last line from the previous full line */ @@ -123,6 +124,7 @@ size_t base64_encode_get_size(struct base64_encoder *enc, size_t src_size) size_t line_part, lines; /* Calculate how many line endings must be added */ + i_assert(enc->max_line_len > 0); lines = out_size / enc->max_line_len; line_part = out_size % enc->max_line_len; if (enc->cur_line_len > (enc->max_line_len - line_part)) @@ -152,6 +154,7 @@ size_t base64_encode_get_full_space(struct base64_encoder *enc, /* Calculate how many line endings must be added if all space were used. */ + i_assert(enc->max_line_len < SIZE_MAX-2); max_line_space = enc->max_line_len + (crlf ? 2 : 1); lines = dst_space / max_line_space;