From 5ce63a1df0616e3d4e03841f45cb14caad361773 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Marjam=C3=A4ki?= Date: Mon, 13 Dec 2010 18:17:33 +0100 Subject: [PATCH] Fixed #2292 (segmentation fault with cppcheck 1.46 with --errorlist) --- lib/checkbufferoverrun.cpp | 4 ++-- test/testbufferoverrun.cpp | 9 +++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/lib/checkbufferoverrun.cpp b/lib/checkbufferoverrun.cpp index 933ff1817..127b9bdaa 100644 --- a/lib/checkbufferoverrun.cpp +++ b/lib/checkbufferoverrun.cpp @@ -114,7 +114,7 @@ void CheckBufferOverrun::bufferOverrun(const Token *tok, const std::string &varn void CheckBufferOverrun::strncatUsage(const Token *tok) { - if (!_settings->_checkCodingStyle) + if (_settings && !_settings->_checkCodingStyle) return; 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) void CheckBufferOverrun::sizeArgumentAsChar(const Token *tok) { - if (!_settings->_checkCodingStyle) + if (_settings && !_settings->_checkCodingStyle) return; reportError(tok, Severity::warning, "sizeArgumentAsChar", "The size argument is given as a char constant"); } diff --git a/test/testbufferoverrun.cpp b/test/testbufferoverrun.cpp index 847d808ea..9d706555a 100644 --- a/test/testbufferoverrun.cpp +++ b/test/testbufferoverrun.cpp @@ -188,6 +188,8 @@ private: TEST_CASE(cmdLineArgs1); TEST_CASE(scope); // handling different scopes + + TEST_CASE(getErrorMessages); } @@ -2699,6 +2701,13 @@ private: "}\n"); ASSERT_EQUALS("", errout.str()); } + + void getErrorMessages() + { + // Ticket #2292: segmentation fault when using --errorlist + CheckBufferOverrun c; + c.getErrorMessages(); + } }; REGISTER_TEST(TestBufferOverrun)