From 6ee012d16bf8221c43c14b8d80a5d68ec0377b66 Mon Sep 17 00:00:00 2001 From: chrchr-github <78114321+chrchr-github@users.noreply.github.com> Date: Tue, 7 Jul 2026 15:04:25 +0200 Subject: [PATCH 1/3] Update symboldatabase.cpp --- lib/symboldatabase.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/symboldatabase.cpp b/lib/symboldatabase.cpp index b687c9f77a4..fec7a06d612 100644 --- a/lib/symboldatabase.cpp +++ b/lib/symboldatabase.cpp @@ -138,8 +138,13 @@ const Token* SymbolDatabase::isEnumDefinition(const Token* tok) if (tok->str() == "{") return tok; tok = tok->next(); // skip ':' - while (Token::Match(tok, "%name%|::")) + bool hasType = false; + while (Token::Match(tok, "%name%|::")) { + hasType = true; tok = tok->next(); + } + if (!hasType) + throw InternalError(tok, "SymbolDatabase bailout; invalid enum", InternalError::SYNTAX); return Token::simpleMatch(tok, "{") ? tok : nullptr; } From 7370f1a95ef66be51c952dc43d3b569d3bccedc8 Mon Sep 17 00:00:00 2001 From: chrchr-github <78114321+chrchr-github@users.noreply.github.com> Date: Tue, 7 Jul 2026 15:05:35 +0200 Subject: [PATCH 2/3] Create crash-def181ea7bf444e7a9d0f85b3ad264c31a0b90e4 --- .../fuzz-crash/crash-def181ea7bf444e7a9d0f85b3ad264c31a0b90e4 | 1 + 1 file changed, 1 insertion(+) create mode 100644 test/cli/fuzz-crash/crash-def181ea7bf444e7a9d0f85b3ad264c31a0b90e4 diff --git a/test/cli/fuzz-crash/crash-def181ea7bf444e7a9d0f85b3ad264c31a0b90e4 b/test/cli/fuzz-crash/crash-def181ea7bf444e7a9d0f85b3ad264c31a0b90e4 new file mode 100644 index 00000000000..3b609c62362 --- /dev/null +++ b/test/cli/fuzz-crash/crash-def181ea7bf444e7a9d0f85b3ad264c31a0b90e4 @@ -0,0 +1 @@ +enumf:{}; From f63c1c0219f901a7aa2cb13295231cb27a815168 Mon Sep 17 00:00:00 2001 From: chrchr-github <78114321+chrchr-github@users.noreply.github.com> Date: Thu, 9 Jul 2026 08:36:20 +0200 Subject: [PATCH 3/3] Update symboldatabase.cpp --- lib/symboldatabase.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/symboldatabase.cpp b/lib/symboldatabase.cpp index fec7a06d612..6e6a98ee81e 100644 --- a/lib/symboldatabase.cpp +++ b/lib/symboldatabase.cpp @@ -140,7 +140,8 @@ const Token* SymbolDatabase::isEnumDefinition(const Token* tok) tok = tok->next(); // skip ':' bool hasType = false; while (Token::Match(tok, "%name%|::")) { - hasType = true; + if (tok->isName()) + hasType = true; tok = tok->next(); } if (!hasType)