[openssl] master update

bernd.edlinger at hotmail.de bernd.edlinger at hotmail.de
Tue Jul 2 14:23:49 UTC 2019


The branch master has been updated
       via  94f4d58a87eac9c6fe4cb46b998656bd6d6f03a5 (commit)
       via  6335f837cfa7eaf1202f2557bf2ba148987226e7 (commit)
      from  c2969ff6e70b10f71fbd97c1d0b0cffc92bd69df (commit)


- Log -----------------------------------------------------------------
commit 94f4d58a87eac9c6fe4cb46b998656bd6d6f03a5
Author: Bernd Edlinger <bernd.edlinger at hotmail.de>
Date:   Mon Jul 1 09:41:47 2019 +0200

    Check for V_ASN1_BOOLEAN/V_ASN1_NULL in X509_ATTRIBUTE_get0_data
    
    The member value.ptr is undefined for those ASN1 types.
    
    Reviewed-by: Matt Caswell <matt at openssl.org>
    (Merged from https://github.com/openssl/openssl/pull/9278)

commit 6335f837cfa7eaf1202f2557bf2ba148987226e7
Author: Bernd Edlinger <bernd.edlinger at hotmail.de>
Date:   Mon Jul 1 09:06:02 2019 +0200

    Fix ASN1_TYPE_get/set with type=V_ASN1_BOOLEAN
    
    BOOLEAN does not have valid data in the value.ptr member,
    thus don't use it here.
    
    Fixes #9276
    
    [extended tests]
    
    Reviewed-by: Matt Caswell <matt at openssl.org>
    (Merged from https://github.com/openssl/openssl/pull/9278)

-----------------------------------------------------------------------

Summary of changes:
 crypto/asn1/a_type.c   | 8 ++++++--
 crypto/x509/x509_att.c | 4 +++-
 2 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/crypto/asn1/a_type.c b/crypto/asn1/a_type.c
index 1584401..9b8810c 100644
--- a/crypto/asn1/a_type.c
+++ b/crypto/asn1/a_type.c
@@ -15,7 +15,9 @@
 
 int ASN1_TYPE_get(const ASN1_TYPE *a)
 {
-    if ((a->value.ptr != NULL) || (a->type == V_ASN1_NULL))
+    if (a->type == V_ASN1_BOOLEAN
+            || a->type == V_ASN1_NULL
+            || a->value.ptr != NULL)
         return a->type;
     else
         return 0;
@@ -23,7 +25,9 @@ int ASN1_TYPE_get(const ASN1_TYPE *a)
 
 void ASN1_TYPE_set(ASN1_TYPE *a, int type, void *value)
 {
-    if (a->value.ptr != NULL) {
+    if (a->type != V_ASN1_BOOLEAN
+            && a->type != V_ASN1_NULL
+            && a->value.ptr != NULL) {
         ASN1_TYPE **tmp_a = &a;
         asn1_primitive_free((ASN1_VALUE **)tmp_a, NULL, 0);
     }
diff --git a/crypto/x509/x509_att.c b/crypto/x509/x509_att.c
index f1cd9df..317a45a4 100644
--- a/crypto/x509/x509_att.c
+++ b/crypto/x509/x509_att.c
@@ -314,7 +314,9 @@ void *X509_ATTRIBUTE_get0_data(X509_ATTRIBUTE *attr, int idx,
     ttmp = X509_ATTRIBUTE_get0_type(attr, idx);
     if (!ttmp)
         return NULL;
-    if (atrtype != ASN1_TYPE_get(ttmp)) {
+    if (atrtype == V_ASN1_BOOLEAN
+            || atrtype == V_ASN1_NULL
+            || atrtype != ASN1_TYPE_get(ttmp)) {
         X509err(X509_F_X509_ATTRIBUTE_GET0_DATA, X509_R_WRONG_TYPE);
         return NULL;
     }


More information about the openssl-commits mailing list