Skip to content

Commit 5214841

Browse files
author
Daniel Marjamäki
committed
Fixed cppcheck-opensource#2292 (segmentation fault with cppcheck 1.46 with --errorlist)
1 parent f2fac1f commit 5214841

2 files changed

Lines changed: 11 additions & 2 deletions

File tree

lib/checkbufferoverrun.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ void CheckBufferOverrun::bufferOverrun(const Token *tok, const std::string &varn
114114

115115
void CheckBufferOverrun::strncatUsage(const Token *tok)
116116
{
117-
if (!_settings->_checkCodingStyle)
117+
if (_settings && !_settings->_checkCodingStyle)
118118
return;
119119

120120
reportError(tok, Severity::warning, "strncatUsage", "Dangerous usage of strncat. Tip: the 3rd parameter means maximum number of characters to append");
@@ -127,7 +127,7 @@ void CheckBufferOverrun::outOfBounds(const Token *tok, const std::string &what)
127127

128128
void CheckBufferOverrun::sizeArgumentAsChar(const Token *tok)
129129
{
130-
if (!_settings->_checkCodingStyle)
130+
if (_settings && !_settings->_checkCodingStyle)
131131
return;
132132
reportError(tok, Severity::warning, "sizeArgumentAsChar", "The size argument is given as a char constant");
133133
}

test/testbufferoverrun.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,8 @@ class TestBufferOverrun : public TestFixture
188188
TEST_CASE(cmdLineArgs1);
189189

190190
TEST_CASE(scope); // handling different scopes
191+
192+
TEST_CASE(getErrorMessages);
191193
}
192194

193195

@@ -2699,6 +2701,13 @@ class TestBufferOverrun : public TestFixture
26992701
"}\n");
27002702
ASSERT_EQUALS("", errout.str());
27012703
}
2704+
2705+
void getErrorMessages()
2706+
{
2707+
// Ticket #2292: segmentation fault when using --errorlist
2708+
CheckBufferOverrun c;
2709+
c.getErrorMessages();
2710+
}
27022711
};
27032712

27042713
REGISTER_TEST(TestBufferOverrun)

0 commit comments

Comments
 (0)