mirror of
https://github.com/subsurface/subsurface.git
synced 2025-01-31 20:43:24 +00:00
Import / Export: Remove Unsafe XML Handling Options.
Remove the options to expand entities and so continue when encountering invalid / malformed XML, as both of these can be exploited by supplying maliciously crafted XML. Signed-off-by: Michael Keller <mikeller@042.ch>
This commit is contained in:
parent
92c3837f6e
commit
6aca76c342
3 changed files with 4 additions and 5 deletions
|
@ -1765,9 +1765,9 @@ extern "C" int parse_xml_buffer(const char *url, const char *buffer, int, struct
|
||||||
|
|
||||||
state.log = log;
|
state.log = log;
|
||||||
state.fingerprints = &fingerprint_table; // simply use the global table for now
|
state.fingerprints = &fingerprint_table; // simply use the global table for now
|
||||||
doc = xmlReadMemory(res, strlen(res), url, NULL, XML_PARSE_HUGE | XML_PARSE_RECOVER);
|
doc = xmlReadMemory(res, strlen(res), url, NULL, XML_PARSE_HUGE);
|
||||||
if (!doc)
|
if (!doc)
|
||||||
doc = xmlReadMemory(res, strlen(res), url, "latin1", XML_PARSE_HUGE | XML_PARSE_RECOVER);
|
doc = xmlReadMemory(res, strlen(res), url, "latin1", XML_PARSE_HUGE);
|
||||||
|
|
||||||
if (res != buffer)
|
if (res != buffer)
|
||||||
free((char *)res);
|
free((char *)res);
|
||||||
|
@ -2346,7 +2346,6 @@ static xmlDoc *test_xslt_transforms(xmlDoc *doc, const struct xml_params *params
|
||||||
}
|
}
|
||||||
xmlFree(attribute);
|
xmlFree(attribute);
|
||||||
}
|
}
|
||||||
xmlSubstituteEntitiesDefault(1);
|
|
||||||
xslt = get_stylesheet(info->file);
|
xslt = get_stylesheet(info->file);
|
||||||
if (xslt == NULL) {
|
if (xslt == NULL) {
|
||||||
report_error(translate("gettextFromC", "Can't open stylesheet %s"), info->file);
|
report_error(translate("gettextFromC", "Can't open stylesheet %s"), info->file);
|
||||||
|
|
|
@ -879,7 +879,7 @@ static int export_dives_xslt_doit(const char *filename, struct xml_params *param
|
||||||
* transform it to selected export format, finally dumping
|
* transform it to selected export format, finally dumping
|
||||||
* the XML into a character buffer.
|
* the XML into a character buffer.
|
||||||
*/
|
*/
|
||||||
doc = xmlReadMemory(buf.buffer, buf.len, "divelog", NULL, XML_PARSE_HUGE | XML_PARSE_RECOVER);
|
doc = xmlReadMemory(buf.buffer, buf.len, "divelog", NULL, XML_PARSE_HUGE);
|
||||||
if (!doc)
|
if (!doc)
|
||||||
return report_error("Failed to read XML memory");
|
return report_error("Failed to read XML memory");
|
||||||
|
|
||||||
|
|
|
@ -141,7 +141,7 @@ bool uploadDiveLogsDE::prepareDives(const QString &tempfile, bool selected)
|
||||||
* transform it to divelogs.de format, finally dumping
|
* transform it to divelogs.de format, finally dumping
|
||||||
* the XML into a character buffer.
|
* the XML into a character buffer.
|
||||||
*/
|
*/
|
||||||
xmlDoc *doc = xmlReadMemory(mb.buffer, mb.len, "divelog", NULL, XML_PARSE_HUGE | XML_PARSE_RECOVER);
|
xmlDoc *doc = xmlReadMemory(mb.buffer, mb.len, "divelog", NULL, XML_PARSE_HUGE);
|
||||||
if (!doc) {
|
if (!doc) {
|
||||||
qWarning() << errPrefix << "could not parse back into memory the XML file we've just created!";
|
qWarning() << errPrefix << "could not parse back into memory the XML file we've just created!";
|
||||||
report_error("%s", qPrintable(tr("internal error")));
|
report_error("%s", qPrintable(tr("internal error")));
|
||||||
|
|
Loading…
Add table
Reference in a new issue