summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortb <>2024-10-26 14:35:32 +0000
committertb <>2024-10-26 14:35:32 +0000
commit1d743dd75a5e3fae927a867b33fb3a2f33394364 (patch)
tree7827134a3db78728b88fee634282bc36bbb51ccb /src
parentb70bdeed51794636632e093b9c645f44b6938f66 (diff)
downloadopenbsd-1d743dd75a5e3fae927a867b33fb3a2f33394364.tar.gz
openbsd-1d743dd75a5e3fae927a867b33fb3a2f33394364.tar.bz2
openbsd-1d743dd75a5e3fae927a867b33fb3a2f33394364.zip
d2i_ECPrivateKey: minor cleanup for entry and exit path
Reduces an upcoming diff which is hard enough to review without these distractions.
Diffstat (limited to 'src')
-rw-r--r--src/lib/libcrypto/ec/ec_asn1.c26
1 files changed, 13 insertions, 13 deletions
diff --git a/src/lib/libcrypto/ec/ec_asn1.c b/src/lib/libcrypto/ec/ec_asn1.c
index 5c2e19a35a..18e2e050f2 100644
--- a/src/lib/libcrypto/ec/ec_asn1.c
+++ b/src/lib/libcrypto/ec/ec_asn1.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ec_asn1.c,v 1.81 2024/10/26 14:33:59 tb Exp $ */ 1/* $OpenBSD: ec_asn1.c,v 1.82 2024/10/26 14:35:32 tb Exp $ */
2/* 2/*
3 * Written by Nils Larsch for the OpenSSL project. 3 * Written by Nils Larsch for the OpenSSL project.
4 */ 4 */
@@ -1095,17 +1095,15 @@ d2i_ECPrivateKey(EC_KEY **out_ec_key, const unsigned char **in, long len)
1095 EC_KEY *ec_key = NULL; 1095 EC_KEY *ec_key = NULL;
1096 EC_PRIVATEKEY *ec_privatekey = NULL; 1096 EC_PRIVATEKEY *ec_privatekey = NULL;
1097 1097
1098 if (out_ec_key == NULL || (ec_key = *out_ec_key) == NULL)
1099 ec_key = EC_KEY_new();
1100 if (ec_key == NULL)
1101 goto err;
1102
1098 if ((ec_privatekey = d2i_EC_PRIVATEKEY(NULL, in, len)) == NULL) { 1103 if ((ec_privatekey = d2i_EC_PRIVATEKEY(NULL, in, len)) == NULL) {
1099 ECerror(ERR_R_EC_LIB); 1104 ECerror(ERR_R_EC_LIB);
1100 return NULL; 1105 goto err;
1101 } 1106 }
1102 if (out_ec_key == NULL || *out_ec_key == NULL) {
1103 if ((ec_key = EC_KEY_new()) == NULL) {
1104 ECerror(ERR_R_MALLOC_FAILURE);
1105 goto err;
1106 }
1107 } else
1108 ec_key = *out_ec_key;
1109 1107
1110 if (ec_privatekey->parameters) { 1108 if (ec_privatekey->parameters) {
1111 EC_GROUP_free(ec_key->group); 1109 EC_GROUP_free(ec_key->group);
@@ -1168,17 +1166,19 @@ d2i_ECPrivateKey(EC_KEY **out_ec_key, const unsigned char **in, long len)
1168 } 1166 }
1169 1167
1170 EC_PRIVATEKEY_free(ec_privatekey); 1168 EC_PRIVATEKEY_free(ec_privatekey);
1169 ec_privatekey = NULL;
1170
1171 if (out_ec_key != NULL) 1171 if (out_ec_key != NULL)
1172 *out_ec_key = ec_key; 1172 *out_ec_key = ec_key;
1173 return (ec_key); 1173
1174 return ec_key;
1174 1175
1175 err: 1176 err:
1176 if (out_ec_key == NULL || *out_ec_key != ec_key) 1177 if (out_ec_key == NULL || *out_ec_key != ec_key)
1177 EC_KEY_free(ec_key); 1178 EC_KEY_free(ec_key);
1178 if (ec_privatekey) 1179 EC_PRIVATEKEY_free(ec_privatekey);
1179 EC_PRIVATEKEY_free(ec_privatekey);
1180 1180
1181 return (NULL); 1181 return NULL;
1182} 1182}
1183LCRYPTO_ALIAS(d2i_ECPrivateKey); 1183LCRYPTO_ALIAS(d2i_ECPrivateKey);
1184 1184