test_assert_idx(pos + siz <= sizeof(payload), pos);
if (pos + siz > sizeof(payload)) break;
- test_assert_idx(memcmp(ptr, payload + pos, siz) == 0, pos);
+ test_assert_idx(siz == 0 || memcmp(ptr, payload + pos, siz) == 0, pos);
i_stream_skip(is_2, siz); pos += siz;
}
test_assert_idx(pos + siz <= sizeof(payload), pos);
if (pos + siz > sizeof(payload)) break;
- test_assert_idx(memcmp(ptr, payload + pos, siz) == 0, pos);
+ test_assert_idx(siz == 0 || memcmp(ptr, payload + pos, siz) == 0, pos);
i_stream_skip(is_2, siz); pos += siz;
}
test_assert_idx(pos + siz <= sizeof(payload), pos);
if (pos + siz > sizeof(payload)) break;
- test_assert_idx(memcmp(ptr, payload + pos, siz) == 0, pos);
+ test_assert_idx(siz == 0 || memcmp(ptr, payload + pos, siz) == 0, pos);
i_stream_skip(is_2, siz); pos += siz;
}
test_assert_idx(pos + siz <= sizeof(payload), pos);
if (pos + siz > sizeof(payload)) break;
- test_assert_idx(memcmp(ptr, payload + pos, siz) == 0, pos);
+ test_assert_idx(siz == 0 || memcmp(ptr, payload + pos, siz) == 0, pos);
i_stream_skip(is_2, siz); pos += siz;
}
hdr_data = p_new(ctx->pool, struct header_lookup_data, 1);
hdr_data->data_size = data_size;
- hdr_data->data = data_dup = data_size == 0 ? NULL :
- p_malloc(ctx->pool, data_size);
- memcpy(data_dup, CONST_PTR_OFFSET(field->data, pos), data_size);
+ if (data_size > 0) {
+ hdr_data->data = data_dup =
+ p_malloc(ctx->pool, data_size);
+ memcpy(data_dup, CONST_PTR_OFFSET(field->data, pos), data_size);
+ }
for (i = 0; i < lines_count; i++) {
hdr_line.line_num = lines[i];
return -1;
}
memset(hdr, 0, sizeof(*hdr));
- memcpy(hdr, data, I_MIN(data_size, sizeof(*hdr)));
+ if (data_size > 0)
+ memcpy(hdr, data, I_MIN(data_size, sizeof(*hdr)));
*need_resize_r = data_size < sizeof(*hdr);
return 0;
}
mail_index_get_header_ext(update->view, update->box->vsize_hdr_ext_id,
&data, &size);
- memcpy(&update->orig_vsize_hdr, data,
- I_MIN(size, sizeof(update->orig_vsize_hdr)));
+ if (size > 0) {
+ memcpy(&update->orig_vsize_hdr, data,
+ I_MIN(size, sizeof(update->orig_vsize_hdr)));
+ }
if (size == sizeof(update->vsize_hdr))
memcpy(&update->vsize_hdr, data, sizeof(update->vsize_hdr));
else {
struct real_buffer *buf = (struct real_buffer *)_buf;
buffer_check_limits(buf, pos, data_size);
- memcpy(buf->w_buffer + pos, data, data_size);
+ if (data_size > 0)
+ memcpy(buf->w_buffer + pos, data, data_size);
}
void buffer_append(buffer_t *buf, const void *data, size_t data_size)
void i_stream_compress(struct istream_private *stream)
{
- memmove(stream->w_buffer, stream->w_buffer + stream->skip,
- stream->pos - stream->skip);
+ if (stream->skip != stream->pos) {
+ memmove(stream->w_buffer, stream->w_buffer + stream->skip,
+ stream->pos - stream->skip);
+ }
stream->pos -= stream->skip;
stream->skip = 0;