Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 622556 | Differences between
and this patch

Collapse All | Expand All

(-)a/Makefile.am (+18 lines)
Lines 422-427 Errtests : xmllint$(EXEEXT) Link Here
422
	      if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \
422
	      if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \
423
	      rm result.$$name error.$$name ; \
423
	      rm result.$$name error.$$name ; \
424
	  fi ; fi ; done)
424
	  fi ; fi ; done)
425
	@echo "## Error cases regression tests (old 1.0)"
426
	-@(for i in $(srcdir)/test/errors10/*.xml ; do \
427
	  name=`basename $$i`; \
428
	  if [ ! -d $$i ] ; then \
429
	  if [ ! -f $(srcdir)/result/errors10/$$name ] ; then \
430
	      echo New test file $$name ; \
431
	      $(CHECKER) $(top_builddir)/xmllint --oldxml10 $$i \
432
	         2> $(srcdir)/result/errors10/$$name.err \
433
		 > $(srcdir)/result/errors10/$$name ; \
434
	      grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0"; \
435
	  else \
436
	      log=`$(CHECKER) $(top_builddir)/xmllint --oldxml10 $$i 2> error.$$name > result.$$name ; \
437
	      grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0"; \
438
	      diff $(srcdir)/result/errors10/$$name result.$$name ; \
439
	      diff $(srcdir)/result/errors10/$$name.err error.$$name` ; \
440
	      if [ -n "$$log" ] ; then echo $$name result ; echo "$$log" ; fi ; \
441
	      rm result.$$name error.$$name ; \
442
	  fi ; fi ; done)
425
	@echo "## Error cases stream regression tests"
443
	@echo "## Error cases stream regression tests"
426
	-@(for i in $(srcdir)/test/errors/*.xml ; do \
444
	-@(for i in $(srcdir)/test/errors/*.xml ; do \
427
	  name=`basename $$i`; \
445
	  name=`basename $$i`; \
(-)a/parser.c (-8 / +10 lines)
Lines 2115-2121 static void xmlGROW (xmlParserCtxtPtr ctxt) { Link Here
2115
	ctxt->input->line++; ctxt->input->col = 1;			\
2115
	ctxt->input->line++; ctxt->input->col = 1;			\
2116
    } else ctxt->input->col++;						\
2116
    } else ctxt->input->col++;						\
2117
    ctxt->input->cur += l;				\
2117
    ctxt->input->cur += l;				\
2118
    if (*ctxt->input->cur == '%') xmlParserHandlePEReference(ctxt);	\
2119
  } while (0)
2118
  } while (0)
2120
2119
2121
#define CUR_CHAR(l) xmlCurrentChar(ctxt, &l)
2120
#define CUR_CHAR(l) xmlCurrentChar(ctxt, &l)
Lines 3406-3418 xmlParseNameComplex(xmlParserCtxtPtr ctxt) { Link Here
3406
	    len += l;
3405
	    len += l;
3407
	    NEXTL(l);
3406
	    NEXTL(l);
3408
	    c = CUR_CHAR(l);
3407
	    c = CUR_CHAR(l);
3409
	    if (c == 0) {
3410
		count = 0;
3411
		GROW;
3412
                if (ctxt->instate == XML_PARSER_EOF)
3413
                    return(NULL);
3414
		c = CUR_CHAR(l);
3415
	    }
3416
	}
3408
	}
3417
    }
3409
    }
3418
    if ((len > XML_MAX_NAME_LENGTH) &&
3410
    if ((len > XML_MAX_NAME_LENGTH) &&
Lines 3420-3425 xmlParseNameComplex(xmlParserCtxtPtr ctxt) { Link Here
3420
        xmlFatalErr(ctxt, XML_ERR_NAME_TOO_LONG, "Name");
3412
        xmlFatalErr(ctxt, XML_ERR_NAME_TOO_LONG, "Name");
3421
        return(NULL);
3413
        return(NULL);
3422
    }
3414
    }
3415
    if (ctxt->input->cur - ctxt->input->base < len) {
3416
        /*
3417
         * There were a couple of bugs where PERefs lead to to a change
3418
         * of the buffer. Check the buffer size to avoid passing an invalid
3419
         * pointer to xmlDictLookup.
3420
         */
3421
        xmlFatalErr(ctxt, XML_ERR_INTERNAL_ERROR,
3422
                    "unexpected change of input buffer");
3423
        return (NULL);
3424
    }
3423
    if ((*ctxt->input->cur == '\n') && (ctxt->input->cur[-1] == '\r'))
3425
    if ((*ctxt->input->cur == '\n') && (ctxt->input->cur[-1] == '\r'))
3424
        return(xmlDictLookup(ctxt->dict, ctxt->input->cur - (len + 1), len));
3426
        return(xmlDictLookup(ctxt->dict, ctxt->input->cur - (len + 1), len));
3425
    return(xmlDictLookup(ctxt->dict, ctxt->input->cur - len, len));
3427
    return(xmlDictLookup(ctxt->dict, ctxt->input->cur - len, len));
(-)a/result/errors10/781205.xml.err (+21 lines)
Line 0 Link Here
1
Entity: line 1: parser error : internal error: xmlParseInternalSubset: error detected in Markup declaration
2
3
 %a; 
4
    ^
5
Entity: line 1: 
6
<:0000
7
^
8
Entity: line 1: parser error : DOCTYPE improperly terminated
9
 %a; 
10
    ^
11
Entity: line 1: 
12
<:0000
13
^
14
namespace error : Failed to parse QName ':0000'
15
 %a; 
16
    ^
17
<:0000
18
      ^
19
./test/errors10/781205.xml:4: parser error : Couldn't find end of Start Tag :0000 line 1
20
21
^
(-)a/result/errors10/781361.xml.err (+13 lines)
Line 0 Link Here
1
./test/errors10/781361.xml:4: parser error : xmlParseElementDecl: 'EMPTY', 'ANY' or '(' expected
2
3
^
4
./test/errors10/781361.xml:4: parser error : internal error: xmlParseInternalSubset: error detected in Markup declaration
5
6
7
^
8
./test/errors10/781361.xml:4: parser error : DOCTYPE improperly terminated
9
10
^
11
./test/errors10/781361.xml:4: parser error : Start tag expected, '<' not found
12
13
^
(-)a/result/valid/766956.xml.err (+9 lines)
Line 0 Link Here
1
test/valid/dtds/766956.dtd:2: parser error : PEReference: expecting ';'
2
%ä%ent;
3
   ^
4
Entity: line 1: parser error : Content error in the external subset
5
 %ent; 
6
      ^
7
Entity: line 1: 
8
value
9
^
(-)a/result/valid/766956.xml.err.rdr (+10 lines)
Line 0 Link Here
1
test/valid/dtds/766956.dtd:2: parser error : PEReference: expecting ';'
2
%ä%ent;
3
   ^
4
Entity: line 1: parser error : Content error in the external subset
5
 %ent; 
6
      ^
7
Entity: line 1: 
8
value
9
^
10
./test/valid/766956.xml : failed to parse
(-)a/runtest.c (+3 lines)
Lines 4202-4207 testDesc testDescriptions[] = { Link Here
4202
    { "Error cases regression tests",
4202
    { "Error cases regression tests",
4203
      errParseTest, "./test/errors/*.xml", "result/errors/", "", ".err",
4203
      errParseTest, "./test/errors/*.xml", "result/errors/", "", ".err",
4204
      0 },
4204
      0 },
4205
    { "Error cases regression tests (old 1.0)",
4206
      errParseTest, "./test/errors10/*.xml", "result/errors10/", "", ".err",
4207
      XML_PARSE_OLD10 },
4205
#ifdef LIBXML_READER_ENABLED
4208
#ifdef LIBXML_READER_ENABLED
4206
    { "Error cases stream regression tests",
4209
    { "Error cases stream regression tests",
4207
      streamParseTest, "./test/errors/*.xml", "result/errors/", NULL, ".str",
4210
      streamParseTest, "./test/errors/*.xml", "result/errors/", NULL, ".str",
(-)a/test/errors10/781205.xml (+3 lines)
Line 0 Link Here
1
<!DOCTYPE D [
2
  <!ENTITY % a "<:0000">
3
  %a;
(-)a/test/errors10/781361.xml (+3 lines)
Line 0 Link Here
1
<!DOCTYPE doc [
2
  <!ENTITY % elem "<!ELEMENT e0000000000">
3
  %elem;
(-)a/test/valid/766956.xml (+2 lines)
Line 0 Link Here
1
<!DOCTYPE test SYSTEM "dtds/766956.dtd">
2
<test/>
(-)a/test/valid/dtds/766956.dtd (+2 lines)
Line 0 Link Here
1
<!ENTITY % ent "value">
2
%ä%ent;

Return to bug 622556