DPP2: Explicitly check EC_KEY before dereferencing it

In theory, the EVP_PKEY_get0_EC_KEY() could fail, so verify that it
succeeds before using the pointer to get the group.

Fixes: 65e94351dc ("DPP2: Reconfig Authentication Request processing and Response generation")
Signed-off-by: Disha Das <dishad@codeaurora.org>
This commit is contained in:
Disha Das 2020-10-27 13:09:31 +05:30 committed by Jouni Malinen
parent c575904761
commit 02289ab537

View File

@ -2305,13 +2305,15 @@ int dpp_reconfig_derive_ke_responder(struct dpp_authentication *auth,
/* M = { cR + pR } * CI */ /* M = { cR + pR } * CI */
cR = EVP_PKEY_get0_EC_KEY(own_key); cR = EVP_PKEY_get0_EC_KEY(own_key);
pR = EVP_PKEY_get0_EC_KEY(auth->own_protocol_key); pR = EVP_PKEY_get0_EC_KEY(auth->own_protocol_key);
if (!pR)
goto fail;
group = EC_KEY_get0_group(pR); group = EC_KEY_get0_group(pR);
bnctx = BN_CTX_new(); bnctx = BN_CTX_new();
sum = BN_new(); sum = BN_new();
mx = BN_new(); mx = BN_new();
q = BN_new(); q = BN_new();
m = EC_POINT_new(group); m = EC_POINT_new(group);
if (!cR || !pR || !bnctx || !sum || !mx || !q || !m) if (!cR || !bnctx || !sum || !mx || !q || !m)
goto fail; goto fail;
cR_bn = EC_KEY_get0_private_key(cR); cR_bn = EC_KEY_get0_private_key(cR);
pR_bn = EC_KEY_get0_private_key(pR); pR_bn = EC_KEY_get0_private_key(pR);