]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib: Fix buffer code to satisfy static analyzers
authorAki Tuomi <aki.tuomi@dovecot.fi>
Tue, 20 Feb 2018 10:04:13 +0000 (12:04 +0200)
committerAki Tuomi <aki.tuomi@open-xchange.com>
Thu, 14 Feb 2019 09:38:16 +0000 (11:38 +0200)
src/lib/buffer.c

index f29f5b0e60a204fa02e071d37ef6b7493a9543d2..18ef9551763465030ca5f7e06caa6ec28ca293d6 100644 (file)
@@ -95,6 +95,7 @@ buffer_check_limits(struct real_buffer *buf, size_t pos, size_t data_size)
        if (new_size > buf->used)
                buf->used = new_size;
        i_assert(buf->used <= buf->alloc);
+       i_assert(buf->w_buffer != NULL);
 }
 
 #undef buffer_create_from_data
@@ -271,6 +272,8 @@ void buffer_copy(buffer_t *_dest, size_t dest_pos,
                copy_size = max_size;
 
        buffer_check_limits(dest, dest_pos, copy_size);
+       i_assert(src->r_buffer != NULL);
+
        if (src == dest) {
                memmove(dest->w_buffer + dest_pos,
                        src->r_buffer + src_pos, copy_size);
@@ -305,6 +308,7 @@ void *buffer_get_modifiable_data(const buffer_t *_buf, size_t *used_size_r)
 
        if (used_size_r != NULL)
                *used_size_r = buf->used;
+       i_assert(buf->used == 0 || buf->w_buffer != NULL);
        return buf->w_buffer;
 }
 
@@ -345,6 +349,8 @@ bool buffer_cmp(const buffer_t *buf1, const buffer_t *buf2)
 {
        if (buf1->used != buf2->used)
                return FALSE;
+       if (buf1->used == 0)
+               return TRUE;
 
        return memcmp(buf1->data, buf2->data, buf1->used) == 0;
 }