Handle ASN1_INDEFINITE encoding

git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@24178 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Love Hörnquist Åstrand
2008-12-15 04:28:33 +00:00
parent 27f460b09a
commit 8671326a06

View File

@@ -67,15 +67,21 @@ decode_heim_any(const unsigned char *p, size_t len,
return ASN1_OVERFLOW;
e = der_get_length(p + l, len - l, &length, &len_len);
if (e) return e;
if (length + len_len + l > len)
return ASN1_OVERFLOW;
if (length == ASN1_INDEFINITE) {
if (len < len_len + l)
return ASN1_OVERFLOW;
length = len - len_len + l;
} else {
if (length + len_len + l > len)
return ASN1_OVERFLOW;
}
data->data = malloc(length + len_len + l);
if (data->data == NULL)
return ENOMEM;
data->length = length + len_len + l;
memcpy(data->data, p, length + len_len + l);
if (size)
*size = length + len_len + l;