]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
global: Fix various ubsan issues
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Thu, 5 Aug 2021 15:53:57 +0000 (18:53 +0300)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Wed, 18 Aug 2021 06:41:11 +0000 (06:41 +0000)
src/lib-mail/istream-header-filter.c
src/lib-mail/test-qp-decoder.c
src/lib-test/test-istream.c
src/lib/test-base64.c
src/lib/test-data-stack.c

index 8bc28fb94160d533f752e22c3795675fba173020..1783dbd0a89a0c746bbcf02a83d82316896834f4 100644 (file)
@@ -585,8 +585,8 @@ static void i_stream_header_filter_seek(struct istream_private *stream,
                i_stream_header_filter_seek_to_header(mstream, v_offset);
        } else {
                /* body */
-               v_offset += mstream->header_size.physical_size -
-                       mstream->header_size.virtual_size;
+               v_offset -= mstream->header_size.virtual_size;
+               v_offset += mstream->header_size.physical_size;
                i_stream_seek(stream->parent,
                              stream->parent_start_offset + v_offset);
        }
index f005d7e9af2229f9d790c3cbf60095e9461ab580..9b4d8272f4bcba66e2f42ab9d409ae7656f65017 100644 (file)
@@ -163,7 +163,7 @@ static void test_qp_decoder(void)
                str_truncate(str, 0);
                ret = 0;
                for (j = 0; input[j] != '\0'; j++) {
-                       unsigned char c = input[j];
+                       unsigned char c = (unsigned char)input[j];
                        if (qp_decoder_more(qp, &c, 1, &error_pos, &error) < 0)
                                ret = -1;
                }
index 42e1e0a8d6a03ce07eb56e837726413a4c460bb4..1d20748645da32538bc16d4b40504cbaaf915dce 100644 (file)
@@ -63,8 +63,10 @@ static ssize_t test_read(struct istream_private *stream)
                                    memarea_get_refcount(stream->memarea) > 1)) {
                        void *old_w_buffer = stream->w_buffer;
                        stream->w_buffer = i_malloc(cur_max);
-                       memcpy(stream->w_buffer, old_w_buffer,
-                              I_MIN(stream->buffer_size, cur_max));
+                       if (stream->buffer_size != 0) {
+                               memcpy(stream->w_buffer, old_w_buffer,
+                                      I_MIN(stream->buffer_size, cur_max));
+                       }
                        stream->buffer = stream->w_buffer;
                        stream->buffer_size = cur_max;
 
index 5231c454b54a25721439e964e78ef382cca5ebe3..d024890ed42479059f8eba567c9bb8e14d56c09f 100644 (file)
@@ -80,7 +80,7 @@ static void test_base64_decode(void)
                        MAX_BASE64_DECODED_SIZE(strlen(tests[i].input));
 
                buffer_create_from_data(&buf,
-                                       (max_decoded_size == 0 ? NULL :
+                                       (max_decoded_size == 0 ? "" :
                                         t_malloc0(max_decoded_size)),
                                        max_decoded_size);
                str = &buf;
@@ -204,7 +204,7 @@ static void test_base64url_decode(void)
                        MAX_BASE64_DECODED_SIZE(strlen(tests[i].input));
 
                buffer_create_from_data(&buf,
-                                       (max_decoded_size == 0 ? NULL :
+                                       (max_decoded_size == 0 ? "" :
                                         t_malloc0(max_decoded_size)),
                                        max_decoded_size);
                str = &buf;
@@ -884,7 +884,7 @@ static void test_base64_decode_lowlevel(void)
                        MAX_BASE64_DECODED_SIZE(strlen(test->input));
 
                buffer_create_from_data(&buf,
-                                       (max_decoded_size == 0 ? NULL :
+                                       (max_decoded_size == 0 ? "" :
                                         t_malloc0(max_decoded_size)),
                                        max_decoded_size);
                str = &buf;
index 70f82388977b3a04f22e6444544e5278593ba68a..8f7ac75caec7d55763069d71dfefa88b74852eab 100644 (file)
@@ -120,7 +120,7 @@ static void test_ds_grow_in_event(void)
        i_set_debug_handler(test_ds_growing_debug);
        buf = t_buffer_get(alloc1);
        for (i = 0; i < alloc1; i++)
-               buf[i] = i;
+               buf[i] = i & 0xff;
 
        test_assert(ds_grow_event_count == 0);
        buf = t_buffer_reget(buf, 65536);