summaryrefslogtreecommitdiff
path: root/trust/parser.c
diff options
context:
space:
mode:
authorStef Walter <stef@thewalter.net>2013-07-04 15:37:34 +0200
committerStef Walter <stef@thewalter.net>2013-07-04 15:42:16 +0200
commitec7c2ff2011d774217c1e35d664072d0487853c7 (patch)
treec2ff76fc08c9b237f101d4119451ef04229c7788 /trust/parser.c
parenta2165fe35e336fd807af053a21a396b020f90a23 (diff)
trust: Add p11_asn1_read() and p11_asn1_free() functions
Some helpers for commonly used ASN.1 related stuff.
Diffstat (limited to 'trust/parser.c')
-rw-r--r--trust/parser.c16
1 files changed, 3 insertions, 13 deletions
diff --git a/trust/parser.c b/trust/parser.c
index 1ae3dc1..77e41bc 100644
--- a/trust/parser.c
+++ b/trust/parser.c
@@ -247,8 +247,7 @@ load_seq_of_oid_str (node_asn *node,
p11_dict *oids;
char field[128];
char *oid;
- int len;
- int ret;
+ size_t len;
int i;
oids = p11_dict_new (p11_dict_str_hash, p11_dict_str_equal, free, NULL);
@@ -257,19 +256,10 @@ load_seq_of_oid_str (node_asn *node,
if (snprintf (field, sizeof (field), "%s.?%u", seqof, i) < 0)
return_val_if_reached (NULL);
- len = 0;
- ret = asn1_read_value (node, field, NULL, &len);
- if (ret == ASN1_ELEMENT_NOT_FOUND)
+ oid = p11_asn1_read (node, field, &len);
+ if (oid == NULL)
break;
- return_val_if_fail (ret == ASN1_MEM_ERROR, NULL);
-
- oid = malloc (len + 1);
- return_val_if_fail (oid != NULL, NULL);
-
- ret = asn1_read_value (node, field, oid, &len);
- return_val_if_fail (ret == ASN1_SUCCESS, NULL);
-
if (!p11_dict_set (oids, oid, oid))
return_val_if_reached (NULL);
}