(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) { | 	if (p[0] == 0xff) { | ||||||
| 	    p++; | 	    p++; | ||||||
| 	    data->length--; | 	    data->length--; | ||||||
|  | 	    if (data->length == 0) { | ||||||
|  | 		if (size) | ||||||
|  | 		    *size = 0; | ||||||
|  | 		return ASN1_BAD_LENGTH; | ||||||
|  | 	    } | ||||||
| 	} | 	} | ||||||
| 	data->data = malloc(data->length); | 	data->data = malloc(data->length); | ||||||
| 	if (data->data == NULL) { | 	if (data->data == NULL) { | ||||||
| 	    data->length = 0; | 	    data->length = 0; | ||||||
|  | 	    if (size) | ||||||
|  | 		*size = 0; | ||||||
| 	    return ENOMEM; | 	    return ENOMEM; | ||||||
| 	} | 	} | ||||||
| 	q = &((unsigned char*)data->data)[data->length - 1]; | 	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); | 	data->data = malloc(data->length); | ||||||
| 	if (data->data == NULL && data->length != 0) { | 	if (data->data == NULL && data->length != 0) { | ||||||
| 	    data->length = 0; | 	    data->length = 0; | ||||||
|  | 	    if (size) | ||||||
|  | 		*size = 0; | ||||||
| 	    return ENOMEM; | 	    return ENOMEM; | ||||||
| 	} | 	} | ||||||
| 	memcpy(data->data, p, data->length); | 	memcpy(data->data, p, data->length); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Love Hörnquist Åstrand
					Love Hörnquist Åstrand