diff options
Diffstat (limited to 'src/lib/libcrypto/pkcs12/p12_key.c')
| -rw-r--r-- | src/lib/libcrypto/pkcs12/p12_key.c | 16 |
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) { |
