On Tue, 6 Jan 2026 at 16:14, Heiko Schocher <[email protected]> wrote:
>
> Coverity scan reported:
>
> CID 449815:         Memory - illegal accesses  (OVERRUN)
> Overrunning array of 64 bytes at byte offset 64 by dereferencing pointer
> "sctx->buffer + partial". [Note: The source code implementation of the
> function has been overridden by a builtin model.]
>
> In line: 252
>    memset(sctx->buffer + partial, 0, SM3_BLOCK_SIZE - partial);
>
> The respective line should be:
>
> memset(sctx->buffer + partial, 0, SM3_BLOCK_SIZE - partial - 1);
>
> as partial gets incremented by one before.
>
> Signed-off-by: Heiko Schocher <[email protected]>
> ---

Acked-by: Ilias Apalodimas <[email protected]>

>
>  lib/sm3.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/lib/sm3.c b/lib/sm3.c
> index 2a4e825481d..05880099703 100644
> --- a/lib/sm3.c
> +++ b/lib/sm3.c
> @@ -249,7 +249,7 @@ void sm3_final(struct sm3_context *sctx, uint8_t 
> output[SM3_DIGEST_SIZE])
>
>         sctx->buffer[partial++] = 0x80;
>         if (partial > bit_offset) {
> -               memset(sctx->buffer + partial, 0, SM3_BLOCK_SIZE - partial);
> +               memset(sctx->buffer + partial, 0, SM3_BLOCK_SIZE - partial - 
> 1);
>                 partial = 0;
>
>                 sm3_block(sctx, sctx->buffer, 1, W);
> --
> 2.20.1
>

Reply via email to