diff options
author | miod <> | 2014-10-28 05:46:56 +0000 |
---|---|---|
committer | miod <> | 2014-10-28 05:46:56 +0000 |
commit | 41c028be1988ad160ef2fa6feca4441bb4bca17d (patch) | |
tree | e5031b50fe250a2c5c8752bd1c08d24591108740 /src/lib/libcrypto/evp | |
parent | 77608e1e83f23ad41247b5fe52616f87439bb30f (diff) | |
download | openbsd-41c028be1988ad160ef2fa6feca4441bb4bca17d.tar.gz openbsd-41c028be1988ad160ef2fa6feca4441bb4bca17d.tar.bz2 openbsd-41c028be1988ad160ef2fa6feca4441bb4bca17d.zip |
Check the result of sk_*_push() operations for failure.
ok doug@ jsing@
Diffstat (limited to 'src/lib/libcrypto/evp')
-rw-r--r-- | src/lib/libcrypto/evp/evp_pbe.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/lib/libcrypto/evp/evp_pbe.c b/src/lib/libcrypto/evp/evp_pbe.c index fcfc43d578..ac593549e5 100644 --- a/src/lib/libcrypto/evp/evp_pbe.c +++ b/src/lib/libcrypto/evp/evp_pbe.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: evp_pbe.c,v 1.21 2014/07/11 14:16:10 miod Exp $ */ | 1 | /* $OpenBSD: evp_pbe.c,v 1.22 2014/10/28 05:46:56 miod Exp $ */ |
2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL |
3 | * project 1999. | 3 | * project 1999. |
4 | */ | 4 | */ |
@@ -130,7 +130,7 @@ EVP_PBE_CipherInit(ASN1_OBJECT *pbe_obj, const char *pass, int passlen, | |||
130 | char obj_tmp[80]; | 130 | char obj_tmp[80]; |
131 | EVPerr(EVP_F_EVP_PBE_CIPHERINIT, EVP_R_UNKNOWN_PBE_ALGORITHM); | 131 | EVPerr(EVP_F_EVP_PBE_CIPHERINIT, EVP_R_UNKNOWN_PBE_ALGORITHM); |
132 | if (!pbe_obj) | 132 | if (!pbe_obj) |
133 | strlcpy (obj_tmp, "NULL", sizeof obj_tmp); | 133 | strlcpy(obj_tmp, "NULL", sizeof obj_tmp); |
134 | else | 134 | else |
135 | i2t_ASN1_OBJECT(obj_tmp, sizeof obj_tmp, pbe_obj); | 135 | i2t_ASN1_OBJECT(obj_tmp, sizeof obj_tmp, pbe_obj); |
136 | ERR_asprintf_error_data("TYPE=%s", obj_tmp); | 136 | ERR_asprintf_error_data("TYPE=%s", obj_tmp); |
@@ -205,7 +205,7 @@ EVP_PBE_alg_add_type(int pbe_type, int pbe_nid, int cipher_nid, int md_nid, | |||
205 | 205 | ||
206 | if (!pbe_algs) | 206 | if (!pbe_algs) |
207 | pbe_algs = sk_EVP_PBE_CTL_new(pbe_cmp); | 207 | pbe_algs = sk_EVP_PBE_CTL_new(pbe_cmp); |
208 | if (!(pbe_tmp = (EVP_PBE_CTL*) malloc (sizeof(EVP_PBE_CTL)))) { | 208 | if (!(pbe_tmp = (EVP_PBE_CTL*)malloc(sizeof(EVP_PBE_CTL)))) { |
209 | EVPerr(EVP_F_EVP_PBE_ALG_ADD_TYPE, ERR_R_MALLOC_FAILURE); | 209 | EVPerr(EVP_F_EVP_PBE_ALG_ADD_TYPE, ERR_R_MALLOC_FAILURE); |
210 | return 0; | 210 | return 0; |
211 | } | 211 | } |
@@ -215,7 +215,11 @@ EVP_PBE_alg_add_type(int pbe_type, int pbe_nid, int cipher_nid, int md_nid, | |||
215 | pbe_tmp->md_nid = md_nid; | 215 | pbe_tmp->md_nid = md_nid; |
216 | pbe_tmp->keygen = keygen; | 216 | pbe_tmp->keygen = keygen; |
217 | 217 | ||
218 | sk_EVP_PBE_CTL_push (pbe_algs, pbe_tmp); | 218 | if (sk_EVP_PBE_CTL_push(pbe_algs, pbe_tmp) == 0) { |
219 | free(pbe_tmp); | ||
220 | EVPerr(EVP_F_EVP_PBE_ALG_ADD_TYPE, ERR_R_MALLOC_FAILURE); | ||
221 | return 0; | ||
222 | } | ||
219 | return 1; | 223 | return 1; |
220 | } | 224 | } |
221 | 225 | ||