Skip to content

Commit 803fdfe

Browse files
authored
Fix #14432: fuzzing crash (null-pointer-use) in Tokenizer::setVarIdPass1() (danmar#8161)
1 parent 697360d commit 803fdfe

File tree

3 files changed

+7
-0
lines changed

3 files changed

+7
-0
lines changed

lib/tokenize.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4871,6 +4871,8 @@ void Tokenizer::setVarIdPass1()
48714871
mTemplateSimplifier->getUsedVariables(),
48724872
variableMap.map(true),
48734873
mTemplateVarIdUsage);
4874+
if (!tok3->next())
4875+
syntaxError(tok3);
48744876
}
48754877
}
48764878

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
e U U,i

test/testgarbage.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -258,6 +258,7 @@ class TestGarbage : public TestFixture {
258258
TEST_CASE(garbageCode227);
259259
TEST_CASE(garbageCode228);
260260
TEST_CASE(garbageCode229);
261+
TEST_CASE(garbageCode230);
261262

262263
TEST_CASE(garbageCodeFuzzerClientMode1); // test cases created with the fuzzer client, mode 1
263264

@@ -1771,6 +1772,9 @@ class TestGarbage : public TestFixture {
17711772
ASSERT_THROW_INTERNAL(checkCode("void f() {} [[maybe_unused]]"), SYNTAX);
17721773
ASSERT_THROW_INTERNAL(checkCode("void f() {} [[unused]]"), SYNTAX);
17731774
}
1775+
void garbageCode230() { // #14432
1776+
ASSERT_THROW_INTERNAL(checkCode("e U U,i"), SYNTAX);
1777+
}
17741778

17751779

17761780
void syntaxErrorFirstToken() {

0 commit comments

Comments
 (0)