Add check for xor_get_aid()
authorJiasheng Jiang <jiasheng@purdue.edu>
Wed, 6 Mar 2024 16:08:06 +0000 (16:08 +0000)
committerTomas Mraz <tomas@openssl.org>
Tue, 12 Mar 2024 18:32:32 +0000 (19:32 +0100)
Add check for the return value of xor_get_aid() in order to avoid NULL pointer deference.

For example, "algor" could be NULL if the allocation of X509_ALGOR_new() fails. As a result, i2d_X509_ALGOR() will return 0 and "ctx->aid" will be an invalid value NULL.

Fixes: f4ed6eed2c ("SSL_set1_groups_list(): Fix memory corruption with 40 groups and more")
Signed-off-by: Jiasheng Jiang <jiasheng@purdue.edu>
Reviewed-by: Tom Cosgrove <tom.cosgrove@arm.com>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/23764)

test/tls-provider.c

index 53e1d53ffa70f0050374391e4c06844a2437d336..6d66fdf8e187ff3d987e1f222e5fee5211c01d12 100644 (file)
@@ -2691,6 +2691,10 @@ static int xor_sig_setup_md(PROV_XORSIG_CTX *ctx,
     OPENSSL_free(ctx->aid);
     ctx->aid = NULL;
     ctx->aid_len = xor_get_aid(&(ctx->aid), ctx->sig->tls_name);
+    if (ctx->aid_len <= 0) {
+        EVP_MD_free(md);
+        return 0;
+    }
 
     ctx->mdctx = NULL;
     ctx->md = md;