| Index: third_party/libxml/src/xmlreader.c
|
| diff --git a/third_party/libxml/src/xmlreader.c b/third_party/libxml/src/xmlreader.c
|
| index f19e1233828a65109ec266a0da1f3f04ebba83fe..471e7e2a640c4825720e109851056b48b3161ba4 100644
|
| --- a/third_party/libxml/src/xmlreader.c
|
| +++ b/third_party/libxml/src/xmlreader.c
|
| @@ -2091,6 +2091,9 @@ xmlNewTextReader(xmlParserInputBufferPtr input, const char *URI) {
|
| "xmlNewTextReader : malloc failed\n");
|
| return(NULL);
|
| }
|
| + /* no operation on a reader should require a huge buffer */
|
| + xmlBufSetAllocationScheme(ret->buffer,
|
| + XML_BUFFER_ALLOC_BOUNDED);
|
| ret->sax = (xmlSAXHandler *) xmlMalloc(sizeof(xmlSAXHandler));
|
| if (ret->sax == NULL) {
|
| xmlBufFree(ret->buffer);
|
| @@ -3616,6 +3619,7 @@ xmlTextReaderConstValue(xmlTextReaderPtr reader) {
|
| return(((xmlNsPtr) node)->href);
|
| case XML_ATTRIBUTE_NODE:{
|
| xmlAttrPtr attr = (xmlAttrPtr) node;
|
| + const xmlChar *ret;
|
|
|
| if ((attr->children != NULL) &&
|
| (attr->children->type == XML_TEXT_NODE) &&
|
| @@ -3629,10 +3633,21 @@ xmlTextReaderConstValue(xmlTextReaderPtr reader) {
|
| "xmlTextReaderSetup : malloc failed\n");
|
| return (NULL);
|
| }
|
| + xmlBufSetAllocationScheme(reader->buffer,
|
| + XML_BUFFER_ALLOC_BOUNDED);
|
| } else
|
| xmlBufEmpty(reader->buffer);
|
| xmlBufGetNodeContent(reader->buffer, node);
|
| - return(xmlBufContent(reader->buffer));
|
| + ret = xmlBufContent(reader->buffer);
|
| + if (ret == NULL) {
|
| + /* error on the buffer best to reallocate */
|
| + xmlBufFree(reader->buffer);
|
| + reader->buffer = xmlBufCreateSize(100);
|
| + xmlBufSetAllocationScheme(reader->buffer,
|
| + XML_BUFFER_ALLOC_BOUNDED);
|
| + ret = BAD_CAST "";
|
| + }
|
| + return(ret);
|
| }
|
| break;
|
| }
|
| @@ -5131,6 +5146,9 @@ xmlTextReaderSetup(xmlTextReaderPtr reader,
|
| "xmlTextReaderSetup : malloc failed\n");
|
| return (-1);
|
| }
|
| + /* no operation on a reader should require a huge buffer */
|
| + xmlBufSetAllocationScheme(reader->buffer,
|
| + XML_BUFFER_ALLOC_BOUNDED);
|
| if (reader->sax == NULL)
|
| reader->sax = (xmlSAXHandler *) xmlMalloc(sizeof(xmlSAXHandler));
|
| if (reader->sax == NULL) {
|
|
|