Commit Graph

6599 Commits

Author SHA1 Message Date
amai2012 e41beb4f8d Fix #6718 and #6719 (crashes on garbage code).
Local fixes avoiding access to NULL-token.  Also minor correction to
TemplateSimplifier::hasComplicatedSyntaxErrorsInTemplates()
2015-05-29 18:34:00 +02:00
Alexander Mai 098391ee32 #6715 segmentation fault (invalid code) in TemplateSimplifier::hasComplicatedSyntaxErrorsInTemplates. Harden TemplateSimplifier::hasComplicatedSyntaxErrorsInTemplates() 2015-05-28 21:38:20 +02:00
Alexander Mai 8adff0a31b #6712 segmentation fault (invalid code) in CheckExceptionSafety::checkRethrowCopy. Local fix to avoid accessing NULL-token 2015-05-28 21:12:02 +02:00
Alexander Mai 133d8f9a91 #6706 segmentation fault (invalid code) in tokenlist::compilePrecedence3. Local fix to prevent acess to NULL-token 2015-05-27 21:39:31 +02:00
Alexander Mai e498f8493e #6705 segmentation fault (invalid code) in CheckVaarg::va_list_usage. Local fix i nchecker preventing SIGSEGV on NULL-token 2015-05-27 21:12:33 +02:00
amai2012 0bd7cbfbeb Merge pull request #603 from simartin/ticket_6708
Ticket #6708: Check that a function name is not a reserved keyword in SymbolDatabase::isFunction instead of later.
2015-05-26 16:48:17 +02:00
amai2012 2bd49dcbde Merge pull request #602 from simartin/templateParameters_tests
Added unit tests for TemplateSimplifier::templateParameters involving variadic templates
2015-05-26 07:10:10 +02:00
Simon Martin 50e5595845 Ticket #6708: Check that a function name is not a reserved keyword in SymbolDatabase::isFunction instead of later. 2015-05-26 00:28:08 +02:00
amai2012 729b240d9c Refactoring (compiler warnings and a typo) 2015-05-25 23:15:59 +02:00
Simon Martin dc293ff483 Added unit tests for TemplateSimplifier::templateParameters involving variadic templates. 2015-05-25 23:13:01 +02:00
Daniel Marjamäki a8d7897471 Fixed travis failure 2015-05-25 18:19:40 +02:00
Daniel Marjamäki c0b33d2fef Fixed #6707 (new check: possible truncation when assigning int result to long) 2015-05-25 10:02:17 +02:00
Alexander Mai e28e9be82f Add TODO testcase for #5738. Refactoring: add some const 2015-05-25 08:20:14 +02:00
Daniel Marjamäki eb0db322eb Fixed #6560 (ValueFlow: handling ternary operator better in valueFlowSubFunction) 2015-05-24 17:02:00 +02:00
Martin Ettl 047d19220a #6608: Added a test case. 2015-05-24 10:03:50 +02:00
Simon Martin 26f244e638 Ticket #6704: Tighten pattern skipping base class declarations and fix crash upon garbage code. 2015-05-24 08:16:34 +02:00
Simon Martin 898ba783bf Ticket #6703: Rewrite pattern in SymbolDatabase to avoid crash upon garbage code. 2015-05-23 23:18:59 +02:00
amai2012 1eba077c24 Merge pull request #597 from simartin/ticket_5760
Ticket #5760: Added test case since the issue has been fixed with PR#596
2015-05-23 20:52:34 +02:00
Alexander Mai 7416d6add9 Another fix for handling of final/override specifiers in Tokenizer::simplifyKeyword() including a testcase. Ran astyle 2015-05-23 20:51:15 +02:00
Simon Martin 4ff2f8b3e2 Ticket #5760: Added test case since the issue has been fixed with PR#596. 2015-05-23 20:29:44 +02:00
amai2012 01ce910a02 Merge pull request #595 from HeisSpiter/master
Handle HeapCreate()/HeapDestroy() API for Windows
2015-05-23 14:10:53 +02:00
amai2012 7c23f4e611 Merge pull request #596 from simartin/ticket_6620-6685
Ticket #6620, #6685: Reserved keywords cannot be function names.
2015-05-23 13:47:07 +02:00
Alexander Mai e8d84bc6b4 #6700 const vs non-const inside assert() statement. Function matching in symboldatabase did not honor const'ness of a class instance variable 2015-05-23 11:56:11 +02:00
Simon Martin 67eab0cd7c Ticket #6620, #6685: Reserved keywords cannot be function names. 2015-05-23 11:29:58 +02:00
Pierre Schweitzer 5a68e352df Add various tests targeting Windows platform to show the current troubles cppcheck has to distinguish two different source of allocation used together. 2015-05-19 21:23:09 +02:00
Alexander Mai f0bc300198 #6510 False positive performance warning for std::list::size(). Fix this and other similar false positives. Refactoring of Variable::isStlType(), use fail-safe std::set instead of plain array. Run astyle 2015-05-17 20:02:41 +02:00
amai2012 20842fb1fc #6690 override and final qualifiers plus less than operator results in a syntax error
Tokenizer::simplifyKeyword() is now able to handle all combinations out
of const|final|override
2015-05-17 13:02:13 +02:00
PKEuS b946b74e09 Fixed crash #6686 2015-05-13 13:02:33 +02:00
PKEuS 4f00189ee1 Fixed crash #6684 2015-05-12 14:00:43 +02:00
PKEuS 1b6e4589da Implemented array size calculation for n-dimensional arrays with arbitrary dereferencing (#6657) 2015-05-11 17:30:11 +02:00
PKEuS 33277c6110 Fixed false positive #6679, fixed unit test for #6663. 2015-05-11 13:10:11 +02:00
PKEuS d5302953c7 Merge pull request #594 from simartin/ticket_6680
Ticket #6680: Members can be initialized by operator>>.
2015-05-10 22:53:26 +02:00
PKEuS 8bbf8f1b50 Merge pull request #593 from simartin/ticket_6675
Ticket #6675: Fixed pattern detecting C++ 11 delegated constructors.
2015-05-10 22:50:49 +02:00
PKEuS f8d8856d09 Merge pull request #592 from simartin/ticket_6666
Ticket #6666: Don't crash upon garbage code in CheckLeakAutoVar::checkScope
2015-05-10 22:49:25 +02:00
Simon Martin da302b3912 Ticket #6680: Members can be initialized by operator>>. 2015-05-10 14:27:15 +02:00
PKEuS 77c5381612 Support C++14 [[deprecated]] 2015-05-10 12:36:28 +02:00
Alexander Mai 8fa7b13a18 #6659 heap user after free: kernel: sm750_accel.c. Add testcase. 2015-05-10 11:37:23 +02:00
Simon Martin 27e88fdc47 Ticket #6666: Don't crash upon garbage code in CheckLeakAutoVar::checkScope. 2015-05-10 11:35:33 +02:00
Simon Martin 25aff001e0 Ticket #6675: Fixed pattern detecting C++ 11 delegated constructors. 2015-05-10 11:27:47 +02:00
PKEuS 22fbc18fb7 Fixed false positive for *a++ in for-loop condition
Moved unit test to testgarbage.cpp
2015-05-07 20:34:57 +02:00
Alexander Mai 1c5e9e47c5 #6671 false positive: incorrect sizeofwithsilentarraypointer with reference to array. 2015-05-06 07:38:26 +02:00
Daniel Marjamäki baa1ae079d New check: negative size in array declaration. Ticket #1760 2015-05-03 15:00:47 +02:00
Daniel Marjamäki e837bad01d Fixed false positive in new stringLiteralWrite checker 2015-05-03 12:34:27 +02:00
Daniel Marjamäki 666377da1c Updated error message for stringLiteralWrite 2015-05-03 10:48:28 +02:00
Daniel Marjamäki 9d31afb663 Fixed #1748 (Undefined Behavior: Modification of string literal) 2015-05-03 10:44:40 +02:00
Daniel Marjamäki ca1f19b6d4 Fixed #6378 (valueFlowForward: decrement not handled) 2015-05-02 17:30:09 +02:00
Daniel Marjamäki aab1d83075 Updated error message. write variable name. 2015-05-02 16:55:17 +02:00
PKEuS 4cbbd44d49 Fixed false positive #6663: Better support for loops in CheckStl::readingEmptyStlContainer() 2015-05-02 14:09:48 +02:00
Daniel Marjamäki dc54676289 Reverted my changes I made by mistake in previous commit 2015-05-02 14:01:31 +02:00
Daniel Marjamäki 28985d1baa manual: Document the cwe attribute 2015-05-02 11:43:42 +02:00
Frank Zingsheim 9bea7bec92 Fixed #6659 (heap user after free: kernel: sm750_accel.c) 2015-05-01 18:28:00 +02:00
Frank Zingsheim 4ceed51bfb Fixed #6607 (Crash triggered by TemplateSimplifier::useDefaultArgumentValues) 2015-05-01 17:13:02 +02:00
orbitcowboy 785df82513 #6660: Fixed crash in Tokenize::SetVarid(). 2015-04-29 09:18:54 +02:00
Daniel Marjamäki 88f59ad7e8 Partial fix for #6656 (Allow that CWE is mapped for error message) 2015-04-25 17:48:11 +02:00
Daniel Marjamäki ad6db2ba81 Reverted 105de8e917, new checker had FPs that need to be fixed. 2015-04-25 15:35:31 +02:00
Daniel Marjamäki bdc024bd7c Fixed 6634 (false positive: dereferencing null pointer in a sizeof operation) 2015-04-20 13:46:02 +02:00
PKEuS ac867b4220 Handle pointers to const member functions in Tokenizer::simplifyFunctionPointers() (#6603) 2015-04-13 21:21:57 +02:00
PKEuS c4ceb97cea Fixed #6629: Don't simplify sinf(0) if sinf is a variable 2015-04-13 20:37:07 +02:00
PKEuS 708a379fd2 Refactorized simplification of sizeof without parantheses:
- Moved sizeofAddParentheses() behind combineOperators()
- Improved sizeofAddParentheses() to handle all code from unit tests at simplifyTokenList1()
- Removed simplification from simplifyTokenList2()
2015-04-13 20:18:21 +02:00
PKEuS 4c40664861 Fixed #6639: Calculate sizeof() of multidimensional arrays 2015-04-13 20:18:21 +02:00
PKEuS 19bba94282 Merge pull request #589 from simartin/restore_libcpp_build
Restore build with libc++ and revert PR#228 and PR#562.
2015-04-13 17:12:00 +02:00
PKEuS b6709294a8 Fixed ...... in template instantiations (similar to constconst from #6604) 2015-04-13 17:03:06 +02:00
Simon Martin e5745d7d4a Restore build with libc++ and revert PR#228 and PR#562. 2015-04-12 20:29:49 +02:00
PKEuS c2ccd7d9e4 Simplify _declspec like __declspec 2015-04-11 11:02:52 +02:00
Robert Reif 4ceb24630d Fixed #6568: Scope for template class member function missing in symboldatabase 2015-04-09 21:01:47 +02:00
PKEuS 4e5c5eb238 Fixed #5665: Recognize free() with more than one parameter 2015-04-09 20:50:19 +02:00
Frank Zingsheim d52b031301 Fixed #6638: (varid for loop in for statement) 2015-04-09 19:58:12 +02:00
Frank Zingsheim 648ee95f31 Fixed #6636: (False positive unreadVariable - scope analysis seems to fail to False positive unreadVariable)
Bug was introduced by 1f5265c1bd
2015-04-08 20:30:41 +02:00
Daniel Marjamäki d563bd73f4 Fixed #6583 (False positive uninitvar - exit() ignored?!) 2015-04-08 15:35:04 +02:00
Gustav Palmqvist 105de8e917 #220 uninitialized variable: using variable in ctor before it has been initialized. Implement new check usageBeforeInitialization 2015-04-07 22:01:13 +02:00
Frank Zingsheim 1f5265c1bd Fixed #6253 ([False Positive] Variable not initialized in the constructor) 2015-04-06 19:47:21 +02:00
Alexander Mai bacc5ac1cc Fix false positives ignoredReturnValue about some posix interfaces. Remove redundant strsignal() output from signal handler 2015-04-06 18:16:37 +02:00
Alexander Mai 9876cf2312 #6626 crash: Token::astOperand2() const ( do while ). Fix two segmentation faults on invalid code. 2015-04-06 17:23:48 +02:00
Matthias Krüger 592177200a don't print warning message if --enable=warning is not given.
message was of type:
(warning) Call of pure virtual function 'foo' in constructor.
2015-04-06 13:34:44 +02:00
Robert Reif c02acea5bf Fixed #6614 (false positive: (style) The class 'A' does not have a constructor.) 2015-04-04 11:33:25 +02:00
Matthias Krüger 77e22da7fe testrunner: fix -Wshadow warning.
warning was:

test/testsimplifytemplate.cpp: In member function ‘int TestSimplifyTemplate::templateNamePositionHelper(const char*, unsigned int)’:
test/testsimplifytemplate.cpp:1170:22: warning: declaration of ‘tok’ shadows a member of 'this' [-Wshadow]
         const Token *tok = tokenizer.tokens();
                      ^
2015-04-04 01:15:56 +02:00
Daniel Marjamäki aacd9b9f6b Fixed #6586 (Tokenizer: '>>' is wrongly tokenized as '> >' - if (n1 < len>>1)) 2015-04-03 20:25:49 +02:00
PKEuS 72b4809da0 Moved simplification of operator names before template and parentheses simplifications (#6576) 2015-04-01 13:47:36 +02:00
PKEuS 0d37c4df04 Fixed three unique crashs on garbage code (#6613).
Removed redundant copy of string in templatesimplifier.cpp
2015-04-01 12:43:24 +02:00
PKEuS 04a3196a32 Merge pull request #576 from Dmitry-Me/anyParameterType
Constructor parameter type need not be a number
2015-04-01 11:29:44 +02:00
orbitcowboy dde34bb88c #6135: Added test case to testgarbage in order to ensure that this issue does not appear again. 2015-03-30 15:33:24 +02:00
Dmitry-Me 712b101862 Test simplification of "delete a, b, c" 2015-03-27 17:49:35 +03:00
Dmitry-Me e8f0abf259 Proper simplify delete a,b 2015-03-25 16:54:23 +03:00
Dmitry-Me d735918a8a Constructor parameter type need not be a number 2015-03-25 14:56:45 +03:00
Dmitry-Me 9a1b543c07 Tokenizer: Add testcase for 'delete a, a=0;' 2015-03-24 07:59:17 +01:00
PKEuS 19f770e41b Fixed #6604 - don't create template instanciations with "const const const const..." patterns. 2015-03-22 11:20:47 +01:00
amai2012 a9b7299dc3 Merge pull request #566 from simartin/ticket_6587
Ticket #6587: Do not consider template expressions in decltype as instantiations
2015-03-21 18:13:46 +01:00
Simon Martin ec1eebf585 Ticket #6587: Never consider a template parameter's default value as an instantiation. 2015-03-21 16:30:00 +01:00
Alexander Mai 42d9afe7de posix.cfg add more interfaces from stdlib.h. run astyle 2015-03-21 12:26:07 +01:00
Dmitry-Me 818346622c More tests for checking negative pointers 2015-03-19 16:46:00 +03:00
Jakub Melka a49efb13f6 Added auto_ptr checking for malloc 2015-03-19 06:41:54 +01:00
Alexander Mai cb6ed95ed3 posix.cfg: add more interfaces. Remove include from test which is missing on travis 2015-03-15 13:28:16 +01:00
Alexander Mai 3a690fd18e posix.cfg: fix false positive and add more interfaces 2015-03-15 12:56:24 +01:00
PKEuS 42673255ed Refactorized testrunner: Create std::string only where necessary 2015-03-15 12:36:40 +01:00
PKEuS 0d127f15a5 Fixed grammar mistake; fixed two VS2013 code analysis messages; removed redundant Token::Match call 2015-03-15 10:06:56 +01:00
Daniel Marjamäki a200e5b32f Merge pull request #551 from simartin/ticket_4335
Ticket #4335: Properly detect and handle template class specialisations
2015-03-15 07:59:11 +01:00
Simon Martin 520314f9a0 Ticket #4335: Properly detect and handle template class specializations. 2015-03-15 00:28:33 +01:00
Alexander Mai 5b8d93efda posix.cfg: Fix false positives and add poll() 2015-03-14 23:31:56 +01:00
amai2012 40769c9a59 Merge pull request #549 from simartin/ticket_6437
Ticket #6347: Fix use after delete when simplifying template instantiations
2015-03-14 22:30:58 +01:00
PKEuS 4ec2df92b7 Refactorized testsimplifytypedef.cpp, fixed broken unit test simplifyTypedef99 2015-03-14 20:43:15 +01:00
Daniel Marjamäki 0efa113b6e fixed test/cfg/posix.c code 2015-03-14 19:40:13 +01:00
Daniel Marjamäki fd6bd97972 Fixed #6495 (Improve check: uninitialized variable, 3rd function argument) 2015-03-14 19:23:33 +01:00
Simon Martin 4c916641cc Ticket #6347: Fix use after delete when simplifying template instantiations. 2015-03-14 18:46:17 +01:00
Daniel Marjamäki 42c4aa1c49 Fixed #4880 (false negative: uninitialized variable, handling of conditional noreturn scopes) 2015-03-14 17:59:11 +01:00
Alexander Mai d52e3c8eb7 Fix missing suppression in test/cfg/posix.c 2015-03-13 18:29:46 +01:00
PKEuS 6e0302fd56 Refactorized CheckBool::checkComparisonOfBoolWithInt(), CheckBool::checkComparisonOfBoolExpressionWithInt() and CheckBool::pointerArithBool():
- Support more patterns in CheckBool::pointerArithBool()
- Use AST and SymbolDatabase
- Removed redundant skipping over template arguments
2015-03-12 20:07:48 +01:00
PKEuS 7f2b6881b3 Refactorization: Avoid including path.h in (almost) every source file (via library.h) 2015-03-11 22:54:45 +01:00
PKEuS bc5132e0ac Refactorization: Moved declaration of errout, ... to testsuite.h, uniformized style 2015-03-11 22:54:43 +01:00
PKEuS cd84d78e92 Ran AStyle, fixed VS2015 warning in symboldatabase.h 2015-03-11 20:26:53 +01:00
PKEuS 9bafa3bf25 Fixed false positive #6575 2015-03-11 20:25:27 +01:00
Alexander Mai c8bee3e1a6 Merge branch 'master' of https://github.com/danmar/cppcheck 2015-03-11 18:59:56 +01:00
Alexander Mai 6bd7dd771d Add some functions from <time.h> to posix.cfg (see #6577) 2015-03-11 18:59:34 +01:00
amai2012 ed097d4c4f Merge pull request #540 from JakubMelka/ticket_695
Ticket #695: new style check : explicit declaration of ctor
2015-03-11 12:15:22 +01:00
Jakub Melka e1e1dbfe97 Ticket #695: Fixed VS 2010 issue, switched to "style" severity, changed error messages and updated unit tests 2015-03-10 19:35:12 +01:00
Martin Ettl 0839ce5a96 posix.cfg: Removed duplicate utime() function introduced by 841a27c19d. Added more test cases for uninitvar for utime() and utimes(). 2015-03-08 21:38:43 +01:00
amai2012 3d9c2b4d97 Merge pull request #542 from MegaManSec/master
Add utime function to posix.cfg
2015-03-08 19:55:41 +01:00
Jakub Melka b7d92a4fc7 Fixed warnings of CppCheck's own code (caused by new check #695) 2015-03-08 18:18:09 +01:00
Daniel Marjamäki 780a530e0e test/cfg/windows.cpp: Added test for #6571, Library::isNotLibraryFunction() should return true for methods. 2015-03-08 16:23:54 +01:00
Alexander Mai 34a61e0883 Additions to windows.cfg. Fix compiler warning in test/cfg/posix.c 2015-03-08 15:21:50 +01:00
Joshua Rogers 841a27c19d Add utime function to posix.cfg 2015-03-09 00:43:25 +11:00
Alexander Mai 95411414c4 #6569 Add strcasestr function to gnu.cfg 2015-03-08 14:04:09 +01:00
Simon Martin 1d973b882d Ticket #6567: Handle member functions in TemplateSimplifier::getTemplateNamePosition. 2015-03-07 21:52:12 +01:00
Jakub Melka 2af9212b16 Ticket #695: new style check : explicit declaration of ctor 2015-03-07 20:07:54 +01:00
Simon Martin 9c6a625f91 Ticket #6181: Normalize '>>' into '> >' when it's closing a C++11 template parameter list. 2015-03-07 11:06:04 +01:00
Daniel Marjamäki f705cdce72 Fixed #6556 (Tokenizer::simplifyVarDecl: doesn't simplify template variables properly) 2015-03-06 17:30:20 +01:00
Alexander Mai 21ab4413aa Fix compiler warnings 2015-03-05 20:49:42 +01:00
Alexander Mai cbc8c4f57d Fix unsuppressed warning in checkcfg target 2015-03-05 06:57:30 +01:00
Alexander Mai b5f0eec44a #6559 Regression/ false positive: Return value of allocation function OpenFile is not stored. Add required definitions to windows.cfg, include afx_msg. Add test file test/cfg/windows.cpp to check windows configuration. Fix for gnu.cfg. FileLister now features a non-recursive mode. 2015-03-05 06:48:44 +01:00
Daniel Marjamäki 6646a896f9 Fixed #6446 (FP zerodivcond on double arithmetics) 2015-03-03 15:50:31 +01:00
Daniel Marjamäki 925f077b8a Fixed #6110 (TemplateSimplifier::simplifyCalculations: wrong simplification of 'if (VG_(strlen)(s)>=3)') 2015-03-02 16:27:00 +01:00
Daniel Marjamäki 86cdc8e7a6 Fixed #6540 (Tokenizer::simplifyKnownVariables: Missing varid for simplification in conditional code) 2015-03-02 06:18:00 +01:00
Alexander Mai 49099e78ff Add more string conversion functions to library files 2015-03-01 20:18:26 +01:00
Daniel Marjamäki 830f656a25 Library: variables are not library functions (variable declarations can look like function calls) 2015-03-01 11:46:43 +01:00
Daniel Marjamäki 449b88aa0c Fixed #6547 (Regression - unknown macro causes analysis error) 2015-02-28 11:09:39 +01:00
Daniel Marjamäki 3add466035 Add isFunctionHead() in Tokenizer 2015-02-27 18:29:34 +01:00
Daniel Marjamäki acbf48c7fa Fixed #6548 (Tokenizer: Wrong varid set after function which is throw()) 2015-02-26 16:31:42 +01:00
Alexander Mai cea71f8625 Fix false positive ignoredReturnValue about strtol 2015-02-25 22:03:10 +01:00
Daniel Marjamäki d1892786b8 ValueFlow: Improved when using '[' on arrays and strings 2015-02-24 15:57:39 +01:00
Alexander Mai 8427398d9d #6539 Segmentation fault in Tokenizer::duplicateTypedef. Avoid crash on garbage code 2015-02-24 11:15:23 +01:00
Robert Reif 130ffc5752 Fixed #6538 (Symboldatabase: improve isFunction) 2015-02-24 06:11:31 +01:00
Alexander Mai b9cc5b5c6b #6543 crash: CheckCondition::checkBadBitmaskCheck ; wine dlls/gdi32/dibdrv/primitives.c. Run astyle. 2015-02-23 22:06:55 +01:00
Daniel Marjamäki fb5cc6fded Fixed #5905 (isSameExpression: comparisons 'a<b' and 'a>b' are same) 2015-02-23 16:38:55 +01:00
Daniel Marjamäki 830d1eb3fd Revert "Fixed #6538 (Symboldatabase: improve isFunction)"
This reverts commit d7ef89bbe6.

There was crashes in a Travis job.
2015-02-23 08:07:19 +01:00
Robert Reif d7ef89bbe6 Fixed #6538 (Symboldatabase: improve isFunction) 2015-02-23 06:49:50 +01:00
Alexander Mai fd7d29447d std.cfg: snprintf(NULL,0,) is legal. Fix some testcases in test/cfg as well 2015-02-22 14:25:25 +01:00
Daniel Marjamäki d4fa656e58 Refactor and improve Tokenizer::sizeofAddParentheses 2015-02-22 13:38:06 +01:00
PKEuS bedc935ab0 New check: Warn about constant expression if ( unknown | non_null_constant) (#6519) 2015-02-22 13:09:39 +01:00
PKEuS 5f31242ee8 CheckOther::checkRedundantAssignment(): Bail out on inline assembly (#6525) 2015-02-22 12:03:53 +01:00
PKEuS f04070940e Fixed setVarId on ternary operator in initialization list 2015-02-22 11:57:46 +01:00
Alexander Mai 6bfeb71dd2 Add more interfaces to gnu and posix libraries 2015-02-21 11:08:58 +01:00
Alexander Mai 6d9eb6199d posix.cfg: add support for sched.h and 1 bugfix 2015-02-20 20:50:20 +01:00
PKEuS 6227abac73 Fixed GCC (testsymboldatabase.cpp) and MSVC (checkother.cpp) warnings 2015-02-18 21:19:36 +01:00
Daniel Marjamäki e251a99817 AST: fix handling of sizeof. ticket #6515 2015-02-18 19:56:13 +01:00
Daniel Marjamäki fd4d4bba33 test/cfg/posix.c: fix tests 2015-02-17 19:58:07 +01:00
Daniel Marjamäki 6363c1359d TestUninitVar: moved out posix.cfg testing 2015-02-17 18:16:29 +01:00
Daniel Marjamäki d900148e6b TestUninitVar: Fix compile error 2015-02-17 18:09:23 +01:00
Daniel Marjamäki e5c098c7de TestUninitVar: move out posix.cfg testing 2015-02-17 18:08:19 +01:00
Daniel Marjamäki e9663873e5 TestOther: refactoring library testing 2015-02-17 15:52:45 +01:00
Alexander Mai 0a6babea74 #6181 Drop redundantGetAndSetUserId. Ensure (style-) warnings are issued if setuid()/getuid() and some related functions are ignored. Move strdupa()/strndupa() from posix.cfg to gnu.cfg 2015-02-16 22:19:51 +01:00
Alexander Mai 115cefc8fb #6181 Drop redundantGetAndSetUserId. Ensure (style-) warnings are issued if setuid()/getuid() and some related functions are ignored. Move strdupa()/strndupa() from posix.cfg to gnu.cfg 2015-02-16 22:06:08 +01:00
Daniel Marjamäki 42b40b0c85 Merge pull request #525 from Dmitry-Me/moreDoubleSlashCases
Handles double slashes close to end of path, more tests
2015-02-16 18:02:51 +01:00
Daniel Marjamäki d83f07dddd TestOther: moved posix.cfg testing 2015-02-16 16:25:27 +01:00
Dmitry-Me f0e0201c2d Better handle double slashes, more tests 2015-02-16 13:11:13 +03:00
Dmitry-Me 764e7ff79b Deduplicate a multislash test 2015-02-16 10:19:08 +03:00
Daniel Marjamäki fe8ba51f03 TestMemLeak: moved posix.cfg tests 2015-02-15 18:11:09 +01:00
Daniel Marjamäki adedb5a888 TestMemLeakInFunction: Moved test to cfg test 2015-02-15 15:56:05 +01:00
Daniel Marjamäki cc0f61376a more cleanup of std.cfg testing in TestBufferOverrun 2015-02-14 18:55:54 +01:00
Daniel Marjamäki e510902d58 TestBufferOverrun cleanup some more std.cfg testing 2015-02-14 17:30:08 +01:00
Daniel Marjamäki 86cf372309 Merge pull request #522 from simartin/revert_6181_add_6354_6414
Revert fix for #6181, that caused #6354 and #6414.
2015-02-14 16:59:27 +01:00
Daniel Marjamäki 360ec9d853 updated TestBufferOverrun test case. Since checker doesn't use library dont load std.cfg. 2015-02-14 16:44:08 +01:00
Daniel Marjamäki 0c0d62171e removed duplicate testcase. See testcase for #836 2015-02-14 16:41:51 +01:00
Daniel Marjamäki a57d5d7eda moved testcases 2015-02-14 16:37:48 +01:00
Daniel Marjamäki e01b30345e move testcases in TestBufferOverrun 2015-02-14 16:29:05 +01:00
Daniel Marjamäki 166db40af2 Fix TestBufferOverrun test case, it was wrongly written. 2015-02-14 15:51:13 +01:00
Daniel Marjamäki c43d537726 renamed TestBufferOverrun test method to same name as CheckBufferOverrun method that is tested 2015-02-14 15:49:17 +01:00
Daniel Marjamäki 2b7c7134e1 TestBufferOverrun: move memset test 2015-02-14 15:46:00 +01:00
Simon Martin c4c46be972 Revert fix for #6181, that caused #6354 and #6414. 2015-02-14 12:29:05 +01:00
Luis Díaz Más 22424ba54a Add CMake files 2015-02-13 19:00:14 +01:00
Dmitry-Me 7961bba0da Path: better handling of UNC paths 2015-02-13 16:32:45 +01:00
Daniel Marjamäki e0d90c00be TestBufferOverrun: Cleanup testcases for memory functions 2015-02-13 16:16:59 +01:00
Daniel Marjamäki 2d21eb07ba Cleaned up snprintf hardcoding in CheckBufferOverrun 2015-02-13 06:44:38 +01:00
Daniel Marjamäki a6cfd15bde refactoring TestBufferOverrun 2015-02-12 17:36:22 +01:00
Daniel Marjamäki 9aad4fa8ca CheckBufferOverrun: Remove hardcoding for sprintf and rely on cfg configuration instead 2015-02-12 17:29:36 +01:00
Daniel Marjamäki b43c2de63a refactor cfg testing in TestClass 2015-02-11 06:29:33 +01:00
Daniel Marjamäki d9deabe2ce TestBufferOverrun: clean up 2015-02-10 17:29:36 +01:00
Daniel Marjamäki 53718047f1 refactoring TestBufferOverrun 2015-02-10 06:49:48 +01:00
Daniel Marjamäki 9aa0420472 TestBufferOverrun: Moved out cfg tests. Created minsize-mul testing in TestBufferOverrun 2015-02-10 06:44:19 +01:00
Daniel Marjamäki ce1d0099cf TestBufferOverrun: Moved out cfg tests. Created minsize-argvalue testing in TestBufferOverrun 2015-02-10 06:35:41 +01:00
Daniel Marjamäki 631536980c TestBufferOverrun: split up strncpy testing, keep checker testing in TestBufferOverrun and move cfg tests to cfg test 2015-02-09 16:20:28 +01:00
Daniel Marjamäki 8a1b8df1ba ValueFlow: Improved handling of alias values in valueFlowForward 2015-02-08 19:20:05 +01:00
Daniel Marjamäki 62a5d88eb0 ValueFlow: Improved handling of strings 2015-02-07 18:14:22 +01:00
Daniel Marjamäki 29db3eb848 Fixed #5980 (ValueFlow: pointer cant be 0 below throw in switch) 2015-02-07 10:45:30 +01:00
Daniel Marjamäki eec938dbad Fixed #6249 (False positive: Incorrect detection of (assignment + comparison) inside for-clause) 2015-02-05 20:17:30 +01:00
PKEuS f1714110d0 Fixed crash if double constants are passed as default arguments (#6494) 2015-02-03 22:12:05 +01:00
Daniel Marjamäki c2b85d1032 Fixed testrunner 2015-02-03 18:35:52 +01:00
orbitcowboy 84e831c21c posix.cfg: Improved support for functions from <unistd.h>. 2015-02-02 17:23:43 +01:00
Dmitry-Me 21fbc30d59 Calling a function using Class::func() syntax should not be simplified 2015-02-02 10:37:10 +03:00
PKEuS 451a277b18 Refactorization: Support function default values in ValueFlow, removed now obsolete CheckNullPointer::nullPointerDefaultArgument().
-> Use valueFlowForward() to parse values passed to functions
-> valueFlowForward(): Set value in first occurrence of a variable in a condition
2015-02-01 15:15:00 +01:00
Daniel Marjamäki 78b711fd7b astyle formatting 2015-02-01 14:50:51 +01:00
PKEuS f78744ac30 Fixed AST generation if expression starts with ternary operator 2015-02-01 14:02:19 +01:00
Daniel Marjamäki d6c94e3828 isOppositeCond: Fixed FN 2015-02-01 13:03:38 +01:00
Daniel Marjamäki d091639080 Fixed #6482 (False positive multiCondition) 2015-02-01 12:58:06 +01:00
PKEuS 58c3fdd063 Fixed crash on garbage code introduced recently, optimized code in valueFlowFunctionReturn. 2015-02-01 12:26:46 +01:00
PKEuS 54b6b8e571 Fixed false positive #6481 2015-01-31 20:34:06 +01:00
PKEuS 21cb0cfd60 Take simplifyIfNotNull and simplifyIfNot out of simplifyTokenList1 (first step for #6072) 2015-01-31 20:12:02 +01:00
PKEuS 1f97e3001b Fixed calculation of array size (#6487) 2015-01-31 19:06:44 +01:00
PKEuS ae4b86c231 Several improvements to CheckMemoryLeakNoVar::checkForUnusedReturnValue():
- Support user defined functions (solves TODO tests)
- Print message if return value is not stored properly (adapted message text, #6458)
2015-01-31 17:28:03 +01:00
Daniel Marjamäki 73113c67e7 Fixed #6480 (False positive unreachableCode - member function exit called instead of ::exit()) 2015-01-31 16:55:55 +01:00
PKEuS 789665dadf Fixed #6455: Show uninitvar even for const variables 2015-01-31 13:21:22 +01:00
PKEuS 27924d4ae2 Improved detection of array dimensions (#6430) 2015-01-31 13:12:06 +01:00
PKEuS f771a79738 Removed obsolete internal check. The underlying but in Token::Match should be fixed since b4f0869a71 2015-01-31 12:56:54 +01:00
PKEuS b2835051df Refactorization: Renamed Token::Match pattern %var% to %name%, implement new pattern %var% which is true if varId > 0. 2015-01-31 12:32:04 +01:00
PKEuS 33f5d27b53 Fixed varId0 message #6443. 2015-01-31 10:33:32 +01:00
Daniel Marjamäki 57ec1aea91 Library: Don't rely on ast in isNotLibraryFunction since it's used in tokenizer 2015-01-31 10:24:10 +01:00
PKEuS 36841cfa41 Better support for stream operator in CheckAutoVariables::returnReference() (#6423) 2015-01-31 10:12:49 +01:00
PKEuS dcc1362890 SymbolDatabase: Support std::array (fixes #6401) 2015-01-30 21:56:27 +01:00
PKEuS 03e44d4aa0 CheckMemoryLeakInFunction: Don't treat delete as delete operator for C code
Fixed GCC message in checkbufferoverrun.cpp
2015-01-30 20:55:53 +01:00
PKEuS 98e33a189f Enhanced CheckBufferOverrun:
- Fixed bug in library: manual and existing libraries use "size", but library.cpp reads "sizeof" as podtype attribute
- Fixed a couple of bugs in handling unknown size in checkbufferoverrun.cpp, get size from library if available.
2015-01-30 20:27:48 +01:00
PKEuS b69528eb80 Bailout in Token::getValueTokenDeadPointer() if reference is used (#6399) 2015-01-30 19:29:37 +01:00
PKEuS 0d151b45b5 Better support for funciton pointers in checkuninitvar.cpp (#6404) 2015-01-30 19:16:25 +01:00
Daniel Marjamäki 6b20172a36 Moved cfg tests from TestUninitVar 2015-01-30 16:35:17 +01:00
Daniel Marjamäki 355a2d38b3 added missing test/cfg/posix.c file 2015-01-30 07:52:32 +01:00
Daniel Marjamäki 8d2f271921 clean up cfg tests in TestNullPointer 2015-01-30 06:51:03 +01:00
Daniel Marjamäki 9bbad1b622 TestNullPointer: Moved posix.cfg tests 2015-01-30 06:43:40 +01:00
PKEuS 80feb8697d Fixed false positives #6473 and #6469 2015-01-29 21:26:06 +01:00
PKEuS 71379616e7 Fixed false positive #6467 2015-01-29 10:18:21 +01:00
PKEuS 9ada111045 Fixed false positive #6466 2015-01-29 09:50:48 +01:00
Daniel Marjamäki 250a082e46 Fix travis 2015-01-29 06:23:41 +01:00
Daniel Marjamäki 0949baac9b TestNullPointer: moved out std.cfg checking 2015-01-29 06:07:48 +01:00
PKEuS 3342ea4c54 CheckInternal: Complain about Token::Match pattern if %or% or %oror% is the only "complex" pattern 2015-01-28 19:48:36 +01:00
PKEuS 0488f45a5f Removed standalone check CheckOther::checkDoubleFree(), integrated (most of) the functionality into CheckLeakAutoVar. Added support for new/delete to checkLeakAutoVar. 2015-01-28 17:38:43 +01:00
Daniel Marjamäki 70a38b1da6 TestNullPointer: Moved some std.cfg tests to the cfg testing 2015-01-28 16:22:45 +01:00
PKEuS 5c56e63996 Fixed false positive #6452: Handle member functions in CheckIO::checkFileUsage() 2015-01-27 21:52:52 +01:00
PKEuS e82d2b3c8d Fixed false positive #6453: Skip over inner class if checking outer function 2015-01-27 21:21:17 +01:00
Matthias Krüger e56671101e tests: add a script which runs test/cfg tests.
add new make target (checkcfg) which builds cppcheck and executes the script
       make travis run checkcfg
2015-01-27 19:46:52 +01:00
Daniel Marjamäki 01601b58dd test: move cfg/test to test/cfg 2015-01-27 18:23:28 +01:00
Daniel Marjamäki 3285f85ebf Fixed #6460 (Library: better function/type matching) 2015-01-27 17:55:18 +01:00
PKEuS bfa16ec258 Set /LARGEADDRESSAWARE flag for Win32 builds
Idea from Kosta-Github (pull-request #501)
2015-01-27 15:43:40 +01:00
orbitcowboy 180d7389a0 Fixed #6457: Added missing podtype defintions to posix.cfg. 2015-01-26 08:35:22 +01:00
Daniel Marjamäki d8af472393 Merge pull request #500 from Dmitry-Me/resolve1265723
Resolve CID 1265723
2015-01-24 11:24:57 +01:00
Dmitry-Me c79bfdce2c CheckClass: Better checking of what operator= returns 2015-01-24 11:18:33 +01:00
Martin Ettl 0ef43c05dc Removed accidently added ';' [ci skip] 2015-01-23 17:31:21 +01:00
Martin Ettl ac551807b6 posix.cfg: Added support for blkcnt_t datatype. 2015-01-23 17:29:18 +01:00
PKEuS ee046af20c Fixed false positives #6450 and #6451 2015-01-23 19:38:39 +01:00
Dmitry-Me 6c248dd1ac Resolve CID 1265723 2015-01-23 17:53:39 +03:00
PKEuS da35a74589 Fixed false negative: Passing uninitialized variable to stream (#4673) 2015-01-22 22:56:41 +01:00
PKEuS da5a04f071 Fixed recently introduced FP in checkuninitvar.cpp if address of variable is passed to a function 2015-01-22 21:22:02 +01:00
PKEuS f4d11a4209 Fixed false negatives on try and non-executable scopes in checkUninitVar, removed unnecessary function parameters 2015-01-22 13:55:19 +01:00
PKEuS bdae9064ea Support throw in checkleakautovar.cpp 2015-01-22 11:12:26 +01:00
orbitcowboy a7ded1e19f Merge branch 'master' of https://github.com/danmar/cppcheck 2015-01-22 06:53:23 +01:00
PKEuS 7364cc8040 Fixed false positive in fityk: operator new calling constructor 2015-01-22 10:37:31 +01:00
orbitcowboy 2cfb286558 Added test case for #5412. 2015-01-22 06:53:11 +01:00
orbitcowboy dd241501f3 Added test case for #6341. 2015-01-22 06:37:09 +01:00
PKEuS c3e47f7eaa Fixed false positive in CheckUninitVar and internal message 2015-01-21 22:26:44 +01:00
PKEuS 94c3c45350 CheckUninitVar: Use function information from library, bailout for '?' 2015-01-21 22:02:25 +01:00
PKEuS ecb9d87e42 Fixed false positive: Bailout in checkuninitvar.cpp if setjmp is found 2015-01-21 16:49:34 +01:00
PKEuS 8f1e44f1b7 Stricter false positive testing: Perform old and new check on uninitialized variables false positives tests (with a few exceptions for FP in old checker that don't exist in the new one) 2015-01-21 16:45:15 +01:00
PKEuS 81dc96f373 Refactorization: Rearranged code in testuninitvar.cpp, avoid copying of settings 2015-01-21 16:26:27 +01:00
PKEuS 5334aaa25f Refactorization:
- Removed a few unit tests of old uninitialized variable checking expecting other results than same test for new checking
- A few tweaks to new uninitvar checking to improve results when run on tests for old check
- switched some (TODO) tests to new check if the TODO is fixed
2015-01-21 16:17:58 +01:00
PKEuS 346532d312 Fixed false positives in CheckUninitVar::checkStruct() 2015-01-21 13:11:48 +01:00
PKEuS 54de731cac Refactorized CheckUninitVar::checkScope(), fixed false negative 2015-01-21 12:20:03 +01:00
PKEuS 3274a00b82 Moved some more tests to testgarbage.cpp 2015-01-21 10:04:46 +01:00
Martin Ettl fab34a8382 Fixed a few inconclusive warnings regarding const-correctness in cppcheck code base. 2015-01-20 16:50:16 +01:00
Thomas Jarosch ec21134817 Fix false negatives for local suppressions
Introduce a new bool setting jointSuppressionReport
that will be set by the analyseWholeProgram() code path.

When the flag is enabled, unmatched suppressions are
collected after running the final whole program analysis
to prevent false positives for the unusedFunction check.

The check functions in the unit test
for single / multi file suppressions were unified.
2015-01-20 18:47:30 +01:00
orbitcowboy bf1565bd34 Fixed inconclusive warnings regarding const correctness. 2015-01-20 09:09:16 +01:00
orbitcowboy ff415871bd Fixed some const correctness issues in the test suite. 2015-01-19 18:00:05 +01:00
Robert Reif 56dc0b02ef Fixed #6432 (cppcheck fails to detect ctor - partial template specialization) 2015-01-19 16:15:11 +01:00
Robert Reif 3b8540fdc0 Fixed #6424 (false negative: Use of 'class Ns::C' silence Cppcheck) 2015-01-19 06:38:54 +01:00
Matthias Krüger 01dba4062f testrunner: add testcases for fixed crashes in Template code: #5950 #6034 #6108 #6117 #6225 2015-01-18 14:13:59 +01:00
Thomas Jarosch 58cb6cc116 Add new "style" check to catch redundant pointer operations
Doing "&*some_ptr_var" is redundant and might be the remainder
of a refactoring. Warnings for expanded macros are excluded though:
They are often used with and without pointers and
do something like this: "func(&(*macroarg))".

The new check is fully AST based and was given
strong false positive testing on a large code base.
2015-01-18 00:34:07 +01:00
Thomas Jarosch e6f042dadc Multi process check: Sanitize error messages for illegal characters
before sending them across the pipe.

The deserializer died while deserializing
a string containing a binary zero.
2015-01-17 16:12:00 +01:00
Thomas Jarosch 36bcefc39d Don't crash when the deserialization of an error message fails
Found while scanning the code of an
open source project related to onions.
2015-01-17 16:09:58 +01:00
Robert Reif 193645318b Tokenizer: Remove macro in class declaration like 'class DLLEXPORT Fred {}' to be able to handle the class better later 2015-01-17 07:42:49 +01:00
Thomas Jarosch 08985bf68a Throw exception in getVariableFromVarId() if called with out_of_range varId
That way we have a chance to catch code bugs at all.
2015-01-15 18:52:11 +01:00
Thomas Jarosch cf64fd3dad Add more complex variation of the #6406 unit test
This is a false negative right now.
2015-01-15 14:45:10 +01:00
Thomas Jarosch 0286abfb45 Add unit test for #6406 2015-01-14 23:05:33 +01:00
Thomas Jarosch 1cc85bfce3 Add bounds check to getVariableFromVarId()
While poking around the memory leak check,
I managed to trigger an out-of-bounds access
in the symbol database.

Fix it by sanity checking the variable id
passed to getVariableFromVarId().
2015-01-14 23:00:38 +01:00
orbitcowboy a26aa1cd16 testmathlib: Fixed typo in comment, no functional changes. 2015-01-14 00:51:50 +01:00
Robert Reif 68bb197bcb Destructor detected as constructor resulting in false variable not initialized warnings 2015-01-12 06:11:22 +01:00
Martin Ettl 910af75e3a testmemleak: Added missing () in test case. 2015-01-11 10:27:37 +01:00
Martin Ettl 37c89a6b70 Fixed #6311: Add support for GNU get_current_dir_name(). 2015-01-11 10:12:39 +01:00
Aneesh Azhakesan S fe5d2fc245 Fixed #5906 (false negative: 'else if' expression is always false (use library to determine if function is pure)) 2015-01-10 12:21:55 +01:00
PKEuS 7452613479 Refactorization:
- Merged messages exceptThrowInNoexecptFunction, exceptThrowInNoThrowFunction, exceptThrowInAttributeNoThrowFunction and exceptThrowInDeclspecNoThrowFunction into a single message.
- Merged Token::fIsDeclspecNothrow into Token::fIsAttributeNothrow
2015-01-09 20:18:09 +01:00
Daniel Marjamäki 6a8293a8b7 Library: More strict matching of functions 2015-01-08 19:31:41 +01:00
Robert Reif ba1c24ee65 Fixed #6422 (symbol database: put function flags into a single flag variable) 2015-01-08 05:45:31 +01:00
Matthias Krüger 0259b4a672 testgarbage: add code example from #6361 to testrunner 2015-01-07 16:44:46 +01:00
Thomas Jarosch 2cb2161c5d Fix unmatched local suppression error message for "unusedFunction" (#6228)
This fixes a regression from commit
e35329aba3
(fix for #4946)
2015-01-07 15:40:12 +01:00
orbitcowboy 4c2e42a52c alwaysTrueFalseStringCompare: Added more test cases to ensure no FP appears. 2015-01-07 08:38:39 +01:00
orbitcowboy c07b07b8fe Fixed #6415 - FP stringCompare memcmp(ptr, ptr+offset, length). 2015-01-07 08:30:05 +01:00
Daniel Marjamäki a87fb96eaf Uninitialized variables: fix fp when 'a=((b)=c)' is used 2015-01-06 18:03:40 +01:00
Daniel Marjamäki eee9183406 ValueFlow: improved handling of conditional noreturn scope in valueFlowForward 2015-01-06 14:12:35 +01:00
Daniel Marjamäki f2e5fbd30d Uninitialized variables: bailout when ({..}) are used to avoid fp. it can be handled better. 2015-01-06 07:44:04 +01:00
Daniel Marjamäki 1f698ca493 ValueFlow: Fixed valueFlowForward, when condition is false and else-block returns dont set values below the else-code 2015-01-05 16:39:47 +01:00
Daniel Marjamäki fe8d04e840 CheckNullPointer: Fix FP when x is NULL and address is calculated with expression '&x->y.z[0]' 2015-01-05 14:54:24 +01:00
Daniel Marjamäki c5467766e2 ValueFlow: Fix for valueflow analysis after for loop 2015-01-05 14:00:12 +01:00
Daniel Marjamäki a80101f277 CheckMemoryLeak: Fix FP for allocation functions that register memory before returning it 2015-01-05 13:23:38 +01:00
Daniel Marjamäki fb685f096a CheckOther:checkNegativeBitwiseShift: Fix FP when shift is protected by ?: 2015-01-05 10:01:04 +01:00
Daniel Marjamäki d1927e3492 Removed Tokenizer::simplifyStructInit simplification. 2015-01-04 16:48:52 +01:00
Daniel Marjamäki 7bafbfbd6e Tokenizer: cleanup simplification of '!= 0' to avoid FP in 'x[(y & 0x80) != 0]' (linux) 2015-01-04 13:50:54 +01:00
PKEuS e06a4cdf00 Refactorized CheckStl::if_find():
- Added support for find()-like functions to Library::Container
- Use <container> information from library
- Fixed false positive #6402
2015-01-04 12:43:50 +01:00