From 1c394f54da67c09edaa9d859c5fe0b8f71a473c4 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Mon, 4 Mar 2024 11:06:41 +0000 Subject: [PATCH] Use memmove for overlapping buffer Coverity found the following test where memcpy is used to copy an overlapping buffer. 'memmove' should be used instead. Error: BUFFER_SIZE (CWE-474): libmspack-0.10.1alpha/test/md5.c:281: overlapping_buffer: The source buffer "&ctx->buffer[64]" potentially overlaps with the destination buffer "ctx->buffer", which results in undefined behavior for "memcpy". libmspack-0.10.1alpha/test/md5.c:281: remediation: Use memmove instead of "memcpy". 279| md5_process_block (ctx->buffer, 64, ctx); 280| left_over -= 64; 281|-> memcpy (ctx->buffer, &ctx->buffer[64], left_over); 282| } 283| ctx->buflen = left_over; Signed-off-by: Richard W.M. Jones --- libmspack/test/md5.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libmspack/test/md5.c b/libmspack/test/md5.c index a3d2277..28512aa 100644 --- a/libmspack/test/md5.c +++ b/libmspack/test/md5.c @@ -278,7 +278,7 @@ md5_process_bytes ( const void *buffer, size_t len, struct md5_ctx *ctx) { md5_process_block (ctx->buffer, 64, ctx); left_over -= 64; - memcpy (ctx->buffer, &ctx->buffer[64], left_over); + memmove (ctx->buffer, &ctx->buffer[64], left_over); } ctx->buflen = left_over; }