From: Stephan Bosch Date: Thu, 5 Sep 2019 00:31:58 +0000 (+0200) Subject: lib: base64 - Add assertion preventing calling base64_encode_more() after base64_enco... X-Git-Tag: 2.3.8~89 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a288e920d380efb4f3d96d1eb2c3a06db047c417;p=thirdparty%2Fdovecot%2Fcore.git lib: base64 - Add assertion preventing calling base64_encode_more() after base64_encode_finish(). --- diff --git a/src/lib/base64.c b/src/lib/base64.c index 291c4747ff..131ef4d6e4 100644 --- a/src/lib/base64.c +++ b/src/lib/base64.c @@ -304,6 +304,7 @@ bool base64_encode_more(struct base64_encoder *enc, const unsigned char *src_c, *src_p; size_t src_pos; + i_assert(!enc->finishing); i_assert(!enc->finished); src_p = src_c = src; @@ -386,12 +387,13 @@ bool base64_encode_finish(struct base64_encoder *enc, buffer_t *dest) size_t dst_avail, line_avail, write_full, write; unsigned int w_buf_pos = 0; + i_assert(!enc->finished); + enc->finishing = TRUE; + dst_avail = 0; if (dest != NULL) dst_avail = buffer_get_avail_size(dest); - i_assert(!enc->finished); - if (enc->w_buf_len > 0 || enc->pending_lf) { if (dst_avail == 0) return FALSE; diff --git a/src/lib/base64.h b/src/lib/base64.h index 62ec6b2bfc..e879433f47 100644 --- a/src/lib/base64.h +++ b/src/lib/base64.h @@ -42,6 +42,7 @@ struct base64_encoder { unsigned int w_buf_len; bool pending_lf:1; + bool finishing:1; bool finished:1; };