X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=crypto%2Fdh%2Fdh_meth.c;h=45753b6164bddc836e11cab612bb61d22bd2ee19;hb=6e290a25c2cbdc26119c0866c20d9292f9e64dd8;hp=11fd8e38d0ce70c31c137dd1c99b4639725c1153;hpb=aa6bb1352b1026b20a23b49da4efdcf171926eb0;p=oweals%2Fopenssl.git diff --git a/crypto/dh/dh_meth.c b/crypto/dh/dh_meth.c index 11fd8e38d0..45753b6164 100644 --- a/crypto/dh/dh_meth.c +++ b/crypto/dh/dh_meth.c @@ -9,6 +9,7 @@ #include "dh_locl.h" #include +#include DH_METHOD *DH_meth_new(const char *name, int flags) { @@ -16,6 +17,11 @@ DH_METHOD *DH_meth_new(const char *name, int flags) if (dhm != NULL) { dhm->name = OPENSSL_strdup(name); + if (dhm->name == NULL) { + OPENSSL_free(dhm); + DHerr(DH_F_DH_METH_NEW, ERR_R_MALLOC_FAILURE); + return NULL; + } dhm->flags = flags; } @@ -25,8 +31,7 @@ DH_METHOD *DH_meth_new(const char *name, int flags) void DH_meth_free(DH_METHOD *dhm) { if (dhm != NULL) { - if (dhm->name != NULL) - OPENSSL_free(dhm->name); + OPENSSL_free(dhm->name); OPENSSL_free(dhm); } } @@ -40,6 +45,11 @@ DH_METHOD *DH_meth_dup(const DH_METHOD *dhm) if (ret != NULL) { memcpy(ret, dhm, sizeof(*dhm)); ret->name = OPENSSL_strdup(dhm->name); + if (ret->name == NULL) { + OPENSSL_free(ret); + DHerr(DH_F_DH_METH_DUP, ERR_R_MALLOC_FAILURE); + return NULL; + } } return ret; @@ -52,10 +62,18 @@ const char *DH_meth_get0_name(const DH_METHOD *dhm) int DH_meth_set1_name(DH_METHOD *dhm, const char *name) { + char *tmpname; + + tmpname = OPENSSL_strdup(name); + if (tmpname == NULL) { + DHerr(DH_F_DH_METH_SET1_NAME, ERR_R_MALLOC_FAILURE); + return 0; + } + OPENSSL_free(dhm->name); - dhm->name = OPENSSL_strdup(name); + dhm->name = tmpname; - return dhm->name != NULL; + return 1; } int DH_meth_get_flags(DH_METHOD *dhm)