summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/pkcs12/p12_key.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/pkcs12/p12_key.c')
-rw-r--r--src/lib/libcrypto/pkcs12/p12_key.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/src/lib/libcrypto/pkcs12/p12_key.c b/src/lib/libcrypto/pkcs12/p12_key.c
index 424203f648..c55c7b60b3 100644
--- a/src/lib/libcrypto/pkcs12/p12_key.c
+++ b/src/lib/libcrypto/pkcs12/p12_key.c
@@ -152,14 +152,16 @@ int PKCS12_key_gen_uni(unsigned char *pass, int passlen, unsigned char *salt,
152 for (i = 0; i < Slen; i++) *p++ = salt[i % saltlen]; 152 for (i = 0; i < Slen; i++) *p++ = salt[i % saltlen];
153 for (i = 0; i < Plen; i++) *p++ = pass[i % passlen]; 153 for (i = 0; i < Plen; i++) *p++ = pass[i % passlen];
154 for (;;) { 154 for (;;) {
155 EVP_DigestInit_ex(&ctx, md_type, NULL); 155 if (!EVP_DigestInit_ex(&ctx, md_type, NULL)
156 EVP_DigestUpdate(&ctx, D, v); 156 || !EVP_DigestUpdate(&ctx, D, v)
157 EVP_DigestUpdate(&ctx, I, Ilen); 157 || !EVP_DigestUpdate(&ctx, I, Ilen)
158 EVP_DigestFinal_ex(&ctx, Ai, NULL); 158 || !EVP_DigestFinal_ex(&ctx, Ai, NULL))
159 goto err;
159 for (j = 1; j < iter; j++) { 160 for (j = 1; j < iter; j++) {
160 EVP_DigestInit_ex(&ctx, md_type, NULL); 161 if (!EVP_DigestInit_ex(&ctx, md_type, NULL)
161 EVP_DigestUpdate(&ctx, Ai, u); 162 || !EVP_DigestUpdate(&ctx, Ai, u)
162 EVP_DigestFinal_ex(&ctx, Ai, NULL); 163 || !EVP_DigestFinal_ex(&ctx, Ai, NULL))
164 goto err;
163 } 165 }
164 memcpy (out, Ai, min (n, u)); 166 memcpy (out, Ai, min (n, u));
165 if (u >= n) { 167 if (u >= n) {