1Index: parser.c
2===================================================================
3--- parser.c	(revision 3773)
4+++ parser.c	(working copy)
5@@ -2505,6 +2505,11 @@ xmlStringLenDecodeEntities(xmlParserCtxt
6 	    c = CUR_SCHAR(str, l);
7 	else
8 	    c = 0;
9+        if ((nbchars > 500000) &&
10+	    (ctxt->instate == XML_PARSER_ATTRIBUTE_VALUE)) {
11+	    xmlFatalErr(ctxt, XML_ERR_ENTITY_LOOP, NULL);
12+	    goto int_error;
13+        }
14     }
15     buffer[nbchars++] = 0;
16     return(buffer);
17