Daniel Marjamäki
2b4fe66908
Try to make Travis happy
2019-09-27 16:13:43 +02:00
Daniel Marjamäki
f7a8075001
ExprEngine: Disable integerOverflow check
2019-09-27 15:07:56 +02:00
Daniel Marjamäki
7ea8b69235
ExprEngine: Robustness
2019-09-27 14:36:33 +02:00
Daniel Marjamäki
69016e38bc
ExprEngine: Add a temporary overflow check
2019-09-27 14:20:17 +02:00
Daniel Marjamäki
8ccbdfe725
ExprEngine: Better output
2019-09-27 13:30:09 +02:00
Daniel Marjamäki
71aa9a531a
ExprEngine: Create symbolic expression for string arguments
2019-09-27 13:12:16 +02:00
Daniel Marjamäki
7f64faae99
Virtual Destructors: Base class must have virtual destructor no matter if derived class has a destructor or not. There is UB according to paragraph 3 in [expr.delete].
2019-09-27 09:55:56 +02:00
Rikard Falkeborn
0111b4afdc
Silence unused variable warning ( #2223 )
2019-09-27 08:19:45 +02:00
Daniel Marjamäki
350363616c
Fix Cppcheck naming convention
2019-09-27 08:17:46 +02:00
Daniel Marjamäki
dffae8f7d9
Try to make Travis happy
2019-09-26 21:43:29 +02:00
Daniel Marjamäki
371babc322
ExprEngine: Improved handling of structs
2019-09-26 21:35:29 +02:00
Daniel Marjamäki
f47aaed21e
ExprEngine: Improve output
2019-09-26 21:00:36 +02:00
Daniel Marjamäki
f1b42fe05c
ExprEngine: Extend output
2019-09-26 20:49:03 +02:00
Daniel Marjamäki
2e1cbbeb14
ExprEngine: Fix output for StructValue
2019-09-26 19:39:30 +02:00
IOBYTE
d0968a1377
Warn about unknown macro causing template syntax error ( #2222 )
2019-09-26 16:01:01 +02:00
Daniel Marjamäki
cd816f42eb
ExprEngine: fix code for float comparisons
2019-09-26 12:13:14 +02:00
Daniel Marjamäki
b55c587ab2
astyle formatting
...
[ci skip]
2019-09-26 10:32:49 +02:00
Paul Fultz II
597d0fa35b
Support expression in valueFlowAfterCondition ( #2219 )
...
* Add valueFlowForwardExpression function to forward values of an expression
* Use token for expression
* Fix name in bailout message
* Handle expressions
* Add more tests for more expressions
* Add more tests
* Solve the expression if possible
* Formatting
2019-09-26 10:32:25 +02:00
IOBYTE
4475c4c7e2
template simplifier: fix syntax error ( #2218 )
2019-09-26 10:31:19 +02:00
Daniel Marjamäki
d7d22f51b7
ExprEngine: Minor output cleanup
2019-09-26 10:07:31 +02:00
Daniel Marjamäki
c5302d20a3
ExprEngine: ConditionalValues, output symbolic expressions
2019-09-26 10:03:58 +02:00
Rikard Falkeborn
4dbf006dc7
Fix severity of c++14 shifts with too many bits ( #2213 )
...
For c++14, shifting a variable with a value larger than or equal to the
number of bits in the variable is undefined. Left-shifting with a value
equal to the number of bits of the variable is implementation defined.
See also trac ticket #9306 .
2019-09-25 20:16:04 +02:00
Daniel Marjamäki
9e76630a4b
ExprEngine: Restructure handling of arrays to handle dynamic buffers better
2019-09-25 18:33:21 +02:00
Oliver Stöneberg
eac040a00b
Various clang-tidy fixes ( #2192 )
...
* use range loops
* removed redundant string initializations
* use nullptr
* use proper boolean false
* removed unnecessary continue from end of loop
* removed unnecessary c_str() usage
* use emplace_back()
* removed redundant void arguments
2019-09-25 15:25:19 +02:00
Tyson Nottingham
ca5f2562fc
Fix false negatives in checkIncrementBoolean ( #2210 )
...
Detect incrementing boolean expressions involving pointer dereferences,
array element accesses, etc.
2019-09-25 13:07:39 +02:00
IOBYTE
12f93b63a8
template simplifier: fix simplification of "< %num% %comp% %num% >" ( #2214 )
...
* template simplifier: fix simplification of "< %num% %comp% %num% >"
* fix test to not fail on 32 bit platforms
2019-09-25 12:06:29 +02:00
Daniel Marjamäki
0011fb5a36
ExprEngine: Temporary hardcoding for calloc
2019-09-24 22:22:16 +02:00
Daniel Marjamäki
7cf8327b31
ExprEngine: Sign extension in truncateValue
2019-09-24 20:31:12 +02:00
Daniel Marjamäki
0471e74489
ExprEngine: Handle char literals
2019-09-24 20:11:07 +02:00
Daniel Marjamäki
1769af4a6c
ExprEngine: Passing variable address to function
2019-09-24 19:53:33 +02:00
Daniel Marjamäki
ba035074f0
ExprEngine: Extended value truncation
2019-09-24 13:28:14 +02:00
Paul Fultz II
0df4876059
Fix issue 9367: FP knownConditionTrueFalse ( #2209 )
2019-09-24 08:15:03 +02:00
Daniel Marjamäki
c1ff3419a6
ExprEngine: Value truncation
2019-09-23 20:28:12 +02:00
Paul Fultz II
1616282f6b
Use fixed number of iterations for valueflow loop ( #2205 )
2019-09-23 19:35:39 +02:00
Daniel Marjamäki
9025b47f82
ExprEngine: some handling of NULL pointer
2019-09-23 18:10:06 +02:00
Paul Fultz II
a903aa7070
Fix issue 9351: false negative: (style) Condition '...' is always true ( #2201 )
2019-09-23 08:49:04 +02:00
Rikard Falkeborn
bb5ac32872
Fix #7031 (improve error message for memory related warnings) ( #2204 )
...
Printout both the locations on double free errors, mismatching
alloc/dealloc and dealloc return error.
2019-09-22 21:50:02 +02:00
Daniel Marjamäki
28d13e7567
ExprEngine: Implement basic float handling
2019-09-22 21:14:36 +02:00
Rikard Falkeborn
df800e35d4
Fix memleak FP with return with parenthesis ( #2202 )
...
* Fix memleak FP with return with parenthesis
Fix FPs pointed out by daca@home on the following form:
void* f(void) {
void* x = malloc(1);
return(x);
}
Fix it by only skipping tokens if there is an actual match with a
variable. This allows to remove the special casing of "return;".
* Add testcase with cast
2019-09-22 19:18:31 +02:00
Daniel Marjamäki
6e17853ea9
ExprEngine: Guess function call return value
2019-09-22 16:40:48 +02:00
Daniel Marjamäki
5c07cfd2e8
ExprEngine: Better handling of pointer aliasing
2019-09-22 15:58:55 +02:00
Daniel Marjamäki
ec4b7c1f4b
ExprEngine: Better handling of pointers
2019-09-22 10:56:57 +02:00
Daniel Marjamäki
7d6fd915be
ExprEngine: Better handling of compound assignments
2019-09-21 21:15:51 +02:00
Paul Fultz II
c1961cec1c
Fix issue 9362: FP: (style) Condition '(v&1)==0' is always false ( #2200 )
2019-09-21 19:53:54 +02:00
Daniel Marjamäki
da91c139d5
ExprEngine: Passing array to function, array data might be overwritten
2019-09-21 19:34:06 +02:00
Rikard Falkeborn
46ac0d79c1
Checkmemleakautovar: fix crash and FP ( #2196 )
...
This fixes crashes found by daca where valueType() is NULL. Also,
somewhat related, it removes warnings when casting to a type that is
unknown to cppcheck, for example, there is no longer a warning for the
following code:
void* f() {
void *x = malloc(1);
return (mytype)x;
}
2019-09-21 14:59:54 +02:00
Daniel Marjamäki
b2cab003ff
ExprEngine: Fix output for arrays
2019-09-21 14:17:16 +02:00
Daniel Marjamäki
3d0d3ec4c5
ExprEngine: handling array initialization with string literal
2019-09-21 11:36:34 +02:00
Tyson Nottingham
d6a70d27c7
Fix false negatives in checkAssignBoolToFloat and minor related improvements ( #2198 )
...
* Fix false negatives in checkAssignBoolToFloat
Detect assignments to expressions involving pointer dereferences, array
element accesses, etc.
* Pass assignment token to assignBoolToFloatError
Pass assignment token rather than boolean token to make error reporting
consistent between checkAssignBoolToFloat and checkAssignBoolToPointer,
as well as with other assignment checks in the code base.
* Make checkAssignBoolToPointer check consistent with checkAssignBoolToFloat
2019-09-21 08:24:54 +02:00
Paul Fultz II
40f1635c35
Fix issue 9361: false positive: (style) Condition 'isdigit(c)!=0' is always true ( #2199 )
2019-09-21 08:19:54 +02:00