helpcompiler/source/HelpCompiler.cxx | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-)
New commits: commit 98db90e2ccd7cefaa5094c2d1d2af8cb10b4a867 Author: Stephan Bergmann <sberg...@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 <c...@libreoffice.org> Reviewed-by: Stephan Bergmann <sberg...@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) _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits