X-Git-Url: https://git.openssl.org/?a=blobdiff_plain;f=crypto%2Fdh%2Fdh_pmeth.c;h=b98907972d00620300bac821192e3de815b75e8b;hb=edeb3fd2955c42c3e249a0539ef75c21db8c5ca1;hp=a760ff5390fc78f4d34a6475e581a55d52782097;hpb=7644a9aef8932ed4d1c3f25ed776c997702982be;p=openssl.git diff --git a/crypto/dh/dh_pmeth.c b/crypto/dh/dh_pmeth.c index a760ff5390..b98907972d 100644 --- a/crypto/dh/dh_pmeth.c +++ b/crypto/dh/dh_pmeth.c @@ -61,11 +61,9 @@ #include #include #include -#include +#include "dh_locl.h" #include -#ifndef OPENSSL_NO_DSA -# include -#endif +#include #include #include "internal/evp_int.h" @@ -114,6 +112,17 @@ static int pkey_dh_init(EVP_PKEY_CTX *ctx) return 1; } +static void pkey_dh_cleanup(EVP_PKEY_CTX *ctx) +{ + DH_PKEY_CTX *dctx = ctx->data; + if (dctx != NULL) { + OPENSSL_free(dctx->kdf_ukm); + ASN1_OBJECT_free(dctx->kdf_oid); + OPENSSL_free(dctx); + } +} + + static int pkey_dh_copy(EVP_PKEY_CTX *dst, EVP_PKEY_CTX *src) { DH_PKEY_CTX *dctx, *sctx; @@ -130,27 +139,19 @@ static int pkey_dh_copy(EVP_PKEY_CTX *dst, EVP_PKEY_CTX *src) dctx->kdf_type = sctx->kdf_type; dctx->kdf_oid = OBJ_dup(sctx->kdf_oid); - if (!dctx->kdf_oid) + if (dctx->kdf_oid == NULL) return 0; dctx->kdf_md = sctx->kdf_md; - if (dctx->kdf_ukm) { + if (sctx->kdf_ukm != NULL) { dctx->kdf_ukm = OPENSSL_memdup(sctx->kdf_ukm, sctx->kdf_ukmlen); + if (dctx->kdf_ukm == NULL) + return 0; dctx->kdf_ukmlen = sctx->kdf_ukmlen; } dctx->kdf_outlen = sctx->kdf_outlen; return 1; } -static void pkey_dh_cleanup(EVP_PKEY_CTX *ctx) -{ - DH_PKEY_CTX *dctx = ctx->data; - if (dctx) { - OPENSSL_free(dctx->kdf_ukm); - ASN1_OBJECT_free(dctx->kdf_oid); - OPENSSL_free(dctx); - } -} - static int pkey_dh_ctrl(EVP_PKEY_CTX *ctx, int type, int p1, void *p2) { DH_PKEY_CTX *dctx = ctx->data;