]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib: base64 - Add assertion preventing calling base64_encode_more() after base64_enco...
authorStephan Bosch <stephan.bosch@open-xchange.com>
Thu, 5 Sep 2019 00:31:58 +0000 (02:31 +0200)
committerVille Savolainen <ville.savolainen@dovecot.fi>
Tue, 10 Sep 2019 07:02:43 +0000 (10:02 +0300)
src/lib/base64.c
src/lib/base64.h

index 291c4747ff66fa09aa244ddd5fda3d47746d30be..131ef4d6e4b280287bd28c776c8fab73a6090af9 100644 (file)
@@ -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;
index 62ec6b2bfc45528d8a26a4a7e4b7e20f7059429d..e879433f47ef7450671d76058dd58b3774a3c6de 100644 (file)
@@ -42,6 +42,7 @@ struct base64_encoder {
        unsigned int w_buf_len;
 
        bool pending_lf:1;
+       bool finishing:1;
        bool finished:1;
 };