From 8671326a06cf4f092855b33f7052714e0109bcd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Love=20H=C3=B6rnquist=20=C3=85strand?= Date: Mon, 15 Dec 2008 04:28:33 +0000 Subject: [PATCH] Handle ASN1_INDEFINITE encoding git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@24178 ec53bebd-3082-4978-b11e-865c3cabbd6b --- lib/asn1/extra.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/lib/asn1/extra.c b/lib/asn1/extra.c index 49240605c..c01e8a4cd 100644 --- a/lib/asn1/extra.c +++ b/lib/asn1/extra.c @@ -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;