From 9e5f91e48be67b1df324f6496578d4ff55e61a57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Love=20H=C3=B6rnquist=20=C3=85strand?= Date: Thu, 22 Jun 2006 03:54:50 +0000 Subject: [PATCH] (der_get_heim_integer): Add more checks git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@17679 ec53bebd-3082-4978-b11e-865c3cabbd6b --- lib/asn1/der_get.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/asn1/der_get.c b/lib/asn1/der_get.c index d60fd0ccf..95bbd649b 100644 --- a/lib/asn1/der_get.c +++ b/lib/asn1/der_get.c @@ -250,10 +250,17 @@ der_get_heim_integer (const unsigned char *p, size_t len, if (p[0] == 0xff) { p++; data->length--; + if (data->length == 0) { + if (size) + *size = 0; + return ASN1_BAD_LENGTH; + } } data->data = malloc(data->length); if (data->data == NULL) { data->length = 0; + if (size) + *size = 0; return ENOMEM; } q = &((unsigned char*)data->data)[data->length - 1]; @@ -276,6 +283,8 @@ der_get_heim_integer (const unsigned char *p, size_t len, data->data = malloc(data->length); if (data->data == NULL && data->length != 0) { data->length = 0; + if (size) + *size = 0; return ENOMEM; } memcpy(data->data, p, data->length);