1*6777b538SAndroid Build Coastguard Workerdiff --git a/third_party/libxml/src/parser.c b/third_party/libxml/src/parser.c 2*6777b538SAndroid Build Coastguard Workerindex 3a8a0d79e966..4e767091683d 100644 3*6777b538SAndroid Build Coastguard Worker--- a/third_party/libxml/src/parser.c 4*6777b538SAndroid Build Coastguard Worker+++ b/third_party/libxml/src/parser.c 5*6777b538SAndroid Build Coastguard Worker@@ -2081,8 +2081,8 @@ static void xmlSHRINK (xmlParserCtxtPtr ctxt) { 6*6777b538SAndroid Build Coastguard Worker xmlGROW (ctxt); 7*6777b538SAndroid Build Coastguard Worker 8*6777b538SAndroid Build Coastguard Worker static void xmlGROW (xmlParserCtxtPtr ctxt) { 9*6777b538SAndroid Build Coastguard Worker- unsigned long curEnd = ctxt->input->end - ctxt->input->cur; 10*6777b538SAndroid Build Coastguard Worker- unsigned long curBase = ctxt->input->cur - ctxt->input->base; 11*6777b538SAndroid Build Coastguard Worker+ ptrdiff_t curEnd = ctxt->input->end - ctxt->input->cur; 12*6777b538SAndroid Build Coastguard Worker+ ptrdiff_t curBase = ctxt->input->cur - ctxt->input->base; 13*6777b538SAndroid Build Coastguard Worker 14*6777b538SAndroid Build Coastguard Worker if (((curEnd > (unsigned long) XML_MAX_LOOKUP_LIMIT) || 15*6777b538SAndroid Build Coastguard Worker (curBase > (unsigned long) XML_MAX_LOOKUP_LIMIT)) && 16*6777b538SAndroid Build Coastguard Worker@@ -8857,6 +8857,18 @@ xmlParseQNameAndCompare(xmlParserCtxtPtr ctxt, xmlChar const *name, 17*6777b538SAndroid Build Coastguard Worker * caller if it was copied, this can be detected by val[*len] == 0. 18*6777b538SAndroid Build Coastguard Worker */ 19*6777b538SAndroid Build Coastguard Worker 20*6777b538SAndroid Build Coastguard Worker+#define GROW_PARSE_ATT_VALUE_INTERNAL(ctxt, in, start, end) \ 21*6777b538SAndroid Build Coastguard Worker+ const xmlChar *oldbase = ctxt->input->base;\ 22*6777b538SAndroid Build Coastguard Worker+ GROW;\ 23*6777b538SAndroid Build Coastguard Worker+ if (ctxt->instate == XML_PARSER_EOF)\ 24*6777b538SAndroid Build Coastguard Worker+ return(NULL);\ 25*6777b538SAndroid Build Coastguard Worker+ if (oldbase != ctxt->input->base) {\ 26*6777b538SAndroid Build Coastguard Worker+ ptrdiff_t delta = ctxt->input->base - oldbase;\ 27*6777b538SAndroid Build Coastguard Worker+ start = start + delta;\ 28*6777b538SAndroid Build Coastguard Worker+ in = in + delta;\ 29*6777b538SAndroid Build Coastguard Worker+ }\ 30*6777b538SAndroid Build Coastguard Worker+ end = ctxt->input->end; 31*6777b538SAndroid Build Coastguard Worker+ 32*6777b538SAndroid Build Coastguard Worker static xmlChar * 33*6777b538SAndroid Build Coastguard Worker xmlParseAttValueInternal(xmlParserCtxtPtr ctxt, int *len, int *alloc, 34*6777b538SAndroid Build Coastguard Worker int normalize) 35*6777b538SAndroid Build Coastguard Worker@@ -8886,14 +8898,7 @@ xmlParseAttValueInternal(xmlParserCtxtPtr ctxt, int *len, int *alloc, 36*6777b538SAndroid Build Coastguard Worker end = ctxt->input->end; 37*6777b538SAndroid Build Coastguard Worker start = in; 38*6777b538SAndroid Build Coastguard Worker if (in >= end) { 39*6777b538SAndroid Build Coastguard Worker- const xmlChar *oldbase = ctxt->input->base; 40*6777b538SAndroid Build Coastguard Worker- GROW; 41*6777b538SAndroid Build Coastguard Worker- if (oldbase != ctxt->input->base) { 42*6777b538SAndroid Build Coastguard Worker- long delta = ctxt->input->base - oldbase; 43*6777b538SAndroid Build Coastguard Worker- start = start + delta; 44*6777b538SAndroid Build Coastguard Worker- in = in + delta; 45*6777b538SAndroid Build Coastguard Worker- } 46*6777b538SAndroid Build Coastguard Worker- end = ctxt->input->end; 47*6777b538SAndroid Build Coastguard Worker+ GROW_PARSE_ATT_VALUE_INTERNAL(ctxt, in, start, end) 48*6777b538SAndroid Build Coastguard Worker } 49*6777b538SAndroid Build Coastguard Worker if (normalize) { 50*6777b538SAndroid Build Coastguard Worker /* 51*6777b538SAndroid Build Coastguard Worker@@ -8910,16 +8915,7 @@ xmlParseAttValueInternal(xmlParserCtxtPtr ctxt, int *len, int *alloc, 52*6777b538SAndroid Build Coastguard Worker in++; 53*6777b538SAndroid Build Coastguard Worker start = in; 54*6777b538SAndroid Build Coastguard Worker if (in >= end) { 55*6777b538SAndroid Build Coastguard Worker- const xmlChar *oldbase = ctxt->input->base; 56*6777b538SAndroid Build Coastguard Worker- GROW; 57*6777b538SAndroid Build Coastguard Worker- if (ctxt->instate == XML_PARSER_EOF) 58*6777b538SAndroid Build Coastguard Worker- return(NULL); 59*6777b538SAndroid Build Coastguard Worker- if (oldbase != ctxt->input->base) { 60*6777b538SAndroid Build Coastguard Worker- long delta = ctxt->input->base - oldbase; 61*6777b538SAndroid Build Coastguard Worker- start = start + delta; 62*6777b538SAndroid Build Coastguard Worker- in = in + delta; 63*6777b538SAndroid Build Coastguard Worker- } 64*6777b538SAndroid Build Coastguard Worker- end = ctxt->input->end; 65*6777b538SAndroid Build Coastguard Worker+ GROW_PARSE_ATT_VALUE_INTERNAL(ctxt, in, start, end) 66*6777b538SAndroid Build Coastguard Worker if (((in - start) > XML_MAX_TEXT_LENGTH) && 67*6777b538SAndroid Build Coastguard Worker ((ctxt->options & XML_PARSE_HUGE) == 0)) { 68*6777b538SAndroid Build Coastguard Worker xmlFatalErrMsg(ctxt, XML_ERR_ATTRIBUTE_NOT_FINISHED, 69*6777b538SAndroid Build Coastguard Worker@@ -8933,16 +8929,7 @@ xmlParseAttValueInternal(xmlParserCtxtPtr ctxt, int *len, int *alloc, 70*6777b538SAndroid Build Coastguard Worker col++; 71*6777b538SAndroid Build Coastguard Worker if ((*in++ == 0x20) && (*in == 0x20)) break; 72*6777b538SAndroid Build Coastguard Worker if (in >= end) { 73*6777b538SAndroid Build Coastguard Worker- const xmlChar *oldbase = ctxt->input->base; 74*6777b538SAndroid Build Coastguard Worker- GROW; 75*6777b538SAndroid Build Coastguard Worker- if (ctxt->instate == XML_PARSER_EOF) 76*6777b538SAndroid Build Coastguard Worker- return(NULL); 77*6777b538SAndroid Build Coastguard Worker- if (oldbase != ctxt->input->base) { 78*6777b538SAndroid Build Coastguard Worker- long delta = ctxt->input->base - oldbase; 79*6777b538SAndroid Build Coastguard Worker- start = start + delta; 80*6777b538SAndroid Build Coastguard Worker- in = in + delta; 81*6777b538SAndroid Build Coastguard Worker- } 82*6777b538SAndroid Build Coastguard Worker- end = ctxt->input->end; 83*6777b538SAndroid Build Coastguard Worker+ GROW_PARSE_ATT_VALUE_INTERNAL(ctxt, in, start, end) 84*6777b538SAndroid Build Coastguard Worker if (((in - start) > XML_MAX_TEXT_LENGTH) && 85*6777b538SAndroid Build Coastguard Worker ((ctxt->options & XML_PARSE_HUGE) == 0)) { 86*6777b538SAndroid Build Coastguard Worker xmlFatalErrMsg(ctxt, XML_ERR_ATTRIBUTE_NOT_FINISHED, 87*6777b538SAndroid Build Coastguard Worker@@ -8971,7 +8958,7 @@ xmlParseAttValueInternal(xmlParserCtxtPtr ctxt, int *len, int *alloc, 88*6777b538SAndroid Build Coastguard Worker if (ctxt->instate == XML_PARSER_EOF) 89*6777b538SAndroid Build Coastguard Worker return(NULL); 90*6777b538SAndroid Build Coastguard Worker if (oldbase != ctxt->input->base) { 91*6777b538SAndroid Build Coastguard Worker- long delta = ctxt->input->base - oldbase; 92*6777b538SAndroid Build Coastguard Worker+ ptrdiff_t delta = ctxt->input->base - oldbase; 93*6777b538SAndroid Build Coastguard Worker start = start + delta; 94*6777b538SAndroid Build Coastguard Worker in = in + delta; 95*6777b538SAndroid Build Coastguard Worker last = last + delta; 96*6777b538SAndroid Build Coastguard Worker@@ -8998,16 +8985,7 @@ xmlParseAttValueInternal(xmlParserCtxtPtr ctxt, int *len, int *alloc, 97*6777b538SAndroid Build Coastguard Worker in++; 98*6777b538SAndroid Build Coastguard Worker col++; 99*6777b538SAndroid Build Coastguard Worker if (in >= end) { 100*6777b538SAndroid Build Coastguard Worker- const xmlChar *oldbase = ctxt->input->base; 101*6777b538SAndroid Build Coastguard Worker- GROW; 102*6777b538SAndroid Build Coastguard Worker- if (ctxt->instate == XML_PARSER_EOF) 103*6777b538SAndroid Build Coastguard Worker- return(NULL); 104*6777b538SAndroid Build Coastguard Worker- if (oldbase != ctxt->input->base) { 105*6777b538SAndroid Build Coastguard Worker- long delta = ctxt->input->base - oldbase; 106*6777b538SAndroid Build Coastguard Worker- start = start + delta; 107*6777b538SAndroid Build Coastguard Worker- in = in + delta; 108*6777b538SAndroid Build Coastguard Worker- } 109*6777b538SAndroid Build Coastguard Worker- end = ctxt->input->end; 110*6777b538SAndroid Build Coastguard Worker+ GROW_PARSE_ATT_VALUE_INTERNAL(ctxt, in, start, end) 111*6777b538SAndroid Build Coastguard Worker if (((in - start) > XML_MAX_TEXT_LENGTH) && 112*6777b538SAndroid Build Coastguard Worker ((ctxt->options & XML_PARSE_HUGE) == 0)) { 113*6777b538SAndroid Build Coastguard Worker xmlFatalErrMsg(ctxt, XML_ERR_ATTRIBUTE_NOT_FINISHED, 114