diff options
| author | miod <> | 2015-07-16 18:21:57 +0000 |
|---|---|---|
| committer | miod <> | 2015-07-16 18:21:57 +0000 |
| commit | 63fb30f13be4914c162f55b19f7f12e6f281bc78 (patch) | |
| tree | 9727f8fc02832b7cad559de01843df9f7eda5afe | |
| parent | 353f8b309a9d89a2bafa3dbf4ff13587c2f60eb2 (diff) | |
| download | openbsd-63fb30f13be4914c162f55b19f7f12e6f281bc78.tar.gz openbsd-63fb30f13be4914c162f55b19f7f12e6f281bc78.tar.bz2 openbsd-63fb30f13be4914c162f55b19f7f12e6f281bc78.zip | |
Enforce V_ASN1_OCTET_STRING type before accessing the object as octet string;
from OpenSSL (RT #3683)
ok doug@ jsing@
Diffstat (limited to '')
| -rw-r--r-- | src/lib/libcrypto/asn1/p8_pkey.c | 6 | ||||
| -rw-r--r-- | src/lib/libssl/src/crypto/asn1/p8_pkey.c | 6 |
2 files changed, 8 insertions, 4 deletions
diff --git a/src/lib/libcrypto/asn1/p8_pkey.c b/src/lib/libcrypto/asn1/p8_pkey.c index e7edda714b..2f7a469673 100644 --- a/src/lib/libcrypto/asn1/p8_pkey.c +++ b/src/lib/libcrypto/asn1/p8_pkey.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: p8_pkey.c,v 1.15 2015/02/11 04:00:39 jsing Exp $ */ | 1 | /* $OpenBSD: p8_pkey.c,v 1.16 2015/07/16 18:21:57 miod Exp $ */ |
| 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL |
| 3 | * project 1999. | 3 | * project 1999. |
| 4 | */ | 4 | */ |
| @@ -68,7 +68,9 @@ pkey_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it, void *exarg) | |||
| 68 | /* Since the structure must still be valid use ASN1_OP_FREE_PRE */ | 68 | /* Since the structure must still be valid use ASN1_OP_FREE_PRE */ |
| 69 | if (operation == ASN1_OP_FREE_PRE) { | 69 | if (operation == ASN1_OP_FREE_PRE) { |
| 70 | PKCS8_PRIV_KEY_INFO *key = (PKCS8_PRIV_KEY_INFO *)*pval; | 70 | PKCS8_PRIV_KEY_INFO *key = (PKCS8_PRIV_KEY_INFO *)*pval; |
| 71 | if (key->pkey->value.octet_string) | 71 | if (key->pkey != NULL && |
| 72 | key->pkey->type == V_ASN1_OCTET_STRING && | ||
| 73 | key->pkey->value.octet_string != NULL) | ||
| 72 | OPENSSL_cleanse(key->pkey->value.octet_string->data, | 74 | OPENSSL_cleanse(key->pkey->value.octet_string->data, |
| 73 | key->pkey->value.octet_string->length); | 75 | key->pkey->value.octet_string->length); |
| 74 | } | 76 | } |
diff --git a/src/lib/libssl/src/crypto/asn1/p8_pkey.c b/src/lib/libssl/src/crypto/asn1/p8_pkey.c index e7edda714b..2f7a469673 100644 --- a/src/lib/libssl/src/crypto/asn1/p8_pkey.c +++ b/src/lib/libssl/src/crypto/asn1/p8_pkey.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: p8_pkey.c,v 1.15 2015/02/11 04:00:39 jsing Exp $ */ | 1 | /* $OpenBSD: p8_pkey.c,v 1.16 2015/07/16 18:21:57 miod Exp $ */ |
| 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL |
| 3 | * project 1999. | 3 | * project 1999. |
| 4 | */ | 4 | */ |
| @@ -68,7 +68,9 @@ pkey_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it, void *exarg) | |||
| 68 | /* Since the structure must still be valid use ASN1_OP_FREE_PRE */ | 68 | /* Since the structure must still be valid use ASN1_OP_FREE_PRE */ |
| 69 | if (operation == ASN1_OP_FREE_PRE) { | 69 | if (operation == ASN1_OP_FREE_PRE) { |
| 70 | PKCS8_PRIV_KEY_INFO *key = (PKCS8_PRIV_KEY_INFO *)*pval; | 70 | PKCS8_PRIV_KEY_INFO *key = (PKCS8_PRIV_KEY_INFO *)*pval; |
| 71 | if (key->pkey->value.octet_string) | 71 | if (key->pkey != NULL && |
| 72 | key->pkey->type == V_ASN1_OCTET_STRING && | ||
| 73 | key->pkey->value.octet_string != NULL) | ||
| 72 | OPENSSL_cleanse(key->pkey->value.octet_string->data, | 74 | OPENSSL_cleanse(key->pkey->value.octet_string->data, |
| 73 | key->pkey->value.octet_string->length); | 75 | key->pkey->value.octet_string->length); |
| 74 | } | 76 | } |
