(der_get_heim_integer): Add more checks
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@17679 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -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);
|
||||
|
Reference in New Issue
Block a user