]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
global: Add asserts to make sure memcpy() won't be called with NULL parameters
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Sat, 14 Jan 2023 22:40:32 +0000 (00:40 +0200)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Wed, 1 Feb 2023 11:02:50 +0000 (11:02 +0000)
These asserts aren't expected to trigger with current code.

src/lib-index/mail-index-transaction-update.c
src/lib-index/mail-index.c
src/lib-mail/message-header-parser.c
src/lib/file-cache.c
src/replication/aggregator/replicator-connection.c

index 8158e4480e3fbb80dc528545ddd87c7982ed1ca9..74f5dc228fe95f15c41df08ef19744b904e0aba4 100644 (file)
@@ -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);
 
index 1d880e9e7b5d193b31c959ad702ecf5af81c5d46..3837f59d2db7487319c7905ebfe646950020e7ee 100644 (file)
@@ -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);
index 8e8d01347dda8f1cef2435da6d0cabae34f07a07..f6f595d894c992693db6a261a8798c79831a0b89 100644 (file)
@@ -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);
index e9af9898794f09b9c6dedc07b8b327c3156b17bf..ad9ce64c5f96cb4e1d2f0f39b2aa2c7827f98ae6 100644 (file)
@@ -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);
 
index b5bfed18608efbc5d6ff1c352d62da5decf86ae9..44b37b9239433b85b75ff74b8ca0e8afbb631607 100644 (file)
@@ -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);