The code in lib/gc-gnulib.c line 823
    sm3_finish_ctx (&ctx->sm3Context, ctx->hash);
passes a buffer of size 20 to a function which writes 32 bytes into it.
Thus provoking a buffer overrun.

This should fix it.


2017-11-20  Bruno Haible  <br...@clisp.org>

        crypto/gc-sm3: Fix buffer overrun.
        * lib/gc-gnulib.c (MAX_DIGEST_SIZE): Bump to 32.
        Reported by Coverity.

diff --git a/lib/gc-gnulib.c b/lib/gc-gnulib.c
index f888cf5..62074b1 100644
--- a/lib/gc-gnulib.c
+++ b/lib/gc-gnulib.c
@@ -602,7 +602,7 @@ gc_cipher_close (gc_cipher_handle handle)
 
 /* Hashes. */
 
-#define MAX_DIGEST_SIZE 20
+#define MAX_DIGEST_SIZE 32
 
 typedef struct _gc_hash_ctx
 {


Reply via email to