1
0
mirror of https://gitlab.gnome.org/GNOME/libxml2.git synced 2025-07-13 09:01:53 +03:00

fixing bug #78662 i.e. add proper escaping of URI when saving HTML files.

* HTMLtree.c uri.c: fixing bug #78662 i.e. add proper
  escaping of URI when saving HTML files.
* result/HTML/*: this impacted some tests
Daniel
This commit is contained in:
Daniel Veillard
2002-04-14 22:00:22 +00:00
parent 9b731d709e
commit eb475a37df
5 changed files with 91 additions and 54 deletions

View File

@ -26,6 +26,7 @@
#include <libxml/xmlerror.h>
#include <libxml/parserInternals.h>
#include <libxml/globals.h>
#include <libxml/uri.h>
/************************************************************************
* *
@ -349,7 +350,23 @@ htmlAttrDump(xmlBufferPtr buf, xmlDocPtr doc, xmlAttrPtr cur) {
value = xmlNodeListGetString(doc, cur->children, 0);
if (value) {
xmlBufferWriteChar(buf, "=");
xmlBufferWriteQuotedString(buf, value);
if ((xmlStrEqual(cur->name, BAD_CAST "href")) ||
(xmlStrEqual(cur->name, BAD_CAST "src"))) {
xmlChar *escaped;
xmlChar *tmp = value;
while (IS_BLANK(*tmp)) tmp++;
escaped = xmlURIEscapeStr(tmp, BAD_CAST"@/:=?;#%");
if (escaped != NULL) {
xmlBufferWriteQuotedString(buf, escaped);
xmlFree(escaped);
} else {
xmlBufferWriteQuotedString(buf, value);
}
} else {
xmlBufferWriteQuotedString(buf, value);
}
xmlFree(value);
} else {
xmlBufferWriteChar(buf, "=\"\"");
@ -820,7 +837,23 @@ htmlAttrDumpOutput(xmlOutputBufferPtr buf, xmlDocPtr doc, xmlAttrPtr cur,
value = xmlNodeListGetString(doc, cur->children, 0);
if (value) {
xmlOutputBufferWriteString(buf, "=");
xmlBufferWriteQuotedString(buf->buffer, value);
if ((xmlStrEqual(cur->name, BAD_CAST "href")) ||
(xmlStrEqual(cur->name, BAD_CAST "src"))) {
xmlChar *escaped;
xmlChar *tmp = value;
while (IS_BLANK(*tmp)) tmp++;
escaped = xmlURIEscapeStr(tmp, BAD_CAST"@/:=?;#%");
if (escaped != NULL) {
xmlBufferWriteQuotedString(buf->buffer, escaped);
xmlFree(escaped);
} else {
xmlBufferWriteQuotedString(buf->buffer, value);
}
} else {
xmlBufferWriteQuotedString(buf->buffer, value);
}
xmlFree(value);
} else {
xmlOutputBufferWriteString(buf, "=\"\"");