[LyX/master] InsetIndex: make a condition more bullet-proof, a nullptr could be dereferenced.

Thibaut Cuvelier tcuvelier at lyx.org
Sun Jan 8 20:21:27 UTC 2023


commit 2d56c01dcfaf04744ab6d854af3965919cc07b82
Author: Thibaut Cuvelier <tcuvelier at lyx.org>
Date:   Sun Jan 8 22:19:39 2023 +0100

    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<IndexEntry> entries;
    1863            const docstring & indexType = params().getParamOr("type", from_ascii("idx"));
    1864            for (const TocItem& item : *toc) {
    1865                    const auto* inset = static_cast<const InsetIndex*>(&(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 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/src/insets/InsetIndex.cpp b/src/insets/InsetIndex.cpp
index f460015..7db133a 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<const InsetIndex*>(&(item.dit().inset()));
-		if (item.isOutput() && inset->params().index == indexType)
+		if (item.isOutput() && inset && inset->params().index == indexType)
 			entries.emplace_back(IndexEntry{inset, &op});
 	}
 


More information about the lyx-cvs mailing list