[Expat-checkins] expat/lib xmltok_impl.c,1.5,1.6 xmlparse.c,1.81,1.82

Karl Waclawek kwaclaw@users.sourceforge.net
Fri, 30 Aug 2002 16:22:23 -0700


Update of /cvsroot/expat/expat/lib
In directory usw-pr-cvs1:/tmp/cvs-serv6344

Modified Files:
	xmltok_impl.c xmlparse.c 
Log Message:
Fix bug reported by Rolf Ade:
CR at end of buffer in epilog causes memory access violation.

Index: xmltok_impl.c
===================================================================
RCS file: /cvsroot/expat/expat/lib/xmltok_impl.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- xmltok_impl.c	25 Jul 2002 14:51:19 -0000	1.5
+++ xmltok_impl.c	30 Aug 2002 23:22:20 -0000	1.6
@@ -1009,8 +1009,10 @@
       return XML_TOK_INVALID;
     }
   case BT_CR:
-    if (ptr + MINBPC(enc) == end)
+    if (ptr + MINBPC(enc) == end) {
+      *nextTokPtr = end;
       return -XML_TOK_PROLOG_S;
+    }
     /* fall through */
   case BT_S: case BT_LF:
     for (;;) {

Index: xmlparse.c
===================================================================
RCS file: /cvsroot/expat/expat/lib/xmlparse.c,v
retrieving revision 1.81
retrieving revision 1.82
diff -u -d -r1.81 -r1.82
--- xmlparse.c	29 Aug 2002 04:54:04 -0000	1.81
+++ xmlparse.c	30 Aug 2002 23:22:20 -0000	1.82
@@ -4024,13 +4024,15 @@
     switch (tok) {
     case -XML_TOK_PROLOG_S:
       if (defaultHandler) {
-        eventEndPtr = end;
-        reportDefault(parser, encoding, s, end);
+        eventEndPtr = next;
+        reportDefault(parser, encoding, s, next);
       }
-      /* fall through */
+      if (nextPtr)
+        *nextPtr = next;
+      return XML_ERROR_NONE;
     case XML_TOK_NONE:
       if (nextPtr)
-        *nextPtr = end;
+        *nextPtr = s;
       return XML_ERROR_NONE;
     case XML_TOK_PROLOG_S:
       if (defaultHandler)