From: Timo Sirainen Date: Sat, 14 Jan 2023 22:40:32 +0000 (+0200) Subject: global: Add asserts to make sure memcpy() won't be called with NULL parameters X-Git-Tag: 2.4.0~3016 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=53336fe8a2fe71716e69b1395451005a3f67ce84;p=thirdparty%2Fdovecot%2Fcore.git global: Add asserts to make sure memcpy() won't be called with NULL parameters These asserts aren't expected to trigger with current code. --- diff --git a/src/lib-index/mail-index-transaction-update.c b/src/lib-index/mail-index-transaction-update.c index 8158e4480e..74f5dc228f 100644 --- a/src/lib-index/mail-index-transaction-update.c +++ b/src/lib-index/mail-index-transaction-update.c @@ -715,6 +715,7 @@ void mail_index_update_header(struct mail_index_transaction *t, { i_assert(offset < sizeof(t->pre_hdr_change)); i_assert(size <= sizeof(t->pre_hdr_change) - offset); + i_assert(size > 0); t->log_updates = TRUE; @@ -991,6 +992,7 @@ void mail_index_update_header_ext(struct mail_index_transaction *t, struct mail_index_transaction_ext_hdr_update *hdr; size_t new_size; + i_assert(size > 0); i_assert(offset <= (uint32_t)-1 && size <= (uint32_t)-1 && offset + size <= (uint32_t)-1); diff --git a/src/lib-index/mail-index.c b/src/lib-index/mail-index.c index 1d880e9e7b..3837f59d2d 100644 --- a/src/lib-index/mail-index.c +++ b/src/lib-index/mail-index.c @@ -238,6 +238,7 @@ void mail_index_set_ext_init_data(struct mail_index *index, uint32_t ext_id, i_assert(index->set.ext_hdr_init_data == NULL || index->set.ext_hdr_init_id == ext_id); + i_assert(size > 0); rext = array_idx(&index->extensions, ext_id); i_assert(rext->hdr_size == size); diff --git a/src/lib-mail/message-header-parser.c b/src/lib-mail/message-header-parser.c index 8e8d01347d..f6f595d894 100644 --- a/src/lib-mail/message-header-parser.c +++ b/src/lib-mail/message-header-parser.c @@ -435,6 +435,8 @@ void message_header_line_write(buffer_t *output, const char * message_header_strdup(pool_t pool, const unsigned char *data, size_t size) { + i_assert(data != NULL); + if (memchr(data, '\0', size) == NULL) { /* fast path */ char *dest = p_malloc(pool, size+1); diff --git a/src/lib/file-cache.c b/src/lib/file-cache.c index e9af989879..ad9ce64c5f 100644 --- a/src/lib/file-cache.c +++ b/src/lib/file-cache.c @@ -240,6 +240,7 @@ void file_cache_write(struct file_cache *cache, const void *data, size_t size, unsigned char *bits; unsigned int first_page, last_page; + i_assert(size > 0); i_assert(page_size > 0); i_assert(UOFF_T_MAX - offset > size); diff --git a/src/replication/aggregator/replicator-connection.c b/src/replication/aggregator/replicator-connection.c index b5bfed1860..44b37b9239 100644 --- a/src/replication/aggregator/replicator-connection.c +++ b/src/replication/aggregator/replicator-connection.c @@ -253,6 +253,8 @@ replicator_connection_create_inet(const struct ip_addr *ips, { struct replicator_connection *conn; + i_assert(ips_count > 0); + conn = replicator_connection_create(); conn->callback = callback; conn->ips = i_new(struct ip_addr, ips_count);