Commit Graph

13966 Commits

Author SHA1 Message Date
chrchr-github f1212e66f7
Fix FP constVariable with 2D array. (#4228)
Test case #8717 was actually a FP as well.
2022-06-22 21:22:04 +02:00
Daniel Marjamäki 1d5166d70c CheckClass: Fix false negatives for uninitMemberVar 2022-06-21 19:28:08 +02:00
chrchr-github a658baf962
Fix #11143 FP: unreadVariable (remove simplifyMathExpressions()) (#4227)
* Fix #11143 FP: unreadVariable (remove simplifyMathExpressions())

* Remove unused function, tests
2022-06-21 15:42:23 +02:00
chrchr-github 0d4b4394bb
Fix FP with embedded zeros (#4226)
* Partial fix for #11137 FN: invalidFunctionArgStr printf argument

* Typo

* Remove <strz>, suppressions

* Add suppresion, remove <strz>

* Add suppressions

* Fix FP with embedded zeros

* Merge
2022-06-21 13:33:45 +02:00
chrchr-github de2509f1ac
Fix FP with complex array size expression (#4225)
* Partial fix for #11137 FN: invalidFunctionArgStr printf argument

* Typo

* Remove <strz>, suppressions

* Add suppresion, remove <strz>

* Add suppressions

* Fix FP with complex array size expression
2022-06-21 00:12:11 +02:00
chrchr-github 5b9fa9657d
Partial fix for #11137 FN: invalidFunctionArgStr printf argument (#4224)
* Partial fix for #11137 FN: invalidFunctionArgStr printf argument

* Typo

* Remove <strz>, suppressions

* Add suppresion, remove <strz>

* Add suppressions
2022-06-20 20:02:22 +02:00
orbitcowboy ff50a01d36 Fixed handling of PCRE rules, since 'simple' rules have been removed already, set default to 'normal'-tokenlist. 2022-06-20 09:17:11 +02:00
PKEuS 9eb16e1002
Replaced check for pipe() buffer size by ordinary CheckBufferOverrun, provide required Library configuration option (#4183)
Merged from LCppC.
2022-06-19 12:01:55 +02:00
Daniel Marjamäki 6873f5237b Tokenizer: removing more stuff from simplifyTokenList2 2022-06-19 10:41:15 +02:00
Paul Fultz II e735376f7d
Refactor to use AST for isContainerSizeChanged (#4222) 2022-06-19 08:17:05 +02:00
Paul Fultz II e6fdcb9de2
Refactor to use derefShared (#4220) 2022-06-19 08:16:27 +02:00
Paul Fultz II 2a0b2f538e
Check tokType in match compiler (#4219)
* Check tokType in match compiler

* Set keyword when tokenlist is missing
2022-06-18 21:30:42 +02:00
Daniel Marjamäki a7815ed5b0 Tokenizer: Remove more stuff from simplifyTokenList2 2022-06-18 07:31:36 +02:00
Daniel Marjamäki aa8c17a701 Tokenizer: remove stuff from simplifyTokenList2 2022-06-17 09:44:58 +02:00
Paul Fultz II 3612ddb3f5
Fix unit test failure (#4218) 2022-06-17 07:49:45 +02:00
Daniel Marjamäki 968d8d153e Fixed #11101 (False positive: derived union members are initialized in constructor) 2022-06-16 20:17:57 +02:00
Paul Fultz II 3e09503561
Fix 11087: false negative: usage of reference to member of temporary object not detected (#4217)
* Fix 11087: false negative: usage of reference to member of temporary object not detected

* Format

* Add another test case

* Fix FP with pointer

* Format
2022-06-16 19:26:36 +02:00
Paul Fultz II 9cecc8468e
Fix 10570: Improve check; condition then pointer dereference, different pointers (#4216)
* Try to use after assign in loop

* Update valueflow forward to handle init tokens

* Fix tests

* Make test TODO

* Format

* Add tests

* Format

* Fix ubsan error

* Use simpleMatch
2022-06-16 19:26:23 +02:00
Paul Fultz II de51ebbcf4
Fix 9135: Access of moved variable not detected in loop (#4215)
* Fix 9135: Access of moved variable not detected in loop

* Format

* Fix issue with pushing back on container

* Format

* Fix null pointer

* Remove yeild for now
2022-06-16 17:40:09 +02:00
Daniel Marjamäki dbb12cb333 Tokenizer: Remove some functions from simplifyTokenList2 2022-06-16 14:06:07 +02:00
Paul Fultz II 46fcdca5ee
Add debug_valuetype intrinsic (#4210) 2022-06-15 21:25:55 +02:00
chrchr-github 176eefcbf3
Fix #10655 FN bitwiseOnBoolean with unseen function (#4214) 2022-06-14 23:08:17 +02:00
chrchr-github 6d22d6a8ae
Fix FP unusedVar with side effects in destructor (#4212) 2022-06-14 09:55:22 +02:00
Daniel Marjamäki 343d04feb4 Tokenizer: Remove simplifyCharAt from simplifyTokenList2 2022-06-12 15:14:48 +02:00
Daniel Marjamäki 8255e32540 cppcheck build dir: do not produce invalid dump file if code is unchanged and checking is skipped. 2022-06-12 11:08:28 +02:00
Paul Fultz II d4fb5652c0
Fix 10619: Valueflow: Library function in subfunction does not propagate all values (#4209) 2022-06-12 07:17:28 +02:00
Paul Fultz II bd63534a1c
Fix 10740: valueflow; conditional value. incremented value is oob. (#4208) 2022-06-12 07:16:28 +02:00
Paul Fultz II cee48e5e19
Add backtrace to valueflow in debug mode (#4195) 2022-06-12 07:13:42 +02:00
Rikard Falkeborn 187460a277
Library: Replace auto with real types (#4207)
Following up on fc6c203b0e, replace auto with the correct types to
clairfy the code. Note the use of const on the first type in the pair,
which allows us to use a reference.
2022-06-11 23:21:25 +02:00
chrchr-github ecb24e28bc
Fix #10191 FP redundantCopyLocalConst - referenced variable changes (#4202) 2022-06-11 16:58:33 +02:00
PKEuS cb382ac52c
C++20 support: Support consteval and constinit (#4203)
Backported from LCppC.
2022-06-11 15:28:20 +02:00
Rikard Falkeborn fc6c203b0e
Library: Use range-based for loops (#4200) 2022-06-11 13:51:55 +02:00
Paul Fultz II 8945c151f5
Fix 11124: FP knownConditionTrueFalse with fruit (#4196)
* Update valueType

* Allow comparisons

* Fix compare op

* Add test

* Format

* Fix FP

* Format
2022-06-11 11:02:04 +02:00
chrchr-github 8579feb3aa
Fix #10545 FP redundantCopyLocalConst with modified object [inconclusive] (#4197)
* Fix  #10545 FP redundantCopyLocalConst with modified object [inconclusive]

* Comment
2022-06-11 11:01:23 +02:00
Paul Fultz II 653a1ea83e
Fix 11100: FP knownConditionTrueFalse with getter/setter member functions (#4198)
* Fix 11100: FP knownConditionTrueFalse with getter/setter member functions

* Format
2022-06-11 11:00:40 +02:00
PKEuS 82af702c6f
LCppC backport: Restored Check: Detect negative VLA and allocation (new[]) sizes (#4187) 2022-06-11 09:55:38 +02:00
Daniel Marjamäki 533b3e2bcb Tokenizer: Clarify code. The variableMap.find, variableMap.end was not strictly matching. 2022-06-11 09:47:06 +02:00
PKEuS 99ce89c003
Improvement: Set varId for variables with global scope operator :: Refactorization: Moved internal class from tokenize.h to tokenize.cpp (#4184)
Merged from LCppC.
2022-06-11 08:11:16 +02:00
Paul Fultz II c9b85010f9
Fix 11096: FP knownConditionTrueFalse in do while loop (#4192)
* Check for loop

* Improve handling of exit values

* Add more checks to test

* Simplify

* Remove unnecessary test

* Fix typo

* Format

* Use simpleMatch
2022-06-10 20:42:02 +02:00
chrchr-github 829ca9ab7f
Fix #10935 FP: compareBoolExpressionWithInt with enum and template parameter (#4193) 2022-06-10 20:40:37 +02:00
chrchr-github 51c8630bb3
Fix #10618 FP knownConditionTrueFalse with virtual function (#4194)
* Fix #10618 FP knownConditionTrueFalse with virtual function

* Remove redundant check
2022-06-10 20:17:57 +02:00
Daniel Marjamäki 375880988c Tokenizer: remove removeRedundantAssignment from simplifyTokenList2 2022-06-10 12:35:05 +02:00
chrchr-github 90392faa2b
Fix crash on nullptr deref (#4189) 2022-06-09 18:25:17 +02:00
Daniel Marjamäki a76ba698c2 Tokenizer: remove simplifyCompoundAssignment from simplifyTokenList2 2022-06-09 07:38:27 +02:00
Daniel Marjamäki c0f3d5b2fb Tokenizer: remove simplifyAssignmentInFunctionCall used in simplifyTokenList2 2022-06-08 19:08:18 +02:00
PKEuS 1275b5275e
LCppC backport: Various optimizations (#4182)
* Optimization: Use Token::eIncDecOp instead of expensive Token::Match calls

Merged from LCppC.

* Small Optimizations: - Moved a std::set that is only need during initialization of SymbolDatabase to function scope - Use std::vector instead of std::list

Merged from LCppC.

* Optimization: Refactorized various Token::Match calls and surrounding conditions

Merged from LCppC.

* Refactorization: Cleanup usage of std::multimap

Merged from LCppC.
2022-06-08 16:58:57 +02:00
PKEuS 4bd189c3c8
Refactorization: Faster calculation of CRC32 by avoiding to create a temporary string. Use proper types in checksum functions. (#4180)
Merged from LCppC
2022-06-08 16:55:06 +02:00
PKEuS 898a3a25a1
ValueType: Added additional unit test (#4185)
Removed unnecessary library export

Backported from LCppC.
2022-06-08 15:27:56 +02:00
PKEuS d20ea41325
Refactorization: Removed compatibility hacks for outdated or non-conformant compilers (#4186)
Merged from LCppC.
2022-06-08 15:16:01 +02:00
PKEuS 44097b59ff
Implemented error handling in cppcheck::Platform::loadFromXmlDocument(), enabled related unit test (#8409) (#4181) 2022-06-08 12:35:23 +02:00
Daniel Marjamäki 86a8d88729 Tokenizer: Remove simplification of math functions from simplifyTokenList2 2022-06-08 09:58:11 +02:00
chrchr-github bb3f490edd
Fix #11090 Infinite recursion in findTypeInBase() (#4178) 2022-06-08 09:20:16 +02:00
Oliver Stöneberg 9367be804e
fixed `modernize-use-equals-delete` warnings in headers (#4177) 2022-06-07 21:25:23 +02:00
chrchr-github 69834d537b
Fix #9997 False negative: variable is not used (#4104) 2022-06-07 21:20:33 +02:00
chrchr-github 1d677c57a8
Fix #11126 FN: noExplicitConstructor with single default parameter (#4174) 2022-06-07 21:15:13 +02:00
chrchr-github b80d06b69e
Don't warn for 'x | MACRO' when MACRO is 0 (#4176) 2022-06-07 21:13:31 +02:00
chrchr-github 52453947c8
Don't warn for 'x | 0' in macro (#4172)
* Fix #11082 FN badBitmaskCheck for binary or with 0

* Add test for #10703

* Don't warn for 'x | 0' in macro

* Add test for #10876
2022-06-06 11:17:36 +02:00
chrchr-github f962436826
Fix #11082 FN badBitmaskCheck for binary or with 0 (#4170)
* Fix #11082 FN badBitmaskCheck for binary or with 0

* Add test for #10703
2022-06-04 17:25:10 +02:00
orbitcowboy 433ce58fe6 Fixed FP found with daca@home: ftp://ftp.de.debian.org/debian/pool/main/libs/libslirp/libslirp_4.7.0.orig.tar.bz2; head libslirp-v4.7.0/src/tftp.c:336:20: error: Invalid strcasecmp() argument nr 1. A nul-terminated string is required. [invalidFunctionArgStr] 2022-06-04 12:00:54 +02:00
orbitcowboy 1c1c72058f Fixed FP found with daca@home: ftp://ftp.de.debian.org/debian/pool/main/libs/libslirp/libslirp_4.7.0.orig.tar.bz2; head libslirp-v4.7.0/src/tftp.c:336:20: error: Invalid strcasecmp() argument nr 1. A nul-terminated string is required. [invalidFunctionArgStr] 2022-06-04 07:46:28 +02:00
Oliver Stöneberg ce945ec7fc
enabled and fixed `modernize-use-override` clang-tidy warnings (#4168) 2022-06-03 21:32:39 +02:00
chrchr-github e6f2929fac
Fix #11085 FN constVariable with range-based for (#4118) 2022-06-03 19:24:59 +02:00
Oliver Stöneberg cc08a661e6
astutils.h: reserve `std::vector` space in `visitAstNodes()` to avoid excess allocations (#4158) 2022-06-03 19:21:17 +02:00
orbitcowboy 00abf21d40 Format 2022-06-03 18:59:43 +02:00
orbitcowboy a74bb485b0 Fixed TODO_ASSERT 2022-06-03 18:59:09 +02:00
orbitcowboy 6680bf9790 Fixed TODO_ASSERT 2022-06-03 18:35:11 +02:00
Oliver Stöneberg d36e05af28
enabled and fixed `modernize-use-emplace` clang-tidy warnings (#4165)
* enabled and fixed `modernize-use-emplace` clang-tidy warnings

* avoid unnecessary creation of temporaries in `emplace_back()` calls
2022-06-03 15:09:29 +02:00
chrchr-github 111f4e17da
Fix #11117 FP nullPointerArithmetic when adding 0 (#4167) 2022-06-03 13:11:54 +02:00
orbitcowboy 1a4bd0a7b3 Fixed FP, found with daca@home: ftp://ftp.de.debian.org/debian/pool/main/k/knot/knot_3.1.8.orig.tar.xz; knot-3.1.8/tests/knot/test_confio.c:301:18: error: Invalid strcmp() argument nr 2. A nul-terminated string is required. [invalidFunctionArgStr] 2022-06-03 13:10:45 +02:00
orbitcowboy 7dac213734 Removed useless parentheses 2022-06-03 10:50:07 +02:00
orbitcowboy 9b0f41e1a0 Revert change 3dfe9eff3e (commitcomment-75236431). 2022-06-03 10:22:29 +02:00
orbitcowboy c24edc528e astutils.cpp: Removed useless parentheses 2022-06-03 00:18:35 +02:00
orbitcowboy 3dfe9eff3e astutils.cpp: Improved const correctness 2022-06-03 00:07:15 +02:00
Paul Fultz II 72342de0da
Fix 11114: FP knownConditionTrueFalse across functions (#4163)
* Fix 11114: FP knownConditionTrueFalse across functions

* Format
2022-06-02 23:24:11 +02:00
orbitcowboy 67795cdfcf
Fixed FPs from Ticket 11119 - invalidFunctionArgStr with null-terminated strings (#4164)
* Fixed first FP from #11119 - invalidFunctionArgStr with null-terminated strings

* Fixed second test case from #11119.

* Fixed another FP, found on daca@home ftp://ftp.de.debian.org/debian/pool/main/g/glhack/glhack_1.2.orig.tar.gz.

* Format
2022-06-02 19:30:29 +02:00
orbitcowboy 58460edaf8 Fixed crash due to missing null pointer check. 2022-06-02 11:32:55 +02:00
orbitcowboy 7275350f3e Combined consecutive Token::simpleMatch() calls 2022-06-02 07:27:19 +02:00
orbitcowboy 3b2509c9cc Fixed failing self-check: style: Call to 'Token::previous()' followed by 'Token::tokAt()' can be simplified. [redundantNextPrevious] 2022-06-02 07:16:09 +02:00
orbitcowboy 886b5d1039 Improved invalidFunctionArgStr checking and detect more cases where a NON-null-terminated string is used to call functions, configured with <strz/>. 2022-06-02 01:09:09 +02:00
chrchr-github cd7362e0e7
Fix FN with default init (#4162)
* Fix #11099 FP: variableScope when using range constructor to vector

* Format

* Fix FN with default init
2022-06-01 23:18:59 +02:00
chrchr-github 2452a2c01d
Fix #11099 FP: variableScope when using range constructor to vector (#4161)
* Fix #11099 FP: variableScope when using range constructor to vector

* Format
2022-06-01 21:15:41 +02:00
Paul Fultz II e430a11b49
Add debug_valueflow instrinsic to show valueflow values and its error path (#4159)
* Add debug_valueflow instrinsic to show valueflow values and its error path

* Format
2022-06-01 06:53:21 +02:00
Oliver Stöneberg 40bcbd47d6
small `Token::Match()` optimizations (#4154)
* token.cpp: fixed `readability-else-after-return` warnings in `Match()`

* token.cpp: removed some duplicated code from `Match()`

* token.cpp: use `strchr()` instead of loop in `Match()`

* token.cpp: added early exit and removed unnecessary loop condition in `Match()`
2022-05-31 13:52:34 +02:00
Oliver Stöneberg 3d5d2e8fd8
inlined `findAstNode()` calls (#4146) 2022-05-31 13:37:21 +02:00
chrchr-github 423e67bd6a
Fix FP memleak (#4145) 2022-05-30 06:55:15 +02:00
Paul Fultz II d7c914bd3e
Handle subfunction values in valueflow conditions (#4128) 2022-05-29 19:57:10 +02:00
chrchr-github 7fbb9c7c13
Fix #10980 FN constVariable with range-based for loop (#4144)
* Fix #10980 FN constVariable with range-based for loop

* Format

* nullptr check

* Restrict scopes

* Add const

* Undo

* Add more const
2022-05-29 17:06:33 +02:00
chrchr-github e1c51940a2
Fix #11095 FP constParameter with decremented pointer (#4131) 2022-05-28 08:32:58 +02:00
chrchr-github 16a4449901
Fix crash with statement expression (#4142) 2022-05-28 00:11:23 +02:00
chrchr-github 16af6561c2
Fix FP memleak with unknown ptr typedef (#4141)
* Fix #11019 FN memleak with redundant pointer op

* Style

* Fix #7705 FN: Memory leak not detected on struct member

* Fix FP memleak with function call, fix cppcheckError

* Fix FP memleak with array

* Fix FPs memleak with array and ptr to ptr

* Fix FP memleak with unknown ptr typedef

* Format
2022-05-27 23:52:56 +02:00
chrchr-github d5d6da0dd4
Fix #11094 FP unreadVariable with unique_ptr and unknown type (#4140) 2022-05-27 17:17:50 +02:00
Rikard Falkeborn 068e5bad27
Fix #9966: FP memleak with multiple assignments in if-statement (#4138)
Similar to how we do for assignments outside if-statements, bail out
since we do not track multiple variables.
2022-05-27 07:57:43 +02:00
chrchr-github 19dd59eae6
Fix FPs memleak with array and ptr to ptr (#4139)
* Fix #11019 FN memleak with redundant pointer op

* Style

* Fix #7705 FN: Memory leak not detected on struct member

* Fix FP memleak with function call, fix cppcheckError

* Fix FP memleak with array

* Fix FPs memleak with array and ptr to ptr
2022-05-26 15:27:36 +02:00
chrchr-github 86763b7b0a
Fix FP memleak with array (#4133)
* Fix #11019 FN memleak with redundant pointer op

* Style

* Fix #7705 FN: Memory leak not detected on struct member

* Fix FP memleak with function call, fix cppcheckError

* Fix FP memleak with array
2022-05-26 00:03:30 +02:00
orbitcowboy eb3b8a6cec checkAlwaysTrueOrFalseStringCompare: Added '_mbscmp_l' to list of functions. 2022-05-25 13:35:39 +02:00
chrchr-github 1ed280fe63
Fix FP memleak with function call, fix cppcheckError (#4130)
* Fix #11019 FN memleak with redundant pointer op

* Style

* Fix #7705 FN: Memory leak not detected on struct member

* Fix FP memleak with function call, fix cppcheckError
2022-05-24 14:02:06 +02:00
chrchr-github 2ceaf308de
Fix #11084: ValueType for pointer typedef, don't warn for typedef'd pointers, improve error message (#4123)
* Fix ValueType for pointer typedef

* Add test

* Don't warn for typedef'd pointers, improve error message

* Fix tests

* Add TODO

* Fix test

* Set isSimplifiedTypedef() for more tokens, add test

* Add test
2022-05-24 10:09:48 +02:00
Paul Fultz II 7405ea039d
Refactor valueflow forward and reverse functions and unify them (#4127)
* Move functions around

* Make it a template to handle both overloads

* Simplify forward

* Remove container forward

* Remove unused settings params

* Format

* Remove valueFlowForwardExpression

* Format

* Remove init list

* Make const ref

* Remove braces

* Remove braces
2022-05-24 06:41:17 +02:00
Paul Fultz II 5999b35130
Fix 10944: FN: knownConditionTrueFalse (#4124)
* Fix 10944: FN: knownConditionTrueFalse

* Use or

* Format
2022-05-23 23:22:08 +02:00
chrchr-github 1ced94be43
Fix #11019 FN memleak with redundant pointer op / #7705 FN: Memory leak not detected on struct member (#4126)
* Fix #11019 FN memleak with redundant pointer op

* Style

* Fix #7705 FN: Memory leak not detected on struct member
2022-05-23 23:21:36 +02:00
Daniel Marjamäki 03c9253962 Token: add isRestrict flag 2022-05-22 14:10:55 +02:00
Paul Fultz II e2c35abde5
Fix 11050: False positive: unreadVariable for class variable when another function uses the same variable name (#4121) 2022-05-22 09:20:32 +02:00
chrchr-github 22a4fdb6c4
Fix crash in checkPassByReference() (#4122) 2022-05-21 16:02:35 +02:00
Daniel Marjamäki 1f6554e2e8 Update copyright year 2022-05-21 12:18:27 +02:00
chrchr-github 2a7f00cf9a
Fix #8545 FN Condition '...' is always true ' uint16_t i; ( i <= 0xFFFF)' (#4114) 2022-05-21 08:33:42 +02:00
Paul Fultz II feaef46436
Fix 11076: Assert failure / crash with loop over init list (#4119) 2022-05-21 08:25:09 +02:00
Paul Fultz II a62fb986a5
Fix 11090: Infinite recursion in findTypeInBase() (#4120) 2022-05-21 08:24:29 +02:00
chrchr-github 2b723eafcb
Fix ValueType for references in range-based for loop (#4116)
* Fix ValueType for references in range-based for loop

* Format
2022-05-20 08:48:01 +02:00
chrchr-github 112b1573c5
Fix #11078 FN constructing string from nullptr / #11079 FN unread variables (#4112)
* Fix #11078 FN constructing string from nullptr / #11079 FN unread variables

* Format
2022-05-18 13:52:44 +02:00
Daniel Marjamäki 54ec666739 provide more details when executing addons fails 2022-05-18 08:36:20 +02:00
Paul Fultz II 90e6c10c12
Fix 11072: FP arrayIndexOutOfBounds, nullPointer with nested loops (#4113)
* Fix 11072: FP arrayIndexOutOfBounds, nullPointer with nested loops

* Format

* Remove print statement
2022-05-18 08:29:30 +02:00
Oliver Stöneberg 14421ae627
fail `run-clang-tidy` in case of compiler warnings / fixed Clang warnings / cleanups (#4036) 2022-05-15 12:42:29 +02:00
orbitcowboy e02182bd88 Cleanup redundant parentheses 2022-05-15 07:53:32 +02:00
orbitcowboy 4f410ffb79
library: Improved argument <valid>-interface to defined values that are explicitly excluded. (#4111)
* library: Improved <valid>-interface to defined values that are explicitly excluded.

* std.cfg: Improved configuration of remainder[fl]().

* Fixed failing self check

* Fixed failing self check

* std.cfg: Added support for std::remquo().
2022-05-14 16:05:18 +02:00
chrchr-github 52f507d1fb
Fix #8004 unintentional semicolon in expression '.. ; +dostuff();' (#4109)
* Fix #8004 unintentional semicolon in expression '.. ; +dostuff();'

* Improve error message

* Don't remove single unary + in front of variables
2022-05-13 06:54:02 +02:00
Paul Fultz II fbba72ab5a
Fix 11057: FP danglingTemporaryLifetime with reference member (#4103)
* Fix 11057: FP danglingTemporaryLifetime with reference member

* Add test

* Format

* Use ast for number of arguments

* Get number of arguments using ast

* Skip aggregate constructor when there are too many arguments

* Format
2022-05-13 06:51:07 +02:00
Paul Fultz II 5f9bee9b91
Fix 11056: FP uninitvar with known condition in loop (#4107)
* Fix 11056: FP uninitvar with known condition in loop

* Format
2022-05-12 06:37:48 +02:00
Paul Fultz II 5d8da2b83c
Fix 11035: FP arrayIndexOutOfBoundsCond with array and vector (#4105)
* Fix 11035: FP arrayIndexOutOfBoundsCond with array and vector

* Format

* Move comment
2022-05-12 06:21:33 +02:00
chrchr-github e7e8b1baf9
Fix #9861 FN: "static" not suggested for non-const method (#4101)
* Fix #9861 FN: "static" not suggested for non-const method

* Format

* Make functions static

* static
2022-05-11 20:01:22 +02:00
chrchr-github 63a1698335
Fix #11059 FP multiCondition when variable is assigned in if/else (#4102) 2022-05-11 20:01:13 +02:00
chrchr-github 942dbad11c
Fix #7197 not getting expected warning in relational comparison of booleans (#4095)
* Fix #7197 not getting expected warning in relational comparison of booleans

* return nullptr
2022-05-11 08:09:32 +02:00
Daniel Marjamäki 72ba85a2fc AST: Fix AST for array size calculation in cast (char (*)[...]) 2022-05-10 22:47:57 +02:00
Daniel Marjamäki 4257f9d46a Tokenizer: fix for __attribute__ before function that returns a reference 2022-05-10 20:59:24 +02:00
chrchr-github a70d11adb6
Fix #11052 inline static global struct declaration interferes with checks (#4098) 2022-05-10 20:43:11 +02:00
chrchr-github 759c16fcef
Fix boolean expressions (#4099)
* Enable experimental check

* Remove experimental

* Don't compare Booleans using relational operators

* Fix boolean expressions
2022-05-10 20:42:24 +02:00
Daniel Marjamäki 0a4e2abf01 dump: add token isComplex attribute 2022-05-10 19:05:02 +02:00
chrchr-github e2bb77f990
Remove severity 'experimental' from checkComparisonOfBoolWithBool() (#4097)
* Enable experimental check

* Remove experimental

* Don't compare Booleans using relational operators
2022-05-10 18:25:13 +02:00
chrchr-github 52cbbb0229
Fix FP uninitMemberVar with defaulted special member functions (#4094)
* Fix #10569 FN: duplicateExpression with multiple strings compared

* Fix compiler warning

* TODO -> ASSERT

* Update testautovariables.cpp

* Improve error message

* Format

* Improve message

* Fix FP with defaulted operator=

* Fix condition
2022-05-10 13:04:45 +02:00
chrchr-github 54f832a2fe
Fix #10569 FN: duplicateExpression with multiple strings compared (#4087) 2022-05-09 21:05:35 +02:00
chrchr-github 38bdece3fe
Fix #9391 False negative: Uninitialized struct member (default constructor) (#4088)
* Fix #9391 False negative: Uninitialized struct member (default constructor)

* Format

* Initialize variables

* Init
2022-05-09 20:28:21 +02:00
Paul Fultz II be6daa94bb
Fix 11053: Integer division by zero in calculate.h (#4092)
* Fix 11053: Integer division by zero in calculate.h

* Format
2022-05-09 20:27:32 +02:00
Paul Fultz II 69f09da63e
Fix 11044: FP knownConditionTrueFalse after early return (#4091)
* Fix 11044: FP knownConditionTrueFalse after early return

* Format
2022-05-09 20:26:52 +02:00
Oliver Stöneberg c71033548f
fixed some clang-tidy warnings (#3080) 2022-05-08 20:42:06 +02:00
Daniel Marjamäki eb9c4b4aed Tokenizer: Fix handling of __attribute__ for overloaded operator function 2022-05-08 18:19:52 +02:00
Daniel Marjamäki fab55287f7 Tokenizer: improved handling of __asm__ in function declaration 2022-05-08 16:03:09 +02:00
Daniel Marjamäki 449d351095 Revert "Tokenizer: handle when __asm__ directive is provided for function"
This reverts commit f25b8cf662.
2022-05-07 21:53:10 +02:00
Daniel Marjamäki f25b8cf662 Tokenizer: handle when __asm__ directive is provided for function 2022-05-07 19:40:03 +02:00
chrchr-github 612d7be85a
Fix #11045 syntaxError with unknown macros and using namespace (#4086) 2022-05-05 19:47:56 +02:00
Paul Fultz II 843f7893d6
Fix 11040: FP nullPointer after loop (#4085) 2022-05-05 06:55:02 +02:00
Paul Fultz II 8d16ee946c
Fix 11027: False positive: containerOutOfBounds from condition in assert (#4084)
* Fix 11027: False positive: containerOutOfBounds from condition in assert

* Format
2022-05-05 06:54:44 +02:00
Paul Fultz II 5afd6880c3
Fix 11028: False positive: invalidContainer (#4083)
* Fix 11028: False positive: invalidContainer

* Format
2022-05-05 06:54:36 +02:00
chrchr-github adba751217
Fix #11018 FP uninitvar with redundant pointer op (#4082)
* Skip redundant pointer op

* Fix  #11018 FP uninitvar with redundant pointer op

* Format
2022-05-05 06:54:27 +02:00
chrchr-github aebc080c0f
Fix #11041 FN constVariable with array of pointers [regression] (#4080)
* Fix #11041 FN constVariable with array of pointers [regression]

* Use std::vector for deterministic order of results, use helper variables
2022-05-05 06:54:03 +02:00
chrchr-github 9a379925cd
FIx FN shadowVariable in static function (#4079)
* FIx FN shadowVariable in static function

* Use functionOf
2022-05-04 17:56:16 +02:00
chrchr-github e2069dd1b9
Fix #10650 FN knownConditionTrueFalse with const int value (#4078) 2022-05-04 14:25:00 +02:00
Paul Fultz II 496b45f27b
Fix 11009: FP uninitvar (#4076)
* Fix 11009: FP uninitvar

* Format
2022-05-04 05:59:01 +02:00
chrchr-github 1e40a2e73e
Fix #5210 C-style pointer casting not detected for casts to ** (#4075) 2022-05-03 20:15:42 +02:00
chrchr-github 509e42afd4
Fix #11034 FN duplicateCondition with struct member (#4074)
* Fix #11034 FN duplicateCondition with struct member

* Update testcondition.cpp
2022-05-03 19:57:30 +02:00
chrchr-github 51b4cf592b
Fix #11029 unknownMacro reported with noexcept (regression) (#4073) 2022-05-03 13:37:14 +02:00
Paul Fultz II 3edb10a006
Fix 11024: FP returnDanglingLifetime with c_str() passed to constructor (#4072) 2022-05-03 11:42:32 +02:00
chrchr-github 8ce0faf723
Fix #10427 Regression: selfInitialization (#4070) 2022-05-02 16:49:13 +02:00
chrchr-github 67f4fe575f
Fix #10978 syntaxError with attribute for function pointer (#4069) 2022-05-02 15:05:48 +02:00
chrchr-github e9a0d7979e
Fix #11014 FN redundantPointerOp / remove simplifyMulAndParens() (#4062) 2022-05-01 15:46:07 +02:00
Paul Fultz II 3e686103ae
Fix 10984: False positive: invalidContainer when explictly capturing vector by reference (#4064) 2022-04-30 09:36:28 +02:00
Paul Fultz II 4e7125554f
Fix 8358: FP: Condition '(number*0)!=0' is always false (#4065) 2022-04-30 09:35:51 +02:00
Paul Fultz II 9fa5c4e201
Fix 11011: FP returnDanglingLifetime with non-const reference argument [inconclusive] (#4066)
* Fix 11011: FP returnDanglingLifetime with non-const reference argument [inconclusive]

* Format
2022-04-30 08:23:58 +02:00
chrchr-github e7afb3045b
Fix FP redundantPointerOp with macro (#4061)
* Fix #10991 FN: Redundant pointer operation

* Fix FP redundantPointerOp

* Check for LValue

* Fix FP redundantPointerOp with macro

* Format
2022-04-29 13:23:50 +02:00
chrchr-github 0467ab1339
Fix #7923 FN memleak with cfg (#4060) 2022-04-28 19:50:16 +02:00
chrchr-github 8dbe6994a2
Fix FP redundantPointerOp (#4058)
* Fix #10991 FN: Redundant pointer operation

* Fix FP redundantPointerOp

* Check for LValue
2022-04-28 15:25:31 +02:00
chrchr-github 3d3885d151
Add test for #9838 / Remove noisy assert (#4059)
* Add test for #9838

* Remove noisy assert
2022-04-28 15:24:54 +02:00
Paul Fultz II aafd1e10be
Fix 11006: FP uninitvar with unknown constant (#4056) 2022-04-28 10:48:37 +02:00
chrchr-github 7cedf3e0e5
Partial fix for #10983 False positive: returnTempReference with trailing return type (#4055) 2022-04-27 20:11:32 +02:00
chrchr-github 034140e7e1
Fix #10991 FN: Redundant pointer operation (#4054) 2022-04-27 19:52:56 +02:00
Paul Fultz II 3e3abecba0
Rename old uninitvar ID to use legacyUninitvar (#4043) 2022-04-27 17:37:37 +02:00
chrchr-github bcbc29affb
Fix #10526 FP: negativeIndex if function call is made after index check (#4052)
* Fix #10526 FP: negativeIndex if function call is made after index check

* Improve container check

* Format
2022-04-27 14:08:44 +02:00
Paul Fultz II 474c7fe5cc
Fix 10953: False positive: Possible null pointer dereference when calling derived function (#4044) 2022-04-26 17:57:06 +02:00
Falital e8a96932e1
Don't add suppressed errors to plist output (#4038) 2022-04-26 17:39:39 +02:00
chrchr-github 0dc3cb6eba
Fix #11007 FP nullPointerRedundantCheck with static function pointer (#4051) 2022-04-26 17:25:56 +02:00
chrchr-github 6b5df68677
Fix #11001 syntaxError for valid C code sizeof(enum ...) (#4045) 2022-04-26 07:22:53 +02:00
chrchr-github 961ecfbe33
Fix #11003 cppcheckError with nested template arguments (#4049) 2022-04-25 22:23:06 +02:00
chrchr-github 1bc0317719
Fix #11002 FP uninitStructMember with extra parentheses (#4047) 2022-04-25 22:22:35 +02:00
chrchr-github b4df064875
Fix #11004 FP AssignmentIntegerToAddress with volatile (#4046) 2022-04-25 22:00:37 +02:00
chrchr-github 81f9b9b2b7
Fix FP with ptr to ptr const (#4050) 2022-04-25 21:45:11 +02:00
Paul Fultz II 6b9ac6f7a8
Warn when incrementing uninitialized value (#4042)
* Warn when incrementing uninitialized value

* Format
2022-04-24 09:56:58 +02:00
Paul Fultz II 5d5562266d
ValueFlow: Assume constant is nonzero when its negated (#4041)
* ValueFlow: Assume constant is nonzero when its negated

* Format

* Format
2022-04-23 06:19:07 +02:00
Paul Fultz II 4eed29502c
ValueFlow: Set values to parameters to longjmp and setjmp (#4040)
* ValueFlow: Set values to parameters to longjmp and setjmp

* Format
2022-04-23 06:18:55 +02:00
Oliver Stöneberg fdca61add9
aligned build options of Visual Studio project configurations and added them to CMake (#4020) 2022-04-21 21:28:29 +02:00
Paul Fultz II 3feecc51d6
Fix 10988: FP: Regression, uninitvar (#4037) 2022-04-21 19:29:38 +02:00
Oliver Stöneberg 3feb496197
cppcheck.vcxproj: fixed yet another invalid standard setting in `Debug-PCRE` configuration for `cppcheck` causing build failures with SmallVector (#4031) 2022-04-21 09:21:59 +02:00
Oliver Stöneberg 7c9b9a65b1
cppcheck.vcxproj: fixed invalid standard setting in `Debug-PCRE` configuration for `cppcheck` causing build failures with SmallVector (#4030) 2022-04-20 20:29:43 +02:00
Oliver Stöneberg 36ef4dc5b8
added support for Qt6 (#3930) 2022-04-15 18:49:24 +02:00
Oliver Stöneberg 8f728cb4b6
added (partial) support for specifying C++23 and support more "-std" options (#3212) 2022-04-15 16:17:36 +02:00
chrchr-github 6e69b751eb
Fix Match pattern (#4025) 2022-04-15 08:48:49 +02:00
Paul Fultz II 28cf14f110
Fix 10975: false negative: dangling reference in class (#4024)
* Fix 10975: false negative: dangling reference in class

* Format
2022-04-14 18:59:12 +02:00
chrchr-github 6450d5701c
Fix #10979 FP arrayIndexOutOfBoundsCond with sizeof (#4021)
* Fix #10466 FP constVariable with pointer typedef

* Fix flag check

* Use isStatic()

* Fix #10979 FP arrayIndexOutOfBoundsCond with sizeof and extra parentheses
2022-04-14 18:13:29 +02:00
Paul Fultz II 6deb8068fa
Fix 10981: ValueFlow: multiplication with 0 should have known value 0 (#4023) 2022-04-14 18:13:04 +02:00
Paul Fultz II 09597bc7e8
Fix 10956: ValueFlow: Incorrect value when assigned to two variables (#4019)
* Fix 10956: ValueFlow: Incorrect value when assigned to two variables

* Format
2022-04-14 07:35:07 +02:00
chrchr-github 7721cd14b6
Fix #10466 FP constVariable with pointer typedef (#4018)
* Fix #10466 FP constVariable with pointer typedef

* Fix flag check

* Use isStatic()
2022-04-13 21:56:45 +02:00
Oliver Stöneberg 16e90ed3e2
smallvector.h: reverted bogus noExplicitConstructor fix and suppress the warning (#4016) 2022-04-13 20:50:04 +02:00
chrchr-github 8203c74c40
Fix #9648 FP sizeofDivisionMemfunc (#4017)
* Fix #9648 FP sizeofDivisionMemfunc when result is multiplied again with sizeof later

* Format
2022-04-13 18:21:56 +02:00
chrchr-github 938517b80a
Fix #10265 FP unused private method (#4015) 2022-04-13 14:49:28 +02:00
chrchr-github f323e8a6c6
Fix #10311 FP functionConst (#4012)
* Fix #10311 FP functionConst

* Format

* Format
2022-04-13 12:25:36 +02:00
chrchr-github 55cb396d18
Fix #10494 Same template name confuses check (#4011) 2022-04-13 12:25:21 +02:00
chrchr-github ea65fe2b63
Fix another FP divideSizeof (#4009)
* Fix FP divideSizeof

* Format

* Undo

* simpleMatch

* Fix another FP divideSizeof
2022-04-13 12:24:35 +02:00
Oliver Stöneberg 45158ec064
cleaned up includes based on include-what-you-use (#4007)
* cleaned up includes based on include-what-you-use

* updated translations
2022-04-13 12:24:00 +02:00
chrchr-github 5ac4afa5b8
Fix cppcheckError with spaceship operator (#10251) (#4001)
* Fix cppcheckError with starship operator (#10251)

* Fix test case

* Return result
2022-04-13 12:23:38 +02:00
Paul Fultz II 6c82fb05a4
Fix 10954: False positive: returnDanglingLifetime when using c_str() (#4006) 2022-04-12 08:09:13 +02:00
Paul Fultz II 61b87bcc60
Fix 10955: False positive: containerOutOfBounds when using a const reference member (#4005) 2022-04-12 08:07:55 +02:00
chrchr-github 00badff622
Fix #10315 FP functionConst (#3997)
* Fix #10315 FP functionConst

* Update releasenotes.txt
2022-04-11 22:55:16 +02:00
chrchr-github 28a024ac4a
Fix #9954 incorrectLogicOperator/knownConditionTrueFalse for constexpr (#4002) 2022-04-11 20:42:54 +02:00
chrchr-github bf6bcafc56
Fix FP divideSizeof (#4003) 2022-04-11 20:41:59 +02:00
Oliver Stöneberg a98346bbe0
generate a program database in all Visual Studio configurations (#3996) 2022-04-11 11:28:07 +02:00
Daniel Marjamäki 8f386e15fd Remove bug hunting. This feature will be provided in Cppcheck premium. 2022-04-11 07:31:33 +02:00
Paul Fultz II 99757c6d06
ValueFlow: Set values to parameters to escape functions (#3994)
* ValueFlow: Set values to parameters to escape functions

* Format
2022-04-11 07:23:58 +02:00
Paul Fultz II d97942d3c6
Fix 6577: Detect pointer to uninitialised memory with clock_settime() (#3993)
* Fix 6577: Detect pointer to uninitialised memory with clock_settime()

* Format
2022-04-11 07:23:44 +02:00
Paul Fultz II 45b4580554
Fix 10957: Crash on valid code (#3991) 2022-04-10 22:47:58 +02:00
chrchr-github bd9f5231b8
Fix #10179 FP divideSizeof with dereferenced pointer-to-pointer (#3786) 2022-04-10 22:47:27 +02:00
chrchr-github c8936d04f6
Fix #3886 New Check : Return value of "new" ignored (#3884) 2022-04-09 19:06:32 +02:00
Oliver Stöneberg 25ef9eeb26
use std::string::empty() (#3910) 2022-04-09 19:02:37 +02:00
chrchr-github 0636018df3
Fix #10368 FP: unassignedVariable with structured binding (#3990) 2022-04-09 14:50:30 +02:00
chrchr-github 2bccde0e3b
Fix #9789 FP Logical condition considered always false (#3985) 2022-04-09 14:09:10 +02:00
chrchr-github 38bc0ad4c3
Fix regression: wrong member variable (#3987) 2022-04-08 08:23:10 +02:00
Paul Fultz II d2a0b0f78e
Fix 10951: FP knownEmptyContainer with east-const (#3988)
* Fix 10951: FP knownEmptyContainer with east-const

* Format

* Use simpleMatch
2022-04-08 08:22:39 +02:00
chrchr-github ceb86afc22
Fix #10952 FP constStatement with cast in return (#3986) 2022-04-07 14:11:14 +02:00
Paul Fultz II 4c1aeb0cb1
Remove old pointer alias check (#3983) 2022-04-07 11:36:15 +02:00
chrchr-github 52b4aeb279
Fix #10792 FP knownConditionTrueFalse with double to int cast (#3964) 2022-04-07 10:42:57 +02:00
Paul Fultz II dad10f2ab7
Fix 7684: ValueFlow: function call 'X::GetSize()' (#3984)
* Improve getting function to calculate the return

* Add test

* Format

* Move to cpp to avoid FP

* Format
2022-04-07 06:49:25 +02:00
Paul Fultz II 74667d1e2a
Fix 10418: false negative: knownConditionTrueFalse (#3981)
* Improve handling inverted condition

* Fix tests

* Rename variables for clarity

* Add initial test

* Add another test

* Format

* Fix FP
2022-04-07 06:48:13 +02:00
Paul Fultz II 09c8cfb2ae
Fix 6624: false negative: std::vector out of bounds access not detected (#3980)
* Fix 6624: false negative: std::vector out of bounds access not detected

* Format

* Add test for auto

* Fix tests

* Format
2022-04-07 06:47:15 +02:00
Paul Fultz II bb640c4879
Fix 10950: Crash on function declaration (#3979)
* Fix 10950: Crash on function declaration

* Format
2022-04-06 19:00:05 +02:00
chrchr-github b73aeeda0e
Fix FP constStatement with comma operator (#3978)
* Fix FP constStatement with comma operator

* Format
2022-04-06 16:58:17 +02:00
Paul Fultz II 4fde7f8b18
Fix 10449: Regression: knownConditionTrueFalse (strlen/wcslen) (#3977)
* Refactor library function usage

* Evaluate library function in program memory

* Fix and add tests

* Format
2022-04-06 06:35:38 +02:00
Paul Fultz II 1d92665ad2
Fix 10867: false negative: containerOutOfBounds with std::array (regression) (#3976)
* Fix 10867: false negative: containerOutOfBounds with std::array (regression)

* Format
2022-04-06 06:25:28 +02:00
chrchr-github 4c375e7224
Fix #9815 FP redundantInitialization with lambda / #10864 debug: valueFlowConditionExpressions bailout (#3970)
* Fix #9815 FP redundantInitialization with lambda

* Fix #10864 debug: valueFlowConditionExpressions bailout

* Format
2022-04-05 23:19:17 +02:00
chrchr-github f5313dc519
Fix crash with defaulted destructor (#3975) 2022-04-05 23:18:08 +02:00
chrchr-github c4dcfef385
Fix #10260 debug: Executable scope 'x' with unknown function. (#3974)
* Fix #10174 debug: Executable scope 'x' with unknown function

* Format

* Add test for #10198

* Fix #10260 debug: Executable scope 'x' with unknown function.
2022-04-05 15:52:16 +02:00
chrchr-github cfbbeb4b1b
Partial fix for #10867 FN containerOutOfBounds with std::array (#3971)
* Partial fix for #10867 FN containerOutOfBounds with std::array

* Format

* Format

* Optimize
2022-04-05 07:34:20 +02:00
chrchr-github b79885c6af
Fix #10174 debug: Executable scope 'x' with unknown function (#3972)
* Fix #10174 debug: Executable scope 'x' with unknown function

* Format
2022-04-05 07:34:06 +02:00
chrchr-github aae810dd2c
Fix #10107 FP: duplicateValueTenary (#3969) 2022-04-04 06:33:54 +02:00
chrchr-github 955d6d8fc6
Fix #10793 internalAstError with brace-init in ternary (#3966)
* Fix #10793 internalAstError with brace-init in ternary

* Undo
2022-04-03 20:05:03 +02:00
Paul Fultz II 39265f8ce0
Fix 10931: Assert failure in setSymbolic() (#3967)
* Fix 10931: Assert failure in setSymbolic()

* Format
2022-04-03 20:04:18 +02:00
Paul Fultz II 0547cbcd26
Fix 10647: FN knownConditionTrueFalse for impossible Boolean value (#3968)
* Add impossible values for bool

* Fix valueflow tests

* Fix assertion failure

* Add test

* Format
2022-04-03 20:04:05 +02:00
chrchr-github 7a7b3e40eb
Fix regression FN constVariable with static arrays (#3965)
* Fix regression FN constVariable with static arrays

* Fix test case
2022-04-02 20:39:45 +02:00
chrchr-github a9f29fbc09
Fix #10307 FP functionStatic with class template and east-const / #10471 FP constParameter with std::array and east-const (#3963) 2022-04-01 23:26:44 +02:00
Daniel Marjamäki ea63b8e2bb misra: fix void parameter check 2022-04-01 21:34:47 +02:00
chrchr-github 4bf8718dcb
Fix #10849 FP constStatement with pointers in lambda (#3961) 2022-04-01 19:50:40 +02:00
Paul Fultz II 5bea50cd36
Fix 10908: FP: uninitvar after for-loop (#3942) 2022-03-31 21:24:20 +02:00
chrchr-github 183969cd4b
Fix #10936 FP constStatement with extern declaration (#3960) 2022-03-31 21:08:04 +02:00
chrchr-github c85e7e7d2f
Fix FP constStatement with more complex expression (#3959) 2022-03-30 22:00:57 +02:00
Paul Fultz II 32ded1602b
Fix warnings in switch statements on clang (#3943) 2022-03-30 19:30:02 +02:00
Jens Yllman 34a11c1673
Fix unmatched suppression (#5704) (#3886) 2022-03-30 19:24:53 +02:00
chrchr-github 343a23135d
Fix #10932 FP constStatement with reference and direct initialization (#3952) 2022-03-30 19:22:01 +02:00
chrchr-github 47ba053054
Fix #10744 FP constVariable with static pointer (#3957) 2022-03-30 19:21:09 +02:00
chrchr-github 86ff360946
Fix #10917 FP constStatement with immediately evaluated lambda (#3956) 2022-03-29 06:10:57 +02:00
chrchr-github 81bcbfa7fe
Fix #10920 FP missingOverride with friend (#3955) 2022-03-28 22:44:04 +02:00
chrchr-github 49147f95fe
Fix #10918 FP constStatement with dynamic_cast (#3954) 2022-03-28 22:15:40 +02:00
chrchr-github 8d49fc252c
Fix FP constStatement ',' with Eigen, OpenCV etc. (#3950) 2022-03-28 22:06:44 +02:00
chrchr-github 11cbb2eb00
Fix AST cyclic dependency [cppcheckError] 3 (#3953) 2022-03-28 22:05:41 +02:00
chrchr-github d57d536f01
Fix #10882 FP constStatement with negation and cast (#3951) 2022-03-28 21:52:08 +02:00
chrchr-github 7b97230dd2
Fix #10505 FP unreadVariable for lock_guard variable (#3938) 2022-03-28 21:45:49 +02:00