]> granicus.if.org Git - p11-kit/commitdiff
attrs: Change p11_attrs_to_string() to allow static templates
authorStef Walter <stefw@gnome.org>
Mon, 18 Mar 2013 19:59:57 +0000 (20:59 +0100)
committerStef Walter <stefw@gnome.org>
Mon, 18 Mar 2013 20:54:48 +0000 (21:54 +0100)
Allow passing the number of attributes to print, which lets us use
this directly on templates passed in by callers of the PKCS#11 API.

common/attrs.c
common/attrs.h
common/tests/test-attrs.c
trust/tests/frob-nss-trust.c

index a4382641ff3e3319261386201d33feb7d504e4a9..553978911ed1bcb9c517599dae13bad351797fd0 100644 (file)
@@ -813,12 +813,14 @@ format_attribute (p11_buffer *buffer,
 
 static void
 format_attributes (p11_buffer *buffer,
-                   const CK_ATTRIBUTE *attrs)
+                   const CK_ATTRIBUTE *attrs,
+                   int count)
 {
        CK_BBOOL first = CK_TRUE;
-       int count, i;
+       int i;
 
-       count = p11_attrs_count (attrs);
+       if (count < 0)
+               count = p11_attrs_count (attrs);
        buffer_append_printf (buffer, "(%d) [", count);
        for (i = 0; i < count; i++) {
                if (first)
@@ -832,12 +834,13 @@ format_attributes (p11_buffer *buffer,
 }
 
 char *
-p11_attrs_to_string (const CK_ATTRIBUTE *attrs)
+p11_attrs_to_string (const CK_ATTRIBUTE *attrs,
+                     int count)
 {
        p11_buffer buffer;
        if (!p11_buffer_init_null (&buffer, 128))
                return_val_if_reached (NULL);
-       format_attributes (&buffer, attrs);
+       format_attributes (&buffer, attrs, count);
        return p11_buffer_steal (&buffer, NULL);
 }
 
index f6eb950190fc1ecfd72087500f947e23ce57b69a..87e0af1e48d2abcc2b1c60a8aad9f5dbd40b6f9b 100644 (file)
@@ -104,7 +104,8 @@ bool                p11_attrs_matchn        (const CK_ATTRIBUTE *attrs,
                                              const CK_ATTRIBUTE *match,
                                              CK_ULONG count);
 
-char *              p11_attrs_to_string     (const CK_ATTRIBUTE *attrs);
+char *              p11_attrs_to_string     (const CK_ATTRIBUTE *attrs,
+                                             int count);
 
 char *              p11_attr_to_string      (const CK_ATTRIBUTE *attr);
 
index f1e6d9197e23950d11face69d656f695b2c4fbd4..61fcef3f46466dff4cc4cae52bf83edda3996078 100644 (file)
@@ -474,9 +474,13 @@ test_to_string (CuTest *tc)
        CuAssertStrEquals (tc, "{ CKA_LABEL = (3) \"yay\" }", string);
        free (string);
 
-       string = p11_attrs_to_string (attrs);
+       string = p11_attrs_to_string (attrs, -1);
        CuAssertStrEquals (tc, "(2) [ { CKA_LABEL = (3) \"yay\" }, { CKA_VALUE = (5) NOT-PRINTED } ]", string);
        free (string);
+
+       string = p11_attrs_to_string (attrs, 1);
+       CuAssertStrEquals (tc, "(1) [ { CKA_LABEL = (3) \"yay\" } ]", string);
+       free (string);
 }
 
 static void
index 790362fc707c46300db8a4c6d7ad74cfe950105b..da7679514cc149a0dce22addbf09a56af47745ac 100644 (file)
@@ -68,7 +68,7 @@ dump_object (P11KitIter *iter,
        else
                name = strdup ("unknown");
 
-       string = p11_attrs_to_string (attrs);
+       string = p11_attrs_to_string (attrs, -1);
        printf ("\"%s\" = %s\n", name, string);
        free (string);