gnutls-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[SCM] GNU gnutls branch, master, updated. gnutls_3_1_0-59-g7b3839b


From: Nikos Mavrogiannopoulos
Subject: [SCM] GNU gnutls branch, master, updated. gnutls_3_1_0-59-g7b3839b
Date: Wed, 12 Sep 2012 21:04:56 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU gnutls".

http://git.savannah.gnu.org/cgit/gnutls.git/commit/?id=7b3839b4fff469a341fbbc125fe72468af9b7df4

The branch, master has been updated
       via  7b3839b4fff469a341fbbc125fe72468af9b7df4 (commit)
       via  f558716ec2fe876b8ba85b9c3093aedfd6800243 (commit)
      from  440801eaa6333f03a46e57c59e4d97764391afae (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 7b3839b4fff469a341fbbc125fe72468af9b7df4
Author: Nikos Mavrogiannopoulos <address@hidden>
Date:   Wed Sep 12 23:03:32 2012 +0200

    When requested gnutls_x509_trust_list_deinit() will deinitialized all certs 
(including the named)

commit f558716ec2fe876b8ba85b9c3093aedfd6800243
Author: Nikos Mavrogiannopoulos <address@hidden>
Date:   Wed Sep 12 22:45:55 2012 +0200

    Use the new asn1_read_node_value()

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

Summary of changes:
 lib/x509/verify-high.c |    5 +++++
 lib/x509/x509.c        |   27 +++++++++++++++++++++------
 tests/x509cert-tl.c    |    4 +---
 3 files changed, 27 insertions(+), 9 deletions(-)

diff --git a/lib/x509/verify-high.c b/lib/x509/verify-high.c
index 4ecab5b..0c299b1 100644
--- a/lib/x509/verify-high.c
+++ b/lib/x509/verify-high.c
@@ -128,6 +128,11 @@ gnutls_x509_trust_list_deinit(gnutls_x509_trust_list_t 
list,
                 gnutls_x509_crl_deinit(list->node[i].crls[j]);
             }
         gnutls_free(list->node[i].crls);
+
+        if (all)
+            for (j = 0; j < list->node[i].named_cert_size; j++) {
+                gnutls_x509_crt_deinit(list->node[i].named_certs[j].cert);
+            }
         gnutls_free(list->node[i].named_certs);
     }
 
diff --git a/lib/x509/x509.c b/lib/x509/x509.c
index 1158b4b..c5f0b44 100644
--- a/lib/x509/x509.c
+++ b/lib/x509/x509.c
@@ -2153,10 +2153,12 @@ gnutls_x509_dn_get_rdn_ava (gnutls_x509_dn_t dn,
                             int irdn, int iava, gnutls_x509_ava_st * ava)
 {
   ASN1_TYPE rdn, elem;
+  ASN1_DATA_NODE vnode;
   long len;
   int lenlen, remlen, ret;
   char rbuf[ASN1_MAX_NAME_SIZE];
-  unsigned char cls, *ptr;
+  unsigned char cls;
+  const unsigned char *ptr;
 
   iava++;
   irdn++;                       /* 0->1, 1->2 etc */
@@ -2177,8 +2179,15 @@ gnutls_x509_dn_get_rdn_ava (gnutls_x509_dn_t dn,
       return GNUTLS_E_ASN1_ELEMENT_NOT_FOUND;
     }
 
-  ava->oid.data = elem->value;
-  ava->oid.size = elem->value_len;
+  ret = asn1_read_node_value(elem, &vnode);
+  if (ret != ASN1_SUCCESS)
+    {
+      gnutls_assert ();
+      return GNUTLS_E_ASN1_ELEMENT_NOT_FOUND;
+    }
+
+  ava->oid.data = (void*)vnode.value;
+  ava->oid.size = vnode.value_len;
 
   snprintf (rbuf, sizeof (rbuf), "?%d.value", iava);
   elem = asn1_find_node (rdn, rbuf);
@@ -2188,12 +2197,18 @@ gnutls_x509_dn_get_rdn_ava (gnutls_x509_dn_t dn,
       return GNUTLS_E_ASN1_ELEMENT_NOT_FOUND;
     }
 
+  ret = asn1_read_node_value(elem, &vnode);
+  if (ret != ASN1_SUCCESS)
+    {
+      gnutls_assert ();
+      return GNUTLS_E_ASN1_ELEMENT_NOT_FOUND;
+    }
   /* The value still has the previous tag's length bytes, plus the
    * current value's tag and length bytes. Decode them.
    */
 
-  ptr = elem->value;
-  remlen = elem->value_len;
+  ptr = vnode.value;
+  remlen = vnode.value_len;
   len = asn1_get_length_der (ptr, remlen, &lenlen);
   if (len < 0)
     {
@@ -2224,7 +2239,7 @@ gnutls_x509_dn_get_rdn_ava (gnutls_x509_dn_t dn,
       }
     ava->value.size = tmp;
   }
-  ava->value.data = ptr + lenlen;
+  ava->value.data = (void*)(ptr + lenlen);
 
   return 0;
 }
diff --git a/tests/x509cert-tl.c b/tests/x509cert-tl.c
index 0c43272..c2ff767 100644
--- a/tests/x509cert-tl.c
+++ b/tests/x509cert-tl.c
@@ -255,9 +255,7 @@ doit (void)
   if (ret < 1)
     fail("gnutls_x509_trust_list_add_trust_mem: %d\n", __LINE__);
 
-  gnutls_x509_crt_deinit(ca_crt);
-  gnutls_x509_crt_deinit(server_crt);
-  gnutls_x509_trust_list_deinit(tl, 0);
+  gnutls_x509_trust_list_deinit(tl, 1);
   
   gnutls_global_deinit();
   


hooks/post-receive
-- 
GNU gnutls



reply via email to

[Prev in Thread] Current Thread [Next in Thread]