mirror of
https://gitlab.gnome.org/GNOME/libxml2.git
synced 2025-10-28 23:14:57 +03:00
fuzz: Cap URL size
Cap URL size to avoid quadratic behavior when generating error messages.
This commit is contained in:
11
fuzz/fuzz.c
11
fuzz/fuzz.c
@@ -304,16 +304,21 @@ xmlFuzzReadEntities(void) {
|
|||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
const char *url, *entity;
|
const char *url, *entity;
|
||||||
size_t entitySize;
|
size_t urlSize, entitySize;
|
||||||
xmlFuzzEntityInfo *entityInfo;
|
xmlFuzzEntityInfo *entityInfo;
|
||||||
|
|
||||||
url = xmlFuzzReadString(NULL);
|
url = xmlFuzzReadString(&urlSize);
|
||||||
if (url == NULL) break;
|
if (url == NULL) break;
|
||||||
|
|
||||||
entity = xmlFuzzReadString(&entitySize);
|
entity = xmlFuzzReadString(&entitySize);
|
||||||
if (entity == NULL) break;
|
if (entity == NULL) break;
|
||||||
|
|
||||||
if (xmlHashLookup(fuzzData.entities, (xmlChar *)url) == NULL) {
|
/*
|
||||||
|
* Cap URL size to avoid quadratic behavior when generating
|
||||||
|
* error messages or looking up entities.
|
||||||
|
*/
|
||||||
|
if (urlSize < 50 &&
|
||||||
|
xmlHashLookup(fuzzData.entities, (xmlChar *)url) == NULL) {
|
||||||
entityInfo = xmlMalloc(sizeof(xmlFuzzEntityInfo));
|
entityInfo = xmlMalloc(sizeof(xmlFuzzEntityInfo));
|
||||||
if (entityInfo == NULL)
|
if (entityInfo == NULL)
|
||||||
break;
|
break;
|
||||||
|
|||||||
Reference in New Issue
Block a user