|
From: | shishi-commit |
Subject: | (shishi_asn1_read2): Support NULL data/datalen. [...] |
Date: | Wed, 10 Dec 2003 06:20:56 +0100 |
Commit from jas | 2003-12-10 06:20 CET |
(shishi_asn1_read2): Support NULL data/datalen. (shishi_asn1_read2): Zero terminate data (but do not include it in datalen). (shishi_asn1_read2_optional): New.
Module | File name | Revision | |||
---|---|---|---|---|---|
shishi | lib/asn1.c | 1.58 | >>> | 1.59 |
shishi/lib/asn1.c 1.58 >>> 1.59 |
---|
Line 87 |
return 0; } |
- /* XXX obsolete */ |
+ /* XXX obsolete, see shishi_asn1_read2 */ |
int shishi_asn1_read (Shishi * handle, Shishi_asn1 node, const char *field, char *data, size_t * datalen) |
Line 116 |
char **data, size_t * datalen) { int rc; |
+ int len = 0; |
|
- *datalen = 0; - rc = asn1_read_value (node, field, NULL, (int *) datalen); |
+ rc = asn1_read_value (node, field, NULL, &len); |
if (rc != ASN1_MEM_ERROR) { shishi_error_set (handle, libtasn1_strerror (rc)); |
Line 130 |
return SHISHI_ASN1_ERROR; } |
- *data = xmalloc (*datalen); |
+ if (data) + { + size_t datalen = (size_t) len; |
|
- rc = shishi_asn1_read (handle, node, field, *data, datalen); - if (rc != SHISHI_OK) - return rc; |
+ *data = xmalloc (len + 1); + + rc = shishi_asn1_read (handle, node, field, *data, &datalen); + if (rc != SHISHI_OK) + return rc; + + (*data)[len] = '\0'; + } + + if (datalen) + *datalen = (size_t) len; |
return SHISHI_OK; } |
Line 210 |
return SHISHI_OK; } |
+ /* XXX obsolete, see shishi_asn1_read2_optional */ |
int shishi_asn1_read_optional (Shishi * handle, Shishi_asn1 node, const char *field, |
Line 230 |
return SHISHI_OK; } |
+ /* XXX rename and document */ + int + shishi_asn1_read2_optional (Shishi * handle, + Shishi_asn1 node, const char *field, + char **data, size_t * datalen) + { + int rc; + + rc = shishi_asn1_read2 (handle, node, field, data, datalen); + if (rc != SHISHI_OK && rc != SHISHI_ASN1_NO_ELEMENT) + return rc; + + if (rc == SHISHI_ASN1_NO_ELEMENT) + if (datalen) + *datalen = 0; + + return SHISHI_OK; + } + |
int shishi_asn1_write (Shishi * handle, Shishi_asn1 node, const char *field, const char *data, size_t datalen) |
[Prev in Thread] | Current Thread | [Next in Thread] |