diff options
author | miod <> | 2014-07-01 21:26:27 +0000 |
---|---|---|
committer | miod <> | 2014-07-01 21:26:27 +0000 |
commit | 2fbc47e70df51ec6256106465ae1c6f8ae594bdb (patch) | |
tree | 7e3ad67826625fadba7cbffe3b2c2086333f3157 /src | |
parent | 5347185d0296050ecba23f9028b8c85c751823d6 (diff) | |
download | openbsd-2fbc47e70df51ec6256106465ae1c6f8ae594bdb.tar.gz openbsd-2fbc47e70df51ec6256106465ae1c6f8ae594bdb.tar.bz2 openbsd-2fbc47e70df51ec6256106465ae1c6f8ae594bdb.zip |
Avoid a NULL deref in i2d_ECPrivateKey() when an EC_KEY lacks the public key
member (which is perfectly acceptable).
From BoringSSL (Adam Langley), commit f71a27920a903c9c36bcb31e68781b17674d3fd2
Diffstat (limited to 'src')
-rw-r--r-- | src/lib/libcrypto/ec/ec_asn1.c | 4 | ||||
-rw-r--r-- | src/lib/libssl/src/crypto/ec/ec_asn1.c | 4 |
2 files changed, 4 insertions, 4 deletions
diff --git a/src/lib/libcrypto/ec/ec_asn1.c b/src/lib/libcrypto/ec/ec_asn1.c index 52f33d8f34..9478e5260a 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.7 2014/06/12 15:49:29 deraadt Exp $ */ | 1 | /* $OpenBSD: ec_asn1.c,v 1.8 2014/07/01 21:26:27 miod Exp $ */ |
2 | /* | 2 | /* |
3 | * Written by Nils Larsch for the OpenSSL project. | 3 | * Written by Nils Larsch for the OpenSSL project. |
4 | */ | 4 | */ |
@@ -1092,7 +1092,7 @@ i2d_ECPrivateKey(EC_KEY * a, unsigned char **out) | |||
1092 | goto err; | 1092 | goto err; |
1093 | } | 1093 | } |
1094 | } | 1094 | } |
1095 | if (!(a->enc_flag & EC_PKEY_NO_PUBKEY)) { | 1095 | if (!(a->enc_flag & EC_PKEY_NO_PUBKEY) && a->pub_key != NULL) { |
1096 | priv_key->publicKey = M_ASN1_BIT_STRING_new(); | 1096 | priv_key->publicKey = M_ASN1_BIT_STRING_new(); |
1097 | if (priv_key->publicKey == NULL) { | 1097 | if (priv_key->publicKey == NULL) { |
1098 | ECerr(EC_F_I2D_ECPRIVATEKEY, | 1098 | ECerr(EC_F_I2D_ECPRIVATEKEY, |
diff --git a/src/lib/libssl/src/crypto/ec/ec_asn1.c b/src/lib/libssl/src/crypto/ec/ec_asn1.c index 52f33d8f34..9478e5260a 100644 --- a/src/lib/libssl/src/crypto/ec/ec_asn1.c +++ b/src/lib/libssl/src/crypto/ec/ec_asn1.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ec_asn1.c,v 1.7 2014/06/12 15:49:29 deraadt Exp $ */ | 1 | /* $OpenBSD: ec_asn1.c,v 1.8 2014/07/01 21:26:27 miod Exp $ */ |
2 | /* | 2 | /* |
3 | * Written by Nils Larsch for the OpenSSL project. | 3 | * Written by Nils Larsch for the OpenSSL project. |
4 | */ | 4 | */ |
@@ -1092,7 +1092,7 @@ i2d_ECPrivateKey(EC_KEY * a, unsigned char **out) | |||
1092 | goto err; | 1092 | goto err; |
1093 | } | 1093 | } |
1094 | } | 1094 | } |
1095 | if (!(a->enc_flag & EC_PKEY_NO_PUBKEY)) { | 1095 | if (!(a->enc_flag & EC_PKEY_NO_PUBKEY) && a->pub_key != NULL) { |
1096 | priv_key->publicKey = M_ASN1_BIT_STRING_new(); | 1096 | priv_key->publicKey = M_ASN1_BIT_STRING_new(); |
1097 | if (priv_key->publicKey == NULL) { | 1097 | if (priv_key->publicKey == NULL) { |
1098 | ECerr(EC_F_I2D_ECPRIVATEKEY, | 1098 | ECerr(EC_F_I2D_ECPRIVATEKEY, |