Commit Graph

11313 Commits

Author SHA1 Message Date
Paul Fultz II 130d1abbce
Fix 10210: FN: nullPointerRedundantCheck regression in member function (#3512) 2021-10-15 10:57:40 +02:00
Paul Fultz II f1f86db0da
Fix 10544: FP knownConditionTrueFalse with loop after check (#3508) 2021-10-14 16:47:15 +02:00
Paul Fultz II 6b9ef1fc58
Propagate symbolic values for identity operators (#3497) 2021-10-14 16:46:36 +02:00
orbitcowboy f09b4139fe Ticket #8407: Added regression test 2021-10-12 09:42:18 +02:00
orbitcowboy c3af708a55 Ticket #8209: Added regression test 2021-10-12 08:25:08 +02:00
chrchr-github c4c12df372
Fix escape sequences in test cases (#3499) 2021-10-11 19:16:51 +02:00
Paul Fultz II 52e4bec50a
Fix 10537: FN: knownConditionTrueFalse (std::string::c_str() never returns nullptr) (#3498) 2021-10-11 19:16:12 +02:00
Paul Fultz II 5e9bc48d26
Evaluate symbolic values (#3495) 2021-10-11 19:10:37 +02:00
Daniel Marjamäki 6bd5f79451 Revert "Fix 8629: false negative: (style) Condition '...' is always true (#3492)"
This reverts commit b9be38aaec.
2021-10-10 21:21:21 +02:00
Paul Fultz II b9be38aaec
Fix 8629: false negative: (style) Condition '...' is always true (#3492) 2021-10-09 16:20:38 +02:00
Paul Fultz II bc90ae889d
Fix 10543: FP knownConditionTrueFalse with static variable (#3491) 2021-10-09 16:20:04 +02:00
Paul Fultz II a1e0ef9b38
Refactor: Use interval analysis for symbolic values for inferCondtion (#3488) 2021-10-09 16:19:06 +02:00
orbitcowboy 098c0c44fd Ticket #7884: added regression test 2021-10-08 23:14:16 +02:00
Paul Fultz II 25eb0ab5bc
Find dangling pointers to unique_ptr (#3486) 2021-10-06 08:46:25 +02:00
Paul Fultz II 3cb252bd99
Fix 9873: False negative: null pointer when checking raw pointer (#3485) 2021-10-06 08:39:58 +02:00
chrchr-github f3e1f0d41b
Fix #10238: char* confused with char (#3484) 2021-10-05 18:04:48 +02:00
Paul Fultz II 9b6c7007d2
Fix 9870: False negative: null pointer after duplicate conditions (#3481) 2021-10-05 08:29:23 +02:00
Paul Fultz II 8668d445c7
Add support for string_view (#3480) 2021-10-05 08:28:19 +02:00
Paul Fultz II 71809044bd
Fix 10522: FP: derefInvalidIterator when using emplace with 1 argument (#3482) 2021-10-05 08:23:47 +02:00
KenPatrickLehrmann 61cddabe74
Fix FP due to namespace scope (#3475) 2021-10-04 23:16:16 +02:00
chrchr-github 428144c53c
Fix #10513: vector constructed from pointers (#3473) 2021-10-04 07:55:17 +02:00
Paul Fultz II 2ca2abdf0e
Remove duplicate uninit warnings (#3478) 2021-10-04 07:50:23 +02:00
Daniel Marjamäki eb50d19657 Uninitvar: Moved testcases for avoiding extra warnings from TestValueFlow to TestUninitVar 2021-10-03 22:15:35 +02:00
Daniel Marjamäki 08bc21199e Make ci happy 2021-10-03 22:01:13 +02:00
Daniel Marjamäki b3f9df968b Uninitvar: fixed 'make checkcfg' 2021-10-03 20:32:39 +02:00
Daniel Marjamäki 6a1b7f53ce Fixed CI 2021-10-03 18:47:21 +02:00
Daniel Marjamäki f3d9755e65 UninitVar: too many warnings (pointer dereference) 2021-10-03 18:12:29 +02:00
Daniel Marjamäki 9f2ddf1623 UninitVar: too many warnings (function/cast operand) 2021-10-03 14:47:57 +02:00
Paul Fultz II fc6a791a74
Fix 9766: False positive; suspicious operator is written in declaration (#3476) 2021-10-03 09:59:51 +02:00
chrchr-github 609e20d9d8
ValueFlow: string can be constructed from init list (#3459) 2021-10-02 23:09:49 +02:00
chrchr-github d87c599f1e
Add regression test for #10475 (#3468) 2021-09-27 19:57:41 +02:00
Daniel Marjamäki 08f9de95e2 Update copyright year 2021-09-26 11:34:56 +02:00
Paul Fultz II d1181ad8e2
Fix 10506: Hang: template alias (TemplateSimplfier) (#3466) 2021-09-25 11:56:39 +02:00
Paul Fultz II 5c3b69fe96
Fix 10496: crash: endless recursion (symbolDatabaseCreateExprId => isSameExpr => isSameExpr ...) (#3467) 2021-09-25 11:55:49 +02:00
Daniel Marjamäki 2ee920dc4e Fixed #10495 (False positive: unreadVariable when assigning to reference returned by method) 2021-09-24 07:30:17 +02:00
Paul Fultz II edd435d5f0
Fix 10491: Crash in unusedFunction on valid C++ code (#3465) 2021-09-22 13:03:46 +02:00
Paul Fultz II 255dc0484a
Fix 10331: wrong conditional value after assignment+return (#3461) 2021-09-21 19:25:41 +02:00
orbitcowboy 944c9f0db9 Formatted the code [ci skip] 2021-09-20 11:39:04 +02:00
Paul Fultz II c76e6345c4
Fix FPs in bitwiseOnBoolean (#3455) 2021-09-19 15:20:57 +02:00
Paul Fultz II 9e9a982c6c
Fix 10468: False positive; uninitialized variable. Loop is always executed at least once (#3462) 2021-09-18 22:23:05 +02:00
orbitcowboy 578d3c3a93 Fixed #8723: False negative: Same expression with methods 2021-09-17 19:46:46 +02:00
Daniel Marjamäki 6234e9ddda Fixed #10483 (FP constParameter with array member and memcpy) 2021-09-15 21:25:16 +02:00
chrchr-github 05acc13582
Shadow variables, const, rename function (#3456) 2021-09-15 20:28:58 +02:00
Daniel Marjamäki a9a093e7cc Fixed #10367 (False positive; pointer out of bounds argv-1) 2021-09-15 08:29:10 +02:00
chrchr-github 2d3b8d7003
Add regression test for #10473 (#3457) 2021-09-13 20:46:39 +02:00
Daniel Marjamäki 29bbb4ce14 Fixed #9220 (False positive: Unused function check for template parameter) 2021-09-12 20:27:49 +02:00
Daniel Marjamäki b455f847ba Fixed #10448 (FN compareValueOutOfTypeRangeError with int32_t) 2021-09-12 15:08:14 +02:00
Daniel Marjamäki 6f4ce486a2 Fix FP in constVariable 2021-09-11 20:25:46 +02:00
Paul Fultz II 9ece849d80
Fix 10467: FP mismatchingContainers with array of vectors (#3453) 2021-09-09 20:43:46 +02:00
Paul Fultz II b0b3f7ec2d
Fix 10464: FP: knownConditionTrueFalse (#3452) 2021-09-09 07:49:56 +02:00
Daniel Marjamäki 47f5e5d145 Fixed #10461 (FP missingReturn with empty initializer list) 2021-09-06 21:20:19 +02:00
Paul Fultz II d4174a31ba
Fix 10414: FP 'The address of local variable 'single_value' might be accessed at non-zero index.' (regression) (#3447) 2021-09-06 07:15:46 +02:00
Paul Fultz II 98e22f6162
Fix 10413: FP arrayIndexOutOfBoundsCond after check (#3446) 2021-09-06 07:15:24 +02:00
Daniel Marjamäki 045f21ee48 Fixed #10142 (FP uninitMemberVar with std::map) 2021-09-05 16:35:24 +02:00
Paul Fultz II 0335671b35
Fix 10450: regression, FP : Iterator 'iter' from different container 'l' are used together (#3436) 2021-09-05 07:35:33 +02:00
FabianWolff cd5fa015c1
Fix incorrect warning with `%zi` in format string (#3437) 2021-09-05 07:34:22 +02:00
Paul Fultz II ccb31d8510
Fix 10460: FP knownConditionTrueFalse 'fabs(x)<1/(double)16' is always false (#3445) 2021-09-05 07:10:58 +02:00
Paul Fultz II 928efe77fc
Fix 9765: FP: knownConditionTrueFalse handling of template function with ternary operator (#3443) 2021-09-04 19:55:36 +02:00
Paul Fultz II 28bc717cbe
Fix 10163: false positive: lifetime for r is not same as for seq 'for (auto& r: seq)' (#3442) 2021-09-04 19:53:14 +02:00
Paul Fultz II 82b725e540
Fix FP when using deferred locks (#3441) 2021-09-04 19:06:48 +02:00
Paul Fultz II 9eb5eadd35
Fix 9777: False Positive: Condition is always true with reset/release on unique_ptr (#3440) 2021-09-04 19:06:13 +02:00
Paul Fultz II 8a708e556c
Fix 10456: FP identicalConditionAfterEarlyExit with variable captured by reference (#3439) 2021-09-04 19:05:41 +02:00
Ken-Patrick Lehrmann b3b3b6b2a1
Fix handling of namespace scope with several bodystarts (#3438)
Follow up to 0093452bed.
Give the proper end to getVariableList, since it might not be bodyEnd.

Before that, getVariableList would add the same variables in several
unrelated scopes, and all kind of false positive would follow.

For instance, with the case I added in the unit-tests, I had:
```
../code.cpp:15:18: warning: The struct 'is_A' defines member variable with name 'foo' also defined in its parent struct 'is_A_impl'. [duplInheritedMember]
static const int foo = 8;
                 ^
../code.cpp:15:18: note: Parent variable 'is_A_impl::foo'
static const int foo = 8;
                 ^
../code.cpp:15:18: note: Derived variable 'is_A::foo'
static const int foo = 8;
                 ^
../code.cpp:15:18: style: struct member 'has_A::foo' is never used. [unusedStructMember]
static const int foo = 8;
                 ^
../code.cpp:15:18: style: struct member 'is_A::foo' is never used. [unusedStructMember]
static const int foo = 8;
                 ^
```
2021-09-04 11:09:33 +02:00
Paul Fultz II 2b7523e466
Regression test for 8742: False positive: ValueFlow regression (#3444) 2021-09-04 08:45:55 +02:00
Paul Fultz II b788e41191
Fix 10438: FP knownConditionTrueFalse after return in a catch clause (#3429) 2021-09-03 23:07:08 +02:00
Daniel Marjamäki dccebb98ea Removed missingReturn inconclusive warnings, that was too noisy 2021-09-01 19:50:17 +02:00
Paul Fultz II a9a6e4c086
Regression test for 9811: False positive: Reference to temporary returned (#3434) 2021-08-31 09:48:50 +02:00
Paul Fultz II 7ce17f076a
Fix 10318: iterator converted to type, wrong scope check (#3433) 2021-08-31 09:48:23 +02:00
Paul Fultz II 49df3d811a
Validate asserts in the AST to fix crash in 10442 (#3428) 2021-08-29 20:45:31 +02:00
Daniel Marjamäki ccfd18b96d Simplify Typedef: Fixed typedef simplification in expanded tokens 2021-08-29 19:14:53 +02:00
Daniel Marjamäki 19fea629c6 Fix FP in checkCompareValueOutOfTypeRange when sign is unknown 2021-08-29 16:03:56 +02:00
Paul Fultz II 92eb59981d
Fix 10435: False positive: containerOutOfBounds (#3426) 2021-08-29 15:40:10 +02:00
Paul Fultz II 2ee880752f
Fix 10410: FP nullPointerRedundantCheck on if (a || b ) followed by if ( b ) (#3427) 2021-08-29 15:39:41 +02:00
Daniel Marjamäki 06249c08f3 argumentSize: Clarify error message 2021-08-29 15:38:58 +02:00
Daniel Marjamäki 0d31486264 Fixed #10403 (Wrong AST for destructor call) 2021-08-28 22:11:30 +02:00
Paul Fultz II c0765c451d
Fix 10139: AST broken; std::enable_if_t<> (#3424) 2021-08-28 09:28:56 +02:00
Paul Fultz II 4566e0e439
Fix 10148: False positive: knownConditionTrueFalse in for loop due to &= (#3425) 2021-08-28 09:28:29 +02:00
Daniel Marjamäki a55b0c332a Fixed #10095 (False positive: unreadVariable) 2021-08-27 17:37:42 +02:00
Paul Fultz II 740becbddf
Fix 10348: FP knownConditionTrueFalse with condition variable in do ... while loop (#3422) 2021-08-27 05:46:57 +02:00
Paul Fultz II 712ff1c073
Fix 10436: hang: valueFlowSubFunction 'ispunct(c)..' (#3423) 2021-08-27 05:46:33 +02:00
chrchr-github f77d9db852
Add test case for #10383 (#3421) 2021-08-26 19:37:29 +02:00
chrchr-github b2852de456
Amend test cases for #10215 (#3420) 2021-08-26 19:37:04 +02:00
Paul Fultz II 1cd9d0479d
Fix 10433: assertion failure in ValueFlow (Interval::fromValues) (#3419) 2021-08-26 07:46:40 +02:00
orbitcowboy b0407ea6b4 Added comment to ticket number, there are no real changes [ci skip] 2021-08-25 21:14:19 +02:00
Paul Fultz II 8aa37218c2
Fix 10400: FP nullPointer - for loop condition (#3417) 2021-08-25 20:33:41 +02:00
Daniel Marjamäki 11916171fe Fix crash in programmemory, crash found in daca@home package system-root 2021-08-25 06:56:19 +02:00
Paul Fultz II f7ddd7a35d
Fix 10430: FP knownConditionTrueFalse with bool from unsigned char (#3416) 2021-08-25 04:51:54 +02:00
Paul Fultz II 8ddc5764f8
Fix 10425: False positive: returnDanglingLifetime when taking address of captured variable (#3415) 2021-08-25 04:06:03 +02:00
Daniel Marjamäki 37ef29889b Fix 10424: ExpressionAnalyzer assertion failure in librevisa 2021-08-24 16:06:51 +02:00
orbitcowboy 7d14f461f0 #8860: Added regression test 2021-08-24 14:36:13 +02:00
Paul Fultz II 524db1c756
Fix 10420: assertion error when analysing juce (#3413) 2021-08-23 11:12:42 +02:00
Paul Fultz II 865163b2ba
Add library configurations for free functions like std::size, std::empty, etc (#3410) 2021-08-23 09:03:48 +02:00
orbitcowboy 4ff0db1ec4 #8631: Added regression test 2021-08-23 08:51:54 +02:00
orbitcowboy 7fc145d076 #7802: Added a regression test 2021-08-22 20:17:18 +02:00
orbitcowboy 98a84b62a3 #2019: Added regression test 2021-08-22 20:01:25 +02:00
Daniel Marjamäki db57efa486 CheckBufferOverrun: Reimplement CheckBufferOverrun::argumentSize check 2021-08-22 16:37:41 +02:00
Paul Fultz II a0c37ceba2
Fix FP: Set correct bounds for interval (#3411) 2021-08-21 21:17:05 +02:00
Paul Fultz II d30f42e0da
Fix FP when calling a function in a condition (#3412) 2021-08-21 18:52:11 +02:00
Daniel Marjamäki e4f0096255 TestSimplifyUsing; code cleanup 2021-08-21 10:39:53 +02:00
Daniel Marjamäki ca50dea97d Fix in Tokenizer::simplifyUsing for non-scopes 2021-08-21 10:10:40 +02:00
Daniel Marjamäki d73ab0ad96 Tokenizer::simplifyUsing; Fixed bug when enum class is used 2021-08-20 16:08:01 +02:00
Paul Fultz II e62cdbb664
Deduce symbolic values from conditions (#3406) 2021-08-19 22:01:55 +02:00
Paul Fultz II e0de48bb1d
Fix 7524: ValueFlow: false path for 'x<3' (#3393) 2021-08-16 09:19:07 +02:00
Daniel Marjamäki 83270a6c52 Fixed #10376 (Cppcheck does not add some function arguments to the dump file) 2021-08-15 07:48:01 +02:00
Paul Fultz II f81ddd2daa
Fix 10408: FP nullPointer on 'return x.release()' (#3404) 2021-08-15 07:43:50 +02:00
Paul Fultz II 422e411b6c
Fix 9444: Syntax error on valid C++14 code (#3403) 2021-08-15 07:43:02 +02:00
Paul Fultz II 6d65f86871
Fix 9245: Synax error on valid C++14 code: AST broken, binary operator '=' doesn't have two operands. (#3400) 2021-08-14 22:50:58 +02:00
Paul Fultz II c92dab1329
Fix 10406: FP danglingLifetime with pointer-to-pointer (#3401) 2021-08-14 21:37:17 +02:00
Paul Fultz II 818fd248e1
Simplify template keyword bracket (#3399) 2021-08-14 21:16:27 +02:00
Paul Fultz II fdaeaacc40
Symboldatabase: Improve valuetypes for containers, iterators, and smart pointers (#3398) 2021-08-14 19:00:58 +02:00
Paul Fultz II b9ac48c90a
Fix 10409: FP 'Condition 's.size()<3' is always false' (#3396) 2021-08-14 06:48:38 +02:00
Paul Fultz II 2a3657154b
Dont require __main__ for an addon (#3363) 2021-08-12 20:17:51 +02:00
Paul Fultz II 69eaa9dfd9
Refactor: ConditionHandler cleanup (#3394) 2021-08-11 08:37:37 +02:00
Daniel Marjamäki e95395e5f0 Fixed #10397 (FP constParameter - implementing an interface) 2021-08-10 15:37:59 +02:00
Daniel Marjamäki c2305b1da7 Fixed #10396 (FP missingReturn on void operator=()) 2021-08-10 09:55:16 +02:00
Daniel Marjamäki d0b6079a83 Fixed #10372 (Confusing message for compareValueOutOfTypeRangeError) 2021-08-10 09:38:28 +02:00
Daniel Marjamäki 0093452bed SymbolDatabase; Better handling of namespace that is defined in several scopes 2021-08-10 07:00:11 +02:00
Paul Fultz II 0f897acecd
Fix FP in solveExpr when using symbolic values (#3391) 2021-08-09 20:41:10 +02:00
orbitcowboy 46f7275833 #8113: Added a regression test. 2021-08-09 18:30:29 +02:00
Paul Fultz II a218ea3b23
Fix 10404: FP knownConditionTrueFalse after subtraction (#3390) 2021-08-09 07:45:41 +02:00
Daniel Marjamäki 820256d10f Revert "testsymboldatabase: remove INDENT-OFF and INDENT-ON"
This reverts commit 623461fc9c.
2021-08-09 07:42:16 +02:00
Daniel Marjamäki 623461fc9c testsymboldatabase: remove INDENT-OFF and INDENT-ON 2021-08-08 21:18:56 +02:00
orbitcowboy 0b36ece049 #8482: Added another regression test 2021-08-08 10:55:10 +02:00
Paul Fultz II 7f358b2bed
Format with uncrustify (#3388) 2021-08-07 20:51:18 +02:00
Daniel Marjamäki f361106770 fix string literals in test code 2021-08-07 15:51:04 +02:00
chrchr-github edd86c0b0a
Add regression test for ticket #10374 (#3386) 2021-08-06 09:41:26 +02:00
orbitcowboy 1f411498b6 #8196: Added a regression test 2021-08-05 08:07:03 +02:00
Daniel Marjamäki 27a4df06d2 Revert "SymbolDatabase; First fix to handle when a namespace have many scopes"
This reverts commit e6cc7201b0.
2021-08-04 22:30:39 +02:00
Paul Fultz II 735f716603
Fix 10394 and 10395: FP knownConditionTrueFalse: loop variable (#3381) 2021-08-04 21:07:55 +02:00
Paul Fultz II 8b8ae55490
Fix 10129: false negative: knownConditionTrueFalse (#3382)
* Add symbolic matching

* Check for truncated values

* Dont propagate uninit values

* Update errorpath test

* Add test case for 10129

* Add test case for FP

* Remove symbolic values that are the same as the token

* Fix test messages

* Fix cppcheck issue

* Format
2021-08-04 21:07:31 +02:00
Daniel Marjamäki e6cc7201b0 SymbolDatabase; First fix to handle when a namespace have many scopes 2021-08-04 20:36:43 +02:00
Daniel Marjamäki 5e9feb7db1 astyle formatting 2021-08-04 20:32:30 +02:00
Paul Fultz II 4626f9ed76
Fix FP when returning a pointer to a container (#3379) 2021-08-04 08:16:31 +02:00
Paul Fultz II 6736ac7e3a
Revert "Formatted the code [ci skip]" (#3380)
This reverts commit 7a6d7f7c2d.
2021-08-03 17:53:30 +02:00
orbitcowboy 7a6d7f7c2d Formatted the code [ci skip] 2021-08-03 06:33:54 +02:00
Paul Fultz II 7be9b217e6
Fix 7843 and 7844: ValueFlow for abs (#3373)
* Refactor: Use valueFlowForward to forward values in condition expression

* Formattting

* Make known when using bools as well

* Set abs function as always positive

* Add test

* Add valueFlowSymbolicAbs

* Set impossible values

* Fix test case

* Fix error messages

* Merge
2021-08-03 06:31:28 +02:00
chrchr-github ba00046732
Add test case for ticket #6884 (#3375)
* Add test case for ticket #9808

* Add test case for ticket #6884
2021-08-02 13:21:18 +02:00
Paul Fultz II 3d19b33c3e
Fix 9948 and 10234: false negative: knownConditionTrueFalse and stlOutOfBounds (#3372) 2021-08-02 10:51:34 +02:00
Paul Fultz II 61ceff39f5
Fix 10390: FP: knownConditionTrueFalse (#3374) 2021-08-02 10:49:39 +02:00
chrchr-github 405e17985a
Add test case for ticket #9808 (#3366) 2021-08-02 06:53:54 +02:00
Daniel Marjamäki 1ec7397c21 astyle formatting
[ci skip]
2021-08-01 14:05:30 +02:00
orbitcowboy ccd525962b #8220: Added a regression test. 2021-08-01 12:32:01 +02:00
Robert Reif 94dc6c2c3f
fix #10332 (cppcheck crashes) (#3371) 2021-08-01 10:31:36 +02:00
Paul Fultz II 7d9fdf582b
Fix 10121: False positive: Condition 'ab->a!=123' is always false when modifying an alias (#3293) 2021-08-01 10:10:11 +02:00
Paul Fultz II 6767b57d4c
Fix FP for symbolic values when the expression is not const (#3370) 2021-07-31 14:19:37 +02:00
Paul Fultz II 3a7ba3cd29
Add symbolic values to ValueFlow (#3367) 2021-07-30 21:29:35 +02:00
Paul Fultz II 6a81b4c17c
Fix 10264: FP invalidContainer when address of container is passed inside struct (#3368) 2021-07-30 15:52:00 +02:00
chrchr-github 9d51b4450b
Add test cases for tickets #9976 and #10371 (#3364) 2021-07-27 22:26:19 +02:00
Paul Fultz II c34691ff56
Fix 10354: FP knownConditionTrueFalse after bitwise and/xor (#3360) 2021-07-26 22:22:50 +02:00
Paul Fultz II 0d3afbb954
Evaluate casts in programmemory (#3359) 2021-07-26 22:22:23 +02:00
Paul Fultz II 14802b932e
Fix 10362: ValueFlow: global variable might be modified by function call (#3358) 2021-07-26 22:21:56 +02:00
orbitcowboy c14bb9cd2e Running astyle [ci skip] 2021-07-26 16:32:00 +02:00
Paul Fultz II 5be3f700bb
Fix 10373: ValueFlow: container in struct assumed empty (#3355) 2021-07-25 18:13:55 +02:00
Paul Fultz II 8e416a7255
Fix issue 10379: FP knownConditionTrueFalse with mod operator (#3354) 2021-07-25 18:13:14 +02:00
Paul Fultz II f9516cf1c6
Fix issue 10378: FP derefInvalidIteratorRedundantCheck (#3353) 2021-07-24 22:44:18 +02:00
Paul Fultz II 00eb71fd49
Remove constexpr -> const simplification (#3346) 2021-07-22 07:22:26 +02:00
Daniel Marjamäki b1547a387e astyle formatting
[ci skip]
2021-07-21 20:13:38 +02:00
Paul Fultz II 41c94b656a
Fix FP const pointer with class variable and add more tests (#3345) 2021-07-21 07:36:13 +02:00
Paul Fultz II 8efe1d4ab4
Find reference to dangling unique ptr (#3344) 2021-07-20 21:30:27 +02:00
Daniel Marjamäki fb5ab5e439 constPointer; Improved checking dereferenced pointer is used in calculation/comparison 2021-07-20 10:38:38 +02:00
Daniel Marjamäki 4d23c02320 constPointer; Improved checking when pointer is not dereferenced 2021-07-20 10:28:35 +02:00
Daniel Marjamäki d1fe34e167 misra; implement rule 8.10 2021-07-18 21:18:07 +02:00
Daniel Marjamäki 9362c1fc6c missing return; write inconclusive error if function ends with unknown function-like macro 2021-07-18 16:00:42 +02:00
Daniel Marjamäki 02682ab17d missing return; Fixed FP when function ends with assert(0) 2021-07-18 14:54:25 +02:00
Daniel Marjamäki eb9a251a4c const variables/parameters; Improved check to handle pointers also (misra 8.13) 2021-07-18 10:59:52 +02:00
orbitcowboy 1be5bb8bbc Running astyle [ci skip] 2021-07-18 10:01:22 +02:00
Paul Fultz II 0b079937e0
Fix 10364: Performance regression (#3340) 2021-07-18 07:48:21 +02:00
Paul Fultz II 59a1c1a9d8
Refactor: Remove variable analyzer (#3339) 2021-07-18 07:46:31 +02:00
orbitcowboy 3f1e937ea1 Running astyle [ci skip] 2021-07-17 08:19:04 +02:00
chrchr-github 8cd8b9c64e
Fix MSVC build and some warnings (#3334) 2021-07-16 21:55:12 +02:00
Daniel Marjamäki 797de4ef92 Fixed #10363 (FP: compareValueOutOfTypeRangeError) 2021-07-16 19:08:08 +02:00
Pavel Šimovec c71e2da5a8
Remove a false positive - main function has no return value (#3335) 2021-07-16 18:50:16 +02:00
Paul Fultz II 942202aede
Evaluate container sizes in forward analysis (#3338) 2021-07-16 18:49:07 +02:00
orbitcowboy 8096fa4db1 std.cfg: Added overlappingWriteFunction-check to wcsncat(). 2021-07-16 14:30:49 +02:00
orbitcowboy 9b46f59ff0 std.cfg: Cleanup wrong test case. 2021-07-16 14:25:04 +02:00
orbitcowboy e90a3053d4 std.cfg: Added a overlappingWriteFunction-check to strncat 2021-07-16 14:01:40 +02:00
Daniel Marjamäki cbb07b6247 misra; implement rule 14.3 2021-07-15 09:43:38 +02:00
orbitcowboy 435cffa858 std.cfg: Improved configuration of std::next(),std::prev() and added TODO tests 2021-07-14 10:12:49 +02:00
Daniel Marjamäki 24c17916af missingReturn; ensure Function::returnsVoid returns true when there is unknown macro 'void STDCALL foo() {}' 2021-07-12 20:29:20 +02:00
Daniel Marjamäki e4ecfd7be8 missingReturn; Fixed false positive when if condition is always true 2021-07-12 17:53:32 +02:00
Daniel Marjamäki a336c07663 missing return; False positive when goto jumps back 2021-07-12 15:31:21 +02:00
orbitcowboy 01b68b99c6 posix.cfg: Added overlapping data check for stpcpy(). 2021-07-11 16:42:19 +02:00
orbitcowboy d782cd629a posix.cfg: Added overlapping data check for bcopy(). 2021-07-11 16:38:25 +02:00
Daniel Marjamäki d9dacc97e4 virtual call in constructor; warn when function is explicitly virtual 2021-07-11 11:03:31 +02:00
Daniel Marjamäki 42388f8da8 Remove TestSamples 2021-07-10 21:04:38 +02:00
Paul Fultz II afac0e8ad3
Fix colors in output of TestSamples (#3332) 2021-07-10 20:14:38 +02:00
orbitcowboy 10fb1851c5 Added more overlapping data configurations 2021-07-10 18:41:36 +02:00
orbitcowboy 7ad64891ea Added tests for overlapping data. 2021-07-10 18:28:26 +02:00
Daniel Marjamäki 9841e0ed96 new check; file can not be opened for read and write access at the same time on different streams (misra rule 22.3) 2021-07-10 13:59:47 +02:00
orbitcowboy b68c5dee07 windows.cfg: Added support for _mbscpy(). 2021-07-10 09:27:22 +02:00
orbitcowboy c38a43c353 std.cfg: Added overlappingWriteFunction check to wcscpy(). 2021-07-10 09:20:51 +02:00
Daniel Marjamäki a8fb0309fd missingReturn; Improved handling of noreturn function 2021-07-10 08:59:01 +02:00
Daniel Marjamäki 53955b48d2 missingReturn; Fixed false negative for goto-label 2021-07-10 08:49:48 +02:00
Daniel Marjamäki 8f1cb2304f missingReturn; Add missing ASSERT_EQUALS in test 2021-07-10 08:45:04 +02:00
Daniel Marjamäki c6f7a78ebb missingReturn; Fixed false positives 2021-07-10 08:37:10 +02:00
Paul Fultz II 9fc5b9472d
Fix 10353: FP knownConditionTrueFalse with conditional assignment (#3333) 2021-07-10 07:35:16 +02:00
orbitcowboy 652e2765bc std.cfg: Added support for wcsncpy regarding data-overlapping 2021-07-09 16:32:54 +02:00
Daniel Marjamäki 86f1acc223 overlapping data; use the size value given by size-arg 2021-07-09 13:43:29 +02:00
Daniel Marjamäki ce58748690 library: add attribute strlen-arg for <not-overlapping-data> 2021-07-09 13:25:01 +02:00
orbitcowboy 58811808d5 std.cfg: Improved configuration of 'strncpy', which is vulnerable for overlapping write issues. 2021-07-09 09:48:24 +02:00
Paul Fultz II 2300a773e1
Fix 10336: AST cyclic dependency on valid C++ code (#3331) 2021-07-09 07:22:24 +02:00
Paul Fultz II 8dc1fa7a59
Add colors to CLI reporting (#3304) 2021-07-08 21:21:35 +02:00
Daniel Marjamäki 56924643be Fixed #10347 (ValueFlow: No known value set for sizeof(a[0])) 2021-07-08 18:18:44 +02:00
orbitcowboy 3e7b6f262d std.cfg: Added not-overlapping-data configuration to wmemcpy() 2021-07-08 17:12:53 +02:00
Daniel Marjamäki 7cb66d56f3 missingReturn; fixed false positive with trailing return type 2021-07-08 13:50:26 +02:00
Daniel Marjamäki ef0af26d9f missingReturn; Fixed FP when function is declared in macro 2021-07-08 13:14:11 +02:00
Daniel Marjamäki 00a9671f46 misra: implement 8.1 2021-07-07 13:34:55 +02:00
Paul Fultz II 3b9c399f72
Fix 10338: Hang/Crash in valueflow (#3328) 2021-07-07 08:20:32 +02:00
orbitcowboy 7d7241b076 #9772: FP uninitvar: in cppcheck 2.1; Added a regression to test 2021-07-06 14:24:07 +02:00
Maksim Derbasov 6b8d0be431
New check: [perf] Copy elision optimization can't be applied for `return std::move(local)` (#3281) 2021-07-06 08:07:46 +02:00
Daniel Marjamäki 6234b5438e New check: Writing overlapping data, detect undefined behavior 2021-07-05 22:07:41 +02:00
Daniel Marjamäki 6cb8f87798 missing return; fixed false positive for 'return {};' 2021-07-04 19:59:22 +02:00
Daniel Marjamäki 4fd33ef2b5 test/cli: fixed missing returns in test cases 2021-07-04 18:25:19 +02:00
Daniel Marjamäki 036c71d967 Fixed #5462 (non-void function does not return a value) 2021-07-04 11:27:57 +02:00
Daniel Marjamäki c489626167 updated copyright year 2021-07-04 08:09:11 +02:00
Paul Fultz II fb9d659e25
Fix 10326: Regression: ValueFlow; Wrong Uninit value after do while (#3312) 2021-07-03 09:12:26 +02:00
Armin Müller fc90598077
Typos found by running "codespell" (#3324) 2021-07-02 17:41:51 +02:00
Robert Reif 68898e2be0
fix #10335 (Type alias remains unknown with using) (#3323)
Co-authored-by: Robert Reif <reif@FX6840>
2021-07-02 06:19:26 +02:00
Daniel Marjamäki 1a5449cbeb Fixed #10327 (ValueFlow; Wrong Uninit value in called function) 2021-07-01 22:08:00 +02:00
Daniel Marjamäki 869eac5670 astyle formatting 2021-07-01 21:09:32 +02:00
chrchr-github 7a51fc8232
Add regression test for #8942 (#3321) 2021-07-01 21:09:06 +02:00
chrchr-github 9be88a06fe
Add regression test for #9176 (#3319) 2021-07-01 13:58:00 +02:00
Daniel Marjamäki e1cff1d1ef Fixed #10334 (AST: hang with c++ initializer and emplace_back) 2021-06-30 21:40:45 +02:00
Daniel Marjamäki e50f7a3e09 astyle formatting 2021-06-30 20:27:35 +02:00
chrchr-github 5b1420ff64
Add regression test for #10215 (#3317) 2021-06-29 19:42:47 +02:00
Daniel Marjamäki 1783fd1bba duplicateBreak; Allow extra return that clarifies for tool(s) that function does not continue 2021-06-29 11:17:12 +02:00
Daniel Marjamäki 05df31c12a Fixed unit tests 2021-06-27 09:04:47 +02:00
Daniel Marjamäki 2a2e071a85 Tokenizer::simplifyAttribute; Set function attribute for function pointer 2021-06-26 14:23:39 +02:00
Paul Fultz II 66956ed959
Fix 10323: Wrong known value. x!=0 does not mean that x==1 (#3308) 2021-06-26 09:16:45 +02:00
Paul Fultz II 508188df2b
Fix 10297: Regression; ValueFlow known value, sign conversion (#3307) 2021-06-26 09:16:04 +02:00
Daniel Marjamäki 9769afe434 knownConditionTrueFalse; avoid several warnings when nonzero expression is compared to see if it is positive or negative 2021-06-25 16:25:25 +02:00
Daniel Marjamäki 2f7f43e1f2 astyle formatting 2021-06-24 23:19:59 +02:00
chrchr-github 39f9bc7422
Fix #10304: std::distance() returns std::ptrdiff_t (#3297) 2021-06-24 23:19:29 +02:00
Paul Fultz II b13e44fce5
Fix 10309 and 10034: internalAstError with init lists (#3303) 2021-06-24 08:25:13 +02:00
Paul Fultz II 6e74fc64b9
Fix 10317: Regression: internalAstError on valid C++ code (#3302) 2021-06-24 08:22:03 +02:00
Paul Fultz II dd178c3ad9
Fix 10314: Possible nullPointerRedundantCheck false positive (#3298) 2021-06-19 13:59:48 +02:00
Paul Fultz II 5922d5178b
Fix 10321: Two flags confuse null pointer check (#3300) 2021-06-19 13:58:57 +02:00
Paul Fultz II eb7b225fc1
Fix 10119: ValueFlow; object member is not uninitialized. happens when there is static member also. (#3299) 2021-06-19 13:58:18 +02:00
Daniel Marjamäki a7707a457d astyle formatting 2021-06-14 07:39:41 +02:00
shane a5664c3e49 allow token iteration in range for 2021-06-14 07:39:01 +02:00
Daniel Marjamäki 03445c01c1 Fix false positives when class might inherit from VCL TObject class 2021-06-13 18:56:04 +02:00
Daniel Marjamäki 7dbca470f7 Suppressions; Fixed problem with cppcheck build dir is used 2021-06-12 18:19:00 +02:00
Daniel Marjamäki 118ad67645 testrunner: return value in non-void functions 2021-06-12 16:43:48 +02:00
Daniel Marjamäki 83d406806f CI; Fixed problems in windows paths 2021-06-12 12:45:31 +02:00
Daniel Marjamäki 4a4808e0ff ImportProject; Try to use relative paths 2021-06-12 11:10:35 +02:00
Paul Fultz II f55a4563f9
Fix 10308: danglingTemporaryLifetime confused by function parameter (#3292) 2021-06-09 09:21:03 +02:00
Paul Fultz II f3a33ea330
Fix 10294: ValueFlow: Wrong <Uninit> value below loop (#3291) 2021-06-09 09:20:43 +02:00
Daniel Marjamäki 3c3435dd10 Fix bug in Tokenizer::simplifyVarDecl 2021-06-06 08:13:40 +02:00
Paul Fultz II 668b88d7c0
Fix 10284: False positive; valueFlowBeforeCondition does not seem to care about increment (#3287) 2021-06-04 21:40:57 +02:00
Paul Fultz II a14922ed85
Fix 10238: FP knownConditionTrueFalse std::string from const char* assumed non-empty (#3288) 2021-06-04 17:22:05 +02:00
Paul Fultz II 537fb5bcd9
Fix 10264: FP invalidContainer when address of container is passed inside struct (#3286) 2021-06-04 17:20:47 +02:00
Paul Fultz II b23c5aa742
Fix 10023: ValueFlow; Wrong result of post-increment in reverse analysis (#3289) 2021-06-04 17:20:21 +02:00
Paul Fultz II 486e440c4a
Fix 10298: ValueFlow: Wrong known value, 'x == -1' implicit unsigned cast for rhs (#3277) 2021-06-04 17:17:41 +02:00
Paul Fultz II 95c872b1ec
Fix todo test for returning a dangling reference (#3284) 2021-06-04 17:15:39 +02:00
orbitcowboy f626035963 std.cfg: Added support for more interfaces 2021-06-03 08:07:53 +02:00
orbitcowboy 39912b5096 std.cfg: Added support for more interfaces 2021-06-03 07:55:26 +02:00
orbitcowboy 601ca6b3c5 Merge branch 'main' of https://github.com/danmar/cppcheck into main 2021-06-03 07:33:47 +02:00
orbitcowboy 4c81a59c0b std.cfg: Added support for more interfaces 2021-06-03 07:33:23 +02:00
Paul Fultz II 3e78e76fe8
Fix issue 10076: ValueFlow: False positive after address of var is taken 'T t = {{{&var}}};' (#3283) 2021-06-03 07:31:46 +02:00
Paul Fultz II 548ec10824
Fix issue 10306: FP knownConditionTrueFalse with modulo result converted to bool (#3282) 2021-06-03 07:26:36 +02:00
dummyunit 9652ca39a3
Improve support for labels in simplifyAddBraces step (#3278)
Previously only a single regular label before a compound statement was
allowed in simplifyAddBracesPair() after if/switch/do/while/for.
This patch adds support for:
* case-labels;
* labels before a single statement;
* labels before try/catch blocks;
* multiple consecutive labels.

Additionally the code for skipping a case label was extracted into a
separate function from simplifyLabelsCaseDefault() and reused in
simplifyAddBracesPair().
2021-06-02 07:00:37 +02:00
Maksim Derbasov 06c4542ac2
New check for rethrow without current handled exception (#3270) 2021-05-31 10:39:24 +02:00
Daniel Marjamäki a994bd5ba5 Uninitialized variables; Add todo test case 2021-05-28 18:09:43 +02:00
Paul Fultz II 5f0fe1dfe7
Fix another FP with range for macro (#3276) 2021-05-26 04:52:55 +02:00
Daniel Marjamäki a4653a057a Uninitialized variables; Fixed FP for range for loop 2021-05-25 20:37:22 +02:00
Daniel Marjamäki 7d84b8f1bc Uninitialized variables; Fix FP when assigning struct members 2021-05-25 16:13:32 +02:00
Daniel Marjamäki 8d97cce81b Uninitialized variables; Added true positive test 2021-05-25 07:31:01 +02:00
Daniel Marjamäki 4cccc710ef Uninitialized variables; Fixed FP when bitmask is used on address 2021-05-24 20:55:13 +02:00
Robert Reif c7be967769
fix #10295 (false negatives by inconsistent 'void' in argument list (declaration vs definition)) (#3274)
Co-authored-by: Robert Reif <reif@FX6840>
2021-05-24 19:32:15 +02:00
Daniel Marjamäki d3bb84cd0e Uninitialized variables; Added TP tests for ignored operators 2021-05-24 17:53:16 +02:00
Daniel Marjamäki b7803ea6fb Uninitialized variables; Fixed false positives for reference cast and dereferencing address of uninitialized variable 2021-05-24 17:50:28 +02:00
Daniel Marjamäki 4ad90bf6f1 Uninitialized variables; Fixed FP in inner for loop 2021-05-24 17:02:19 +02:00
Daniel Marjamäki fa72ec20b2 Uninitialized variables; avoid false positives when passing uninitialized variable to unknown function 2021-05-24 15:54:09 +02:00
Daniel Marjamäki a2e709a652 Uninitialized variables; Try to remove heuristics for assignment with overloaded <<. That is non-standard behavior for the << operator. Let's see how much FPs we get. 2021-05-24 13:17:50 +02:00
Daniel Marjamäki 3a498de306 extracttests; do not extract TestBufferOverrunterminateStrncpy tests 2021-05-24 13:17:29 +02:00
orbitcowboy df6b0bcd87 #10026: Added a regression test for 'false negative: duplicateExpression' 2021-05-24 08:54:45 +02:00
Paul Fultz II ab50a75d8a
Fix 10289: ValueFlow; Wrong known value 'size_t - uint16_t > 0' (#3273) 2021-05-24 08:28:21 +02:00
Daniel Marjamäki 8ad0905e3b Uninitialized variables; Fixed FP in valueflow-based checking 2021-05-23 18:43:34 +02:00
Daniel Marjamäki f968761382 Uninitialized variables; Remove TODO comment in test, test is working as it should now. 2021-05-23 14:57:43 +02:00
Daniel Marjamäki d64aea90fa astyle formatting 2021-05-23 14:36:45 +02:00
Daniel Marjamäki 8828619855 Fixed #10293 (Uninitialized variables; False positive for array in union) 2021-05-23 12:06:23 +02:00
Daniel Marjamäki 85723f8605 Uninitialized variables; Different heuristic needed for const pointer function parameter 2021-05-23 11:45:47 +02:00
dummyunit 247b2d8c83
Support array types in template simplifier (#3267) 2021-05-23 10:40:09 +02:00
Paul Fultz II 47a4144b47
Fix 10288: ValueFlow; False positives because of wrong known value when there is sign cast (#3268) 2021-05-23 10:20:29 +02:00
Paul Fultz II e2d9aaf23b
Fix 10286: false positive: uninitvar (#3271)
* Fix 10286: false positive: uninitvar

* Remove header
2021-05-23 07:58:19 +02:00
Paul Fultz II 8541e0503e
Fix 10290: false negative: container out of bounds (#3269) 2021-05-22 23:33:13 +02:00
Daniel Marjamäki 5f6b56ada2 buffer overrun; Fixed false negative for dynamically allocated float buffer 2021-05-22 15:39:20 +02:00
Daniel Marjamäki 87554bed7a Redundant pointer op; Fixed false positives when macro is used 2021-05-22 14:18:29 +02:00
Daniel Marjamäki 9a9f14bd8a Buffer overflow; Fixed FPs when array size is 1 2021-05-22 12:13:39 +02:00
Daniel Marjamäki 1cb48ad418 Uninitialized variables; Fixed false positive in sizeof() 2021-05-22 11:04:42 +02:00
Daniel Marjamäki f5f3a8d4d7 Fix syntax errors in test cases 2021-05-22 09:44:18 +02:00
Paul Fultz II c63aa2f2cc
Fix 10263: FP containerOutOfBounds when container is accessed via pointer (#3265) 2021-05-22 08:36:51 +02:00
Maksim Derbasov f0d1822a83
Better handling functions with try block for throwInNoexceptFunction (#3264) 2021-05-22 08:36:28 +02:00
Paul Fultz II 1e3ab460a3
Fix 10254: false positive: arrayIndexOutOfBounds in inline function (#3266) 2021-05-22 08:20:09 +02:00
Daniel Marjamäki 22ae4543a6 Fixed 'make checkcfg' 2021-05-22 07:39:27 +02:00
Daniel Marjamäki 68c46e146d Uninitialized variables; Fixed FP when returning malloc pointer 2021-05-21 17:10:49 +02:00
Daniel Marjamäki 2d3d7db730 Uninitialized variables; fix syntax errors in test cases 2021-05-21 15:30:52 +02:00
Daniel Marjamäki 1e6a574cff Uninitialized variables; Passing address of uninitialized variable to function 2021-05-21 15:27:13 +02:00
Daniel Marjamäki 8adfcc848c Uninitialized variables; check RHS expression 2021-05-21 14:31:25 +02:00
Daniel Marjamäki cc74c8e1da Uninitialized variables; Moved test case. ValueFlow can detect issue. 2021-05-21 10:42:58 +02:00