222 Commits

Author SHA1 Message Date
Rikard Falkeborn
829c543331
TestCondition: Don't warn when sizeof is involved () 2020-11-11 08:01:11 +01:00
Daniel Marjamäki
33844b28ab Another fix for the crash 2020-10-22 06:59:13 +02:00
Daniel Marjamäki
bcc7c5cd50 Use astIsPointer to avoid crashes 2020-10-22 06:55:48 +02:00
Ken-Patrick Lehrmann
e4a54a24db
Fix regression in CheckCondition ()
Introduced by e2a81a382f5333ba03d3d0b83be1d06728dc0f3b.
2020-10-20 07:56:41 +02:00
Paul Fultz II
a4f43fc2ad
Fix issue 8234: false negative: (warning) Opposite inner 'if' condition leads to a dead code block. () 2020-09-07 07:53:41 +02:00
Paul Fultz II
1c5f496350
Fix issue 8373: false negative: invalid iterator () 2020-08-31 08:46:56 +02:00
Daniel Marjamäki
df99d8aa0a
Merge pull request from pfultz2/fp-unreachable-alias
Fix issue 9807: False positive: ValueFlow in unreachable code, || lhs is true
2020-07-23 09:52:54 +02:00
Paul
dbb410cdae Merge branch 'main' into condition-in-expr 2020-07-21 13:28:59 -05:00
Paul
5bc5c96c8f Fix cppcheck error 2020-07-21 13:20:39 -05:00
Rikard Falkeborn
9ced26a7a1 Refactor: Use visitAstNodes in checkcondition 2020-07-20 11:03:29 +02:00
Daniel Marjamäki
e0be224f4e
Merge pull request from pfultz2/fp-duplicate-cond-this
Fix FP of duplicateCondition when modifying the this variable
2020-07-13 21:14:58 +02:00
Paul
519f2a537a Format 2020-07-13 13:55:45 -05:00
Paul
450bdfedf3 Fix FP of duplicateCondition when modifying the this variable 2020-07-13 12:40:01 -05:00
Rikard Falkeborn
d8e7e9176b Fix FN with known condition and sizeof
cppcheck behaved differently if sizeof was to the left or right of the
comparison. In order to fix this, we cannot break the while loop until
all operands have been processed.
2020-07-10 23:39:16 +02:00
Daniel Marjamäki
f56a17bf3d Fixed (FP: identicalConditionAfterEarlyExit when there is #if) 2020-07-01 07:48:32 +02:00
Paul
d5b6d49d96 Fix issue 9578: false negative: (style) Condition '...' is always false 2020-06-28 15:28:08 -05:00
Oliver Stöneberg
37bc0483a4
made check.h less heavy () 2020-05-23 07:16:49 +02:00
Daniel Marjamäki
08ddd84780 Update copyright year 2020-05-10 11:16:32 +02:00
Daniel Marjamäki
3e0218299b Revert "Update copyright year"
This reverts commit 6eec6c4bd53d42e3a1179fd3a8a7dae5a43d4d50.
2020-05-10 11:13:05 +02:00
Daniel Marjamäki
6eec6c4bd5 Update copyright year 2020-05-10 11:11:34 +02:00
Oliver Stöneberg
1af959af2c
fixed -Wextra-semi-stmt Clang warnings ()
* fixed -Wextra-semi-stmt Clang warnings

* adjusted REDIRECT macro to require a semicolon

* testmathlib.cpp: rolled back accidental change
2020-04-21 17:27:51 +02:00
Paul Fultz II
3773d0e875
Find more redundant conditions () 2020-04-07 07:15:15 +02:00
Daniel Marjamäki
4f1e8bc5e7 astyle formatting
[ci skip]
2020-01-04 18:47:05 +01:00
Ken-Patrick Lehrmann
a9d423eef2 Fix : FP identicalInnerCondition () 2020-01-04 11:38:56 +01:00
Paul Fultz II
dd05839a7e Fix false positives in knownConditionTrueFalse when using expressions with const variables () 2020-01-03 19:35:28 +01:00
Daniel Marjamäki
7cd7aff60a Fixed (Misleading warning message) 2019-11-16 17:24:54 +01:00
Daniel Marjamäki
9094ff01d3 Fixed (knownConditionTrueFalse: False positive about function parameter) 2019-10-31 08:34:09 +01:00
Paul Fultz II
a903aa7070 Fix issue 9351: false negative: (style) Condition '...' is always true () 2019-09-23 08:49:04 +02:00
Paul Fultz II
ad8abdb0c3 Add impossible values to ValueFlow ()
* Add impossible category

* Replace values

* Try to adjust known values

* Add ! for impossible values

* Add impossible with possible values

* Remove contradictions

* Add values when the branch is not dead

* Only copy possible values

* Dont bail on while loops

* Load std lib in valueflow

* Check for function calls

* Fix stl errors

* Fix incorrect impossible check

* Fix heap-after-use error

* Remove impossible values when they are lowered

* Show the bound and remove overlaps

* Infer conditions

* Dont push pointer values through dynamic_cast

* Add test for dynamic_cast issue

* Add shifttoomanybits test

* Add test for div by zero

* Add a test for issue 9315

* Dont make impossible value inconclusive

* Fix FP with shift operator

* Improve handleKnownValuesInLoop for impossible values

* Fix cppcheck warning

* Fix impossible values for ctu

* Bailout for streams

* Check equality conditions

* Fix overflows

* Add regression test for 9332

* Remove duplicate conditions

* Skip impossible values for invalid value

* Check for null

* Rename bound to range

* Formatting
2019-09-20 15:06:37 +02:00
Paul Fultz II
3e0d1141d3 Fix issue 9277: FP: Dont warn for knwon conditions in if constexpr () 2019-08-16 07:56:39 +02:00
Daniel Marjamäki
5dc4f44091 Replace 'unsigned' with 'nonneg' in checkcondition 2019-07-16 08:21:25 +02:00
Daniel Marjamäki
0eedcfc160 Fixed (warn about opposite if and else-if conditions) 2019-06-30 23:26:49 +02:00
Daniel Marjamäki
175070ca50 Revert "Fixed (FP identicalInnerCondition)"
This reverts commit 0edf0b562855f0c6d5569a3995cb380ed1d5fc6e.

This bailout seems to cause many false negatives
2019-06-22 21:57:19 +02:00
Paul Fultz II
c4325bbec3 Fix issue 9103: False positive duplicateConditionAssign ()
* Fix issue 9103: False positive duplicateConditionAssign

* Update conditional message
2019-04-26 12:30:41 +02:00
Daniel Marjamäki
76e13c45c7 temporarily disable duplicateConditionalAssign 2019-04-25 07:44:19 +02:00
Daniel Marjamäki
0edf0b5628 Fixed (FP identicalInnerCondition) 2019-04-22 16:54:59 +02:00
Paul Fultz II
103002578d Add check for duplicate condition and assignment ()
* Add check duplicate condition and expression

* Format

* Add assign token

* Add to classInfo

* Change note messages
2019-04-18 20:20:24 +02:00
orbitcowboy
e47b6bf862 Revert quick fix: 0ace50204b (comments) 2019-04-09 08:38:08 +02:00
orbitcowboy
0ace50204b Fixed a crash on garbage code. The test input was found by afl_cppcheck (type2). Unforunately, the cppcheck-fuzzer-client was crashing only when executing the binary input from afl-fuzz. Using the translated-input (C-code) did not lead to crash. I tested it with activated address/undefined behaviour sanitizer as well as non-instrumented source code. Since the translated output is too long (164 lines), i will not add it the testgarbage.cpp. 2019-04-07 13:27:33 +02:00
Daniel Marjamäki
4ce6de39c5 CheckCondition: Moved checks to 'normal' 2019-03-09 22:00:59 +01:00
Paul Fultz II
0ee3f678b5 Fix issue 8987: False positive knownConditionTrueFalse () 2019-02-20 15:28:31 +01:00
Daniel Marjamäki
bd7790fd8c Update copyright year 2019-02-09 07:24:06 +01:00
Paul Fultz II
4e147a4c59 Add a check for duplicate if statements
This will warn for this:

```cpp
int f(int val)
{
	int i = 0;
	if( val & 0xff)
		i = 1;
	if( val & 0xff)
		i = 1;
        return i;
}
```
2019-01-09 20:41:01 +01:00
Paul Fultz II
9b973e652c Issue 8830: New check: Function argument evaluates to constant value
Add a check for function arguments that can be constant:

```cpp
extern void bar(int);
void f(int x) {
   bar((x & 0x01) >> 7); // function 'bar' is always called with a '0'-argument
}
```
2018-12-17 06:04:24 +01:00
Daniel Marjamäki
b049a31e7c Refactoring; Use visitAstNodes 2018-11-23 20:41:39 +01:00
Paul Fultz II
54453c5802 Fix FP when copying pointer to string () 2018-11-14 06:59:25 +01:00
Daniel Marjamäki
d5a478d5c5 astyle formatting
[ci skip]
2018-11-10 21:30:01 +01:00
rikardfalkeborn
a3e717bea9 Use functions instead of comparing with enum ()
* Use isComparisonOp() instead of enum

* Use isAssignmentOp() instead of enum
2018-11-09 06:30:41 +01:00
Paul Fultz II
7373be2bfa Add a pass in valueflow for terminating conditions ()
* Add valueflow for terminating conditions

* Add valueflow test

* Dont check for same expressions for now to avoid double diagnostics

* Check nesting

* Add more tests

* Ensure conditions happen in order

* Check for null

* Add error path

* Support same expression check as well

* Use early continue

* Skip checking the same token

* Avoid double condtion diagnosis

* Fix FP when in switch statements

* Fix FP when time function

* Skip conditional escapes

* Use simpleMatch

* Fix naming

* Fix typo
2018-11-07 06:49:07 +01:00
Paul Fultz II
fafd0742d4 Fix FPs with return conditions ()
* Fix 8815: FP with identical inner conditions

* Fix issue 8801: FP when not returning a bool

* Fix FP

* Add missing semicolon

* Move returnVar
2018-10-31 09:47:48 +01:00