summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/evp
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/evp')
-rw-r--r--src/lib/libcrypto/evp/evp_err.c3
-rw-r--r--src/lib/libcrypto/evp/evp_pkey.c14
-rw-r--r--src/lib/libcrypto/evp/names.c5
3 files changed, 18 insertions, 4 deletions
diff --git a/src/lib/libcrypto/evp/evp_err.c b/src/lib/libcrypto/evp/evp_err.c
index 97953a0fc1..fc149cbb1a 100644
--- a/src/lib/libcrypto/evp/evp_err.c
+++ b/src/lib/libcrypto/evp/evp_err.c
@@ -54,7 +54,8 @@
54 */ 54 */
55 55
56/* NOTE: this file was auto generated by the mkerr.pl script: any changes 56/* NOTE: this file was auto generated by the mkerr.pl script: any changes
57 * made to it will be overwritten when the script next updates this file. 57 * made to it will be overwritten when the script next updates this file,
58 * only reason strings will be preserved.
58 */ 59 */
59 60
60#include <stdio.h> 61#include <stdio.h>
diff --git a/src/lib/libcrypto/evp/evp_pkey.c b/src/lib/libcrypto/evp/evp_pkey.c
index d5e6f5880f..4ab091fa56 100644
--- a/src/lib/libcrypto/evp/evp_pkey.c
+++ b/src/lib/libcrypto/evp/evp_pkey.c
@@ -133,7 +133,7 @@ EVP_PKEY *EVP_PKCS82PKEY (PKCS8_PRIV_KEY_INFO *p8)
133 * SEQUENCE {parameters, priv_key} 133 * SEQUENCE {parameters, priv_key}
134 * SEQUENCE {pub_key, priv_key} 134 * SEQUENCE {pub_key, priv_key}
135 */ 135 */
136 136
137 t1 = (ASN1_TYPE *)sk_value(ndsa, 0); 137 t1 = (ASN1_TYPE *)sk_value(ndsa, 0);
138 t2 = (ASN1_TYPE *)sk_value(ndsa, 1); 138 t2 = (ASN1_TYPE *)sk_value(ndsa, 1);
139 if(t1->type == V_ASN1_SEQUENCE) { 139 if(t1->type == V_ASN1_SEQUENCE) {
@@ -152,7 +152,14 @@ EVP_PKEY *EVP_PKCS82PKEY (PKCS8_PRIV_KEY_INFO *p8)
152 goto dsaerr; 152 goto dsaerr;
153 } 153 }
154 privkey = t2->value.integer; 154 privkey = t2->value.integer;
155 } else if (!(privkey=d2i_ASN1_INTEGER (NULL, &p, pkeylen))) { 155 } else {
156 if (!(privkey=d2i_ASN1_INTEGER (NULL, &p, pkeylen))) {
157 EVPerr(EVP_F_EVP_PKCS82PKEY, EVP_R_DECODE_ERROR);
158 goto dsaerr;
159 }
160 param = p8->pkeyalg->parameter;
161 }
162 if (!param || (param->type != V_ASN1_SEQUENCE)) {
156 EVPerr(EVP_F_EVP_PKCS82PKEY, EVP_R_DECODE_ERROR); 163 EVPerr(EVP_F_EVP_PKCS82PKEY, EVP_R_DECODE_ERROR);
157 goto dsaerr; 164 goto dsaerr;
158 } 165 }
@@ -186,7 +193,8 @@ EVP_PKEY *EVP_PKCS82PKEY (PKCS8_PRIV_KEY_INFO *p8)
186 193
187 EVP_PKEY_assign_DSA(pkey, dsa); 194 EVP_PKEY_assign_DSA(pkey, dsa);
188 BN_CTX_free (ctx); 195 BN_CTX_free (ctx);
189 sk_pop_free(ndsa, ASN1_TYPE_free); 196 if(ndsa) sk_pop_free(ndsa, ASN1_TYPE_free);
197 else ASN1_INTEGER_free(privkey);
190 break; 198 break;
191 dsaerr: 199 dsaerr:
192 BN_CTX_free (ctx); 200 BN_CTX_free (ctx);
diff --git a/src/lib/libcrypto/evp/names.c b/src/lib/libcrypto/evp/names.c
index 3e8f460328..620f43feaa 100644
--- a/src/lib/libcrypto/evp/names.c
+++ b/src/lib/libcrypto/evp/names.c
@@ -114,5 +114,10 @@ void EVP_cleanup(void)
114 { 114 {
115 OBJ_NAME_cleanup(OBJ_NAME_TYPE_CIPHER_METH); 115 OBJ_NAME_cleanup(OBJ_NAME_TYPE_CIPHER_METH);
116 OBJ_NAME_cleanup(OBJ_NAME_TYPE_MD_METH); 116 OBJ_NAME_cleanup(OBJ_NAME_TYPE_MD_METH);
117 /* The above calls will only clean out the contents of the name
118 hash table, but not the hash table itself. The following line
119 does that part. -- Richard Levitte */
120 OBJ_NAME_cleanup(-1);
121
117 EVP_PBE_cleanup(); 122 EVP_PBE_cleanup();
118 } 123 }