[Libreoffice-commits] core.git: helpcompiler/source
Stephan Bergmann
sbergman at redhat.com
Wed Jun 13 14:05:50 UTC 2018
helpcompiler/source/HelpCompiler.cxx | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
New commits:
commit 98db90e2ccd7cefaa5094c2d1d2af8cb10b4a867
Author: Stephan Bergmann <sbergman at redhat.com>
Date: Wed Jun 13 10:21:21 2018 +0200
Don't create std::string from nullptr
...which violates the ctor's preconditions, so is UB. Also, the "XML Help
Document Type Definition" appendix of
<http://documentation.openoffice.org/online_help/OOo2HelpAuthoring.pdf> states
that "branch" and "id" attributes are #REQUIRED for the "bookmark" element.
(There's probably further cases in the surrounding code where a std::string is
created from a potentially null argument, which would benefit from similar
fixes.)
Change-Id: I414576d13de784de1290951bcdd5e3ecb51f9cb8
Reviewed-on: https://gerrit.libreoffice.org/55735
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Stephan Bergmann <sbergman at redhat.com>
diff --git a/helpcompiler/source/HelpCompiler.cxx b/helpcompiler/source/HelpCompiler.cxx
index 1013c8d8e81a..8cfdcecfa539 100644
--- a/helpcompiler/source/HelpCompiler.cxx
+++ b/helpcompiler/source/HelpCompiler.cxx
@@ -325,10 +325,18 @@ void myparser::traverse( xmlNodePtr parentNode )
else if (!strcmp(reinterpret_cast<const char*>(test->name), "bookmark"))
{
xmlChar *branchxml = xmlGetProp(test, reinterpret_cast<const xmlChar*>("branch"));
- xmlChar *idxml = xmlGetProp(test, reinterpret_cast<const xmlChar*>("id"));
+ if (branchxml == nullptr) {
+ throw HelpProcessingException(
+ HelpProcessingErrorClass::XmlParsing, "bookmark lacks branch attribute");
+ }
std::string branch(reinterpret_cast<char*>(branchxml));
- std::string anchor(reinterpret_cast<char*>(idxml));
xmlFree (branchxml);
+ xmlChar *idxml = xmlGetProp(test, reinterpret_cast<const xmlChar*>("id"));
+ if (idxml == nullptr) {
+ throw HelpProcessingException(
+ HelpProcessingErrorClass::XmlParsing, "bookmark lacks id attribute");
+ }
+ std::string anchor(reinterpret_cast<char*>(idxml));
xmlFree (idxml);
if (branch.compare(0, 3, "hid") == 0)
More information about the Libreoffice-commits
mailing list