From: Timo Sirainen Date: Thu, 5 Aug 2021 15:53:57 +0000 (+0300) Subject: global: Fix various ubsan issues X-Git-Tag: 2.3.17~189 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9e80b588f49bddba9dcf339816d1256bee9be387;p=thirdparty%2Fdovecot%2Fcore.git global: Fix various ubsan issues --- diff --git a/src/lib-mail/istream-header-filter.c b/src/lib-mail/istream-header-filter.c index 8bc28fb941..1783dbd0a8 100644 --- a/src/lib-mail/istream-header-filter.c +++ b/src/lib-mail/istream-header-filter.c @@ -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); } diff --git a/src/lib-mail/test-qp-decoder.c b/src/lib-mail/test-qp-decoder.c index f005d7e9af..9b4d8272f4 100644 --- a/src/lib-mail/test-qp-decoder.c +++ b/src/lib-mail/test-qp-decoder.c @@ -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; } diff --git a/src/lib-test/test-istream.c b/src/lib-test/test-istream.c index 42e1e0a8d6..1d20748645 100644 --- a/src/lib-test/test-istream.c +++ b/src/lib-test/test-istream.c @@ -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; diff --git a/src/lib/test-base64.c b/src/lib/test-base64.c index 5231c454b5..d024890ed4 100644 --- a/src/lib/test-base64.c +++ b/src/lib/test-base64.c @@ -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; diff --git a/src/lib/test-data-stack.c b/src/lib/test-data-stack.c index 70f8238897..8f7ac75cae 100644 --- a/src/lib/test-data-stack.c +++ b/src/lib/test-data-stack.c @@ -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);