From 2fe647fd7a610dfe919f4c7aae99f08536f55317 Mon Sep 17 00:00:00 2001 From: Jonathan White Date: Wed, 19 Jul 2023 16:11:59 -0400 Subject: [PATCH] Fix potential crash in search if an entry doesn't have a group (#9633) --- src/core/EntrySearcher.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/core/EntrySearcher.cpp b/src/core/EntrySearcher.cpp index 4a25eaf71b..13369a66d8 100644 --- a/src/core/EntrySearcher.cpp +++ b/src/core/EntrySearcher.cpp @@ -148,7 +148,10 @@ bool EntrySearcher::searchEntryImpl(const Entry* entry) auto attributes = QStringList(attributes_keys + entry->attributes()->values(attributes_keys)); auto attachments = QStringList(entry->attachments()->keys()); // Build a group hierarchy to allow searching for e.g. /group1/subgroup* - auto hierarchy = entry->group()->hierarchy().join('/').prepend("/"); + QString hierarchy; + if (entry->group()) { + hierarchy = entry->group()->hierarchy().join('/').prepend("/"); + } // By default, empty term matches every entry. // However when skipping protected fields, we will reject everything instead @@ -190,7 +193,7 @@ bool EntrySearcher::searchEntryImpl(const Entry* entry) // Match against the full hierarchy if the word contains a '/' otherwise just the group name if (term.word.contains('/')) { found = term.regex.match(hierarchy).hasMatch(); - } else { + } else if (entry->group()) { found = term.regex.match(entry->group()->name()).hasMatch(); } break;