mirror of https://github.com/openssl/openssl.git
Fix dh dupctx refcount error
Reviewed-by: Paul Dale <pauli@openssl.org> Reviewed-by: Tomas Mraz <tomas@openssl.org> (Merged from https://github.com/openssl/openssl/pull/16495)
This commit is contained in:
parent
85407b7754
commit
21a0d9f3ed
|
@ -238,7 +238,6 @@ static int dh_derive(void *vpdhctx, unsigned char *secret,
|
|||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static void dh_freectx(void *vpdhctx)
|
||||
{
|
||||
PROV_DH_CTX *pdhctx = (PROV_DH_CTX *)vpdhctx;
|
||||
|
@ -271,12 +270,12 @@ static void *dh_dupctx(void *vpdhctx)
|
|||
dstctx->kdf_ukm = NULL;
|
||||
dstctx->kdf_cekalg = NULL;
|
||||
|
||||
if (dstctx->dh != NULL && !DH_up_ref(srcctx->dh))
|
||||
if (srcctx->dh != NULL && !DH_up_ref(srcctx->dh))
|
||||
goto err;
|
||||
else
|
||||
dstctx->dh = srcctx->dh;
|
||||
|
||||
if (dstctx->dhpeer != NULL && !DH_up_ref(srcctx->dhpeer))
|
||||
if (srcctx->dhpeer != NULL && !DH_up_ref(srcctx->dhpeer))
|
||||
goto err;
|
||||
else
|
||||
dstctx->dhpeer = srcctx->dhpeer;
|
||||
|
|
|
@ -1848,11 +1848,17 @@ static int pderive_test_parse(EVP_TEST *t,
|
|||
|
||||
static int pderive_test_run(EVP_TEST *t)
|
||||
{
|
||||
EVP_PKEY_CTX *dctx = NULL;
|
||||
PKEY_DATA *expected = t->data;
|
||||
unsigned char *got = NULL;
|
||||
size_t got_len;
|
||||
|
||||
if (EVP_PKEY_derive(expected->ctx, NULL, &got_len) <= 0) {
|
||||
if (!TEST_ptr(dctx = EVP_PKEY_CTX_dup(expected->ctx))) {
|
||||
t->err = "DERIVE_ERROR";
|
||||
goto err;
|
||||
}
|
||||
|
||||
if (EVP_PKEY_derive(dctx, NULL, &got_len) <= 0) {
|
||||
t->err = "DERIVE_ERROR";
|
||||
goto err;
|
||||
}
|
||||
|
@ -1860,7 +1866,7 @@ static int pderive_test_run(EVP_TEST *t)
|
|||
t->err = "DERIVE_ERROR";
|
||||
goto err;
|
||||
}
|
||||
if (EVP_PKEY_derive(expected->ctx, got, &got_len) <= 0) {
|
||||
if (EVP_PKEY_derive(dctx, got, &got_len) <= 0) {
|
||||
t->err = "DERIVE_ERROR";
|
||||
goto err;
|
||||
}
|
||||
|
@ -1872,6 +1878,7 @@ static int pderive_test_run(EVP_TEST *t)
|
|||
t->err = NULL;
|
||||
err:
|
||||
OPENSSL_free(got);
|
||||
EVP_PKEY_CTX_free(dctx);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue