In EVP_PKEY_derive_set_peer_ex, don't free peer
on error. Revert to existing functionality.
Bug was introduced with
https://github.com/openssl/openssl/pull/26294
Reviewed-by: Neil Horman <nhorman@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/26823)
return -1;
}
+ ret = ctx->pmeth->ctrl(ctx, EVP_PKEY_CTRL_PEER_KEY, 1, peer);
+ if (ret <= 0)
+ return ret;
if (!EVP_PKEY_up_ref(peer))
return -1;
EVP_PKEY_free(ctx->peerkey);
ctx->peerkey = peer;
- ret = ctx->pmeth->ctrl(ctx, EVP_PKEY_CTRL_PEER_KEY, 1, peer);
-
- if (ret <= 0) {
- EVP_PKEY_free(ctx->peerkey);
- ctx->peerkey = NULL;
- return ret;
- }
-
return 1;
#endif
}