From a288e920d380efb4f3d96d1eb2c3a06db047c417 Mon Sep 17 00:00:00 2001 From: Stephan Bosch Date: Thu, 5 Sep 2019 02:31:58 +0200 Subject: [PATCH] lib: base64 - Add assertion preventing calling base64_encode_more() after base64_encode_finish(). --- src/lib/base64.c | 6 ++++-- src/lib/base64.h | 1 + 2 files changed, 5 insertions(+), 2 deletions(-) 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; }; -- 2.47.3