changeset 26317:f07ec4961895

lib: base64 - Add assertion preventing calling base64_encode_more() after base64_encode_finish().
author Stephan Bosch <stephan.bosch@open-xchange.com>
date Thu, 05 Sep 2019 02:31:58 +0200
parents 17914623ffee
children 6f2cf5d96415
files src/lib/base64.c src/lib/base64.h
diffstat 2 files changed, 5 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib/base64.c	Thu Sep 05 01:13:46 2019 +0200
+++ b/src/lib/base64.c	Thu Sep 05 02:31:58 2019 +0200
@@ -304,6 +304,7 @@
 	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 @@
 	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;
--- a/src/lib/base64.h	Thu Sep 05 01:13:46 2019 +0200
+++ b/src/lib/base64.h	Thu Sep 05 02:31:58 2019 +0200
@@ -42,6 +42,7 @@
 	unsigned int w_buf_len;
 
 	bool pending_lf:1;
+	bool finishing:1;
 	bool finished:1;
 };