From 2d56c01dcfaf04744ab6d854af3965919cc07b82 Mon Sep 17 00:00:00 2001 From: Thibaut Cuvelier Date: Sun, 8 Jan 2023 22:19:39 +0100 Subject: [PATCH] InsetIndex: make a condition more bullet-proof, a nullptr could be dereferenced. Error noticed by Coverity: *** CID 382777: Memory - illegal accesses (RETURN_LOCAL) /home/lasgoutt/src/lyx/coverity/lyx/src/insets/InsetIndex.cpp: 1866 in _ZNK3lyx15InsetPrintIndex5xhtmlB5cxx11ERNS_9XMLStreamERKNS_12OutputParamsE() 1860 1861 // Collect the index entries in a form we can use them. 1862 vector entries; 1863 const docstring & indexType = params().getParamOr("type", from_ascii("idx")); 1864 for (const TocItem& item : *toc) { 1865 const auto* inset = static_cast(&(item.dit().inset())); >>> CID 382777: Memory - illegal accesses (RETURN_LOCAL) >>> Using "indexType", which points to an out-of-scope temporary variable of type "lyx::docstring const". 1866 if (item.isOutput() && inset->params().index == indexType) 1867 entries.emplace_back(IndexEntry{inset, &op}); 1868 } 1869 1870 // If all the index entries are in notes or not displayed, get out sooner. 1871 if (entries.empty()) --- src/insets/InsetIndex.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/insets/InsetIndex.cpp b/src/insets/InsetIndex.cpp index f46001580f..7db133aa61 100644 --- a/src/insets/InsetIndex.cpp +++ b/src/insets/InsetIndex.cpp @@ -1858,7 +1858,7 @@ docstring InsetPrintIndex::xhtml(XMLStream &, OutputParams const & op) const const docstring & indexType = params().getParamOr("type", from_ascii("idx")); for (const TocItem& item : *toc) { const auto* inset = static_cast(&(item.dit().inset())); - if (item.isOutput() && inset->params().index == indexType) + if (item.isOutput() && inset && inset->params().index == indexType) entries.emplace_back(IndexEntry{inset, &op}); }