mirror of
https://gitlab.gnome.org/GNOME/libxml2.git
synced 2025-10-24 13:33:01 +03:00
Check return value of nodePush in xmlSAX2StartElement
If the maximum depth is exceeded, nodePush halts the parser which results in freeing the input buffer since the previous commit. This invalidates the attribute pointers, so the error condition must be checked. Found by OSS-Fuzz.
This commit is contained in:
10
SAX2.c
10
SAX2.c
@@ -1665,7 +1665,10 @@ xmlSAX2StartElement(void *ctx, const xmlChar *fullname, const xmlChar **atts)
|
||||
#ifdef DEBUG_SAX_TREE
|
||||
xmlGenericError(xmlGenericErrorContext, "pushing(%s)\n", name);
|
||||
#endif
|
||||
nodePush(ctxt, ret);
|
||||
if (nodePush(ctxt, ret) < 0) {
|
||||
xmlFreeNode(ret);
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* Link the child element
|
||||
@@ -2336,7 +2339,10 @@ xmlSAX2StartElementNs(void *ctx,
|
||||
/*
|
||||
* We are parsing a new node.
|
||||
*/
|
||||
nodePush(ctxt, ret);
|
||||
if (nodePush(ctxt, ret) < 0) {
|
||||
xmlFreeNode(ret);
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* Link the child element
|
||||
|
||||
Reference in New Issue
Block a user