1
0
mirror of https://gitlab.gnome.org/GNOME/libxml2.git synced 2025-07-29 11:41:22 +03:00

fixing #151456, an encoding error could generate a serialization loop.

* xmlIO.c: fixing #151456, an encoding error could generate
  a serialization loop.
Daniel
This commit is contained in:
Daniel Veillard
2004-08-31 12:15:36 +00:00
parent 0bff36ddf7
commit 71b956387b
2 changed files with 9 additions and 1 deletions

View File

@ -3024,6 +3024,7 @@ xmlOutputBufferWriteEscape(xmlOutputBufferPtr out, const xmlChar *str,
int nbchars = 0; /* number of chars to output to I/O */
int ret; /* return from function call */
int written = 0; /* number of char written to I/O so far */
int oldwritten=0;/* loop guard */
int chunk; /* number of byte currently processed from str */
int len; /* number of bytes in str */
int cons; /* byte from str consumed */
@ -3035,6 +3036,8 @@ xmlOutputBufferWriteEscape(xmlOutputBufferPtr out, const xmlChar *str,
if (escaping == NULL) escaping = xmlEscapeContent;
do {
oldwritten = written;
/*
* how many bytes to consume and how many bytes to store.
*/
@ -3111,7 +3114,7 @@ xmlOutputBufferWriteEscape(xmlOutputBufferPtr out, const xmlChar *str,
xmlBufferResize(out->buffer, out->buffer->size + MINLEN);
}
written += nbchars;
} while (len > 0);
} while ((len > 0) && (oldwritten != written));
done:
#ifdef DEBUG_INPUT