From: Tomas Mraz Date: Thu, 21 Apr 2022 15:09:14 +0000 (+0200) Subject: siphash: Properly set mac size in sipcopy X-Git-Tag: openssl-3.2.0-alpha1~2736 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=905fec4f4d6bb8a978476cbce0f293ffc683b5fd;p=thirdparty%2Fopenssl.git siphash: Properly set mac size in sipcopy Also fully duplicate the context on dup Reviewed-by: Paul Dale Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/18142) --- diff --git a/providers/implementations/macs/siphash_prov.c b/providers/implementations/macs/siphash_prov.c index 2a291d7f45c..35265e554e4 100644 --- a/providers/implementations/macs/siphash_prov.c +++ b/providers/implementations/macs/siphash_prov.c @@ -77,11 +77,11 @@ static void *siphash_dup(void *vsrc) if (!ossl_prov_is_running()) return NULL; - sdst = siphash_new(ssrc->provctx); + sdst = OPENSSL_malloc(sizeof(*sdst)); if (sdst == NULL) return NULL; - sdst->siphash = ssrc->siphash; + *sdst = *ssrc; return sdst; } @@ -112,7 +112,8 @@ static int siphash_init(void *vmacctx, const unsigned char *key, size_t keylen, if (!ossl_prov_is_running() || !siphash_set_params(ctx, params)) return 0; - /* Without a key, there is not much to do here, + /* + * Without a key, there is not much to do here, * The actual initialization happens through controls. */ if (key == NULL) { @@ -202,7 +203,8 @@ static int siphash_set_params(void *vmacctx, const OSSL_PARAM *params) if ((p = OSSL_PARAM_locate_const(params, OSSL_MAC_PARAM_SIZE)) != NULL) { if (!OSSL_PARAM_get_size_t(p, &size) - || !SipHash_set_hash_size(&ctx->siphash, size)) + || !SipHash_set_hash_size(&ctx->siphash, size) + || !SipHash_set_hash_size(&ctx->sipcopy, size)) return 0; } if ((p = OSSL_PARAM_locate_const(params, OSSL_MAC_PARAM_C_ROUNDS)) != NULL