diff options
author | miod <> | 2014-07-01 21:26:27 +0000 |
---|---|---|
committer | miod <> | 2014-07-01 21:26:27 +0000 |
commit | ae9d23f02624214dfa3102cd43e55bcff2a8b940 (patch) | |
tree | 7e3ad67826625fadba7cbffe3b2c2086333f3157 | |
parent | 948e49c9c38464c823ba12a3f493cc7f8df7e73f (diff) | |
download | openbsd-ae9d23f02624214dfa3102cd43e55bcff2a8b940.tar.gz openbsd-ae9d23f02624214dfa3102cd43e55bcff2a8b940.tar.bz2 openbsd-ae9d23f02624214dfa3102cd43e55bcff2a8b940.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
-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, |