diff options
Diffstat (limited to 'src/lib/libcrypto/evp/p5_crpt2.c')
-rw-r--r-- | src/lib/libcrypto/evp/p5_crpt2.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/lib/libcrypto/evp/p5_crpt2.c b/src/lib/libcrypto/evp/p5_crpt2.c index 1f94e1ef88..1d5fabc4b2 100644 --- a/src/lib/libcrypto/evp/p5_crpt2.c +++ b/src/lib/libcrypto/evp/p5_crpt2.c | |||
@@ -194,11 +194,16 @@ int PKCS5_v2_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, | |||
194 | 194 | ||
195 | /* Now decode key derivation function */ | 195 | /* Now decode key derivation function */ |
196 | 196 | ||
197 | if(!pbe2->keyfunc->parameter || | ||
198 | (pbe2->keyfunc->parameter->type != V_ASN1_SEQUENCE)) | ||
199 | { | ||
200 | EVPerr(EVP_F_PKCS5_V2_PBE_KEYIVGEN,EVP_R_DECODE_ERROR); | ||
201 | goto err; | ||
202 | } | ||
203 | |||
197 | pbuf = pbe2->keyfunc->parameter->value.sequence->data; | 204 | pbuf = pbe2->keyfunc->parameter->value.sequence->data; |
198 | plen = pbe2->keyfunc->parameter->value.sequence->length; | 205 | plen = pbe2->keyfunc->parameter->value.sequence->length; |
199 | if(!pbe2->keyfunc->parameter || | 206 | if(!(kdf = d2i_PBKDF2PARAM(NULL, &pbuf, plen)) ) { |
200 | (pbe2->keyfunc->parameter->type != V_ASN1_SEQUENCE) || | ||
201 | !(kdf = d2i_PBKDF2PARAM(NULL, &pbuf, plen)) ) { | ||
202 | EVPerr(EVP_F_PKCS5_V2_PBE_KEYIVGEN,EVP_R_DECODE_ERROR); | 207 | EVPerr(EVP_F_PKCS5_V2_PBE_KEYIVGEN,EVP_R_DECODE_ERROR); |
203 | goto err; | 208 | goto err; |
204 | } | 209 | } |