Paul Fultz II
1afd56e964
Fix issue 8785: ValueFlow: Track pointer alias
...
This fixes the issue by making `ProgramMemory` keep track of values based on the conditions.
It also removes the `deadpointer` check since it duplicates the `invalidLifetime` check.
2019-09-03 17:16:15 +02:00
Paul Fultz II
55a78f482b
Fix issue 9293: false negative: uninitvar
2019-09-03 06:46:34 +02:00
Paul Fultz II
dc201d110d
Fix issue 9274: false negative: (error) Buffer is accessed out of bounds (std::string, std::wstring)
2019-09-03 06:43:54 +02:00
Paul Fultz II
88d194214f
Fix FP with invalidContainerRef ( #2141 )
2019-09-03 06:41:35 +02:00
Daniel Marjamäki
7d63bdee6f
astyle formatting
...
[ci skip]
2019-09-02 06:59:07 +02:00
Paul Fultz II
cb509f1a8b
Fix issue 4845: alias to vector element invalid after vector is changed ( #2113 )
...
* Try harder to track ref lifetimes
* Dont add lifetimes for references
* Use correct token
* Check for front and back as well
* Improve handling of addresses
* Formatting
* Fix FP
2019-09-02 06:58:09 +02:00
Paul Fultz II
255c1062e4
Run test fixtures as seperate tests so they can run in parallel ( #2126 )
2019-09-02 06:53:35 +02:00
IOBYTE
fd403bf7e6
template simplifier: only add recursive instantiation if its arguments are a constant expression ( #2138 )
2019-09-02 06:51:19 +02:00
Ken-Patrick Lehrmann
7a75aa084b
Fix crash in CheckUninitVar ( #2129 )
...
http://cppcheck.osuosl.org:8000/ycmd
```
2019-08-30 23:21
ftp://ftp.se.debian.org/debian/pool/main/y/ycmd/ycmd_0+20181101+git600f54d.orig.tar.gz
cppcheck-options: -j1 --library=posix --library=gnu --library=qt --library=python --library=googletest --library=boost -D__GNUC__ --check-library --inconclusive --enable=style,information --platform=unix64 --template=daca2 -rp=temp temp
platform: Linux-4.15.0-58-generic-x86_64-with-Ubuntu-18.04-bionic
python: 2.7.15+
client-version: 1.1.31
cppcheck: head 1.88
count: Crash! 83
elapsed-time: -11.0 61.2
head results:
Checking temp/ycmd-0+20181101+git600f54d/ycmd/tests/clang/testdata/completion_fixit.cc: __GNUC__=1...
Program received signal SIGSEGV, Segmentation fault.
CheckUninitVar::valueFlowUninit (this=this@entry=0x7fffffffb350) at build/checkuninitvar.cpp:2376
2376 if (!tok->variable())
#0 CheckUninitVar::valueFlowUninit (this=this@entry=0x7fffffffb350) at build/checkuninitvar.cpp:2376
#1 0x00005555556901ac in CheckUninitVar::runChecks (this=<optimized out>, tokenizer=0x7fffffffbcb0, settings=0x7fffffffcd10, errorLogger=<optimized out>) at lib/checkuninitvar.h:68
#2 0x00005555556a2210 in CppCheck::checkNormalTokens (this=this@entry=0x7fffffffcaf0, tokenizer=...) at build/cppcheck.cpp:730
#3 0x00005555556a6ee2 in CppCheck::checkFile (this=this@entry=0x7fffffffcaf0, filename="temp/ycmd-0+20181101+git600f54d/ycmd/tests/clang/testdata/completion_fixit.cc", cfgname="", fileStream=...) at build/cppcheck.cpp:540
#4 0x00005555556aad4c in CppCheck::check (this=this@entry=0x7fffffffcaf0, path="temp/ycmd-0+20181101+git600f54d/ycmd/tests/clang/testdata/completion_fixit.cc") at build/cppcheck.cpp:195
#5 0x00005555557ef167 in CppCheckExecutor::check_internal (this=this@entry=0x7fffffffd880, cppcheck=..., argv=argv@entry=0x7fffffffdc08) at cli/cppcheckexecutor.cpp:884
#6 0x00005555557efa9a in CppCheckExecutor::check (this=0x7fffffffd880, argc=17, argv=0x7fffffffdc08) at cli/cppcheckexecutor.cpp:198
#7 0x00005555555b1d1b in main (argc=17, argv=0x7fffffffdc08) at cli/main.cpp:95
```
2019-09-01 14:51:40 +02:00
Ken-Patrick
2c656d6586
Issue 9255: Prevent infinite recursion in parsedecl ( #2134 )
2019-09-01 11:36:02 +02:00
Paul Fultz II
9ef64eb33e
Add regression test for issue 9264: FP nullPointerRedundantCheck - pointer alias ( #2133 )
2019-09-01 09:58:53 +02:00
IOBYTE
3a1aec8850
template simplifier: ignore friend templates ( #2122 )
...
* template simplifier: ignore friend templates
friend templates were interpreted as variable templates
* fix cppcheck warning
2019-09-01 09:56:33 +02:00
Ken-Patrick
d1c6cb9aa5
Fix issue 9304: boolean type of ternary ( #2131 )
...
* Add test cases for 9304
* Fix 9304
2019-09-01 09:51:53 +02:00
Paul Fultz II
121093658d
Fix issue 9202: False positive: std::array, size is a constant ( #2132 )
2019-09-01 09:44:34 +02:00
Ken-Patrick
717aa826d8
Fix false positive in initializationListUsage ( #2128 )
...
https://sourceforge.net/p/cppcheck/discussion/general/thread/d5b690ef19/
Check that we warn only about using the initializer list when we assign
the object being constructed.
2019-08-31 12:27:07 +02:00
Paul Fultz II
e8435b9ecb
Fix issue 9306: Adjust shiftTooManyBitsSigned for C++14 ( #2127 )
2019-08-31 07:40:57 +02:00
Paul Fultz II
0b9e823fc8
Fix issue 9305: False positive uninitvar - struct initialized via function ( #2123 )
2019-08-30 18:32:45 +02:00
Paul Fultz II
2942be53f7
Add more tests for valueFlowUninit ( #2124 )
2019-08-30 08:41:17 +02:00
Sebastian
a501f65c8c
libcurl.cfg: Add library configuration for libcurl ( #2120 )
...
Add curl_easy_*() functions and deprecated functions with warnings.
Add tests and prepare donate-cpu.py
Reference: https://curl.haxx.se/libcurl/c/
2019-08-29 15:11:59 +02:00
Sebastian
8782a5f5e4
lua.cfg: Add Lua C API library configuration with tests ( #2119 )
2019-08-29 11:38:21 +02:00
Paul Fultz II
03fe6795bf
Fix issue 9302: FP uninitvar - struct accessed via pointer ( #2121 )
2019-08-29 08:38:50 +02:00
orbitcowboy
1994cbbb9c
std.cfg: Improved configuration for mbrlen() and extended test cases.
2019-08-27 08:18:19 +02:00
IOBYTE
28a95802a2
template simplifier: fix syntax error false positive (an expression can't be a template) ( #2115 )
...
https://stackoverflow.com/questions/57590411/cppcheck-syntax-error-with-using-typedef
2019-08-27 06:37:58 +02:00
amai2012
1538248922
Fix syntax in test code example
2019-08-26 20:45:14 +02:00
orbitcowboy
c8b7b40cd7
wxwidgets.cfg: Improved support for wxString member functions.
2019-08-25 15:54:50 +02:00
Daniel Marjamäki
4bd9d76a4c
Try to make Travis happy
2019-08-25 10:24:13 +02:00
Daniel Marjamäki
82eec11898
Created redundantInitialization id
2019-08-25 09:45:39 +02:00
Daniel Marjamäki
324e5e581b
Redundant assignments: Fix false positive when reassignment expression contains assembler
2019-08-24 20:15:52 +02:00
Daniel Marjamäki
996daaee4e
STL: Fixed outOfBounds false positive
2019-08-24 15:40:29 +02:00
Daniel Marjamäki
9d26be8380
Fixed #5259 (Improve check: Uninitialized variable not reported when used in array initialization)
2019-08-24 14:43:35 +02:00
Paul Fultz II
5c488b9519
Fix issue 9190: FP uninitvar for struct member ( #2112 )
...
* Fix issue 9190: FP uninitvar for struct member
* Add more test cases
* Fix false negative
2019-08-24 11:27:47 +02:00
Sebastian
f25dcd5cda
python.cfg: Add Py_CLEAR(), and add initial test file ( #2110 )
2019-08-24 10:17:23 +02:00
Daniel Marjamäki
35fb55d76c
Fixed #5259 (Improve check: Uninitialized variable not reported when used in array initialization)
2019-08-24 08:01:55 +02:00
Sebastian
7f50642090
wxwidgets.cfg: Add container configuration for wxString ( #2109 )
2019-08-23 19:10:49 +02:00
versat
50c6af5e5d
astyle formatting
...
[ci skip]
2019-08-23 10:19:29 +02:00
Daniel Marjamäki
7061cc334b
RedundantAssignment: Don't warn for initialization with {0}
2019-08-23 08:51:16 +02:00
Thomas Niederberger
d122b1c722
Fix issue with __declspec and final ( #2107 )
...
* Add missing Qt macros
Add two Qt macros that were missing
* Fix issue with __declspec and final
This change is a bit naive but it fixes the issues I was having when combining __declspec(dllexport) and final classes. Without the fix I get errors along the line of "The code 'class x final :' is not handled. You can use -I or --include to add handling of this code. "
2019-08-23 06:43:02 +02:00
Rikard Falkeborn
fd3cb24973
leakNoReturnVar: Don't break early ( #2095 )
...
There seems to be no reason for stopping checking the scope if a call to
free() is seen (or fclose() or realloc()), so just continue checking.
Also, if there are multiple arguments, check all, perhaps there are more
memory leaks to warn about.
2019-08-23 06:33:00 +02:00
Paul Fultz II
c0a8d628b9
Fix issue 6010: Uninitialized inner struct ( #2098 )
...
* Fix issue 6010: Uninitialized inner struct
* Show to root variable that is unitialized
* Warn on pointer dereferences
2019-08-23 06:23:20 +02:00
Rikard Falkeborn
5b5d943976
Remove testfiles.pri ( #2106 )
...
qmake is not used to build tests. The only user of testfiles.pri was
removed in 392cda8bce
in december 2015.
2019-08-21 06:51:08 +02:00
Sebastian
2c673bd380
qt.cfg: Add container configuration for QStack (inherits from QVector) ( #2102 )
2019-08-20 20:37:52 +02:00
IOBYTE
4b231c53a4
Fixed #9287 and #9288 (Syntax error on valid C++ code) ( #2104 )
2019-08-20 20:25:18 +02:00
Sebastian
a2a874dbd5
gtk.cfg: Add/enhance function configurations and tests. ( #2101 )
...
Add/enhance:
g_once_init_enter(), g_once_init_leave() and g_signal_emit_by_name()
2019-08-20 15:00:30 +02:00
Daniel Marjamäki
ef47d3d304
Fixed #9286 (FP: syntax error: { .abc.a = 1)
2019-08-20 13:56:38 +02:00
Sebastian
26dfee58f8
qt.cfg: Add QLinkedList container configuration and some tests. ( #2099 )
2019-08-20 07:09:43 +02:00
Paul Fultz II
1f747d0b14
Add regression test for 9281 ( #2097 )
2019-08-19 09:09:07 +02:00
Daniel Marjamäki
a5ba82c2d3
Fixed #9260 (--template=gcc does not work correctly with -j)
2019-08-18 16:33:32 +02:00
Daniel Marjamäki
d95f29b23a
Fixed test/cli
2019-08-18 12:51:32 +02:00
Daniel Marjamäki
2d9a131817
Refactoring: Rename variables. Do not use leading _. Renamed 'col' to 'column'
2019-08-18 12:19:05 +02:00
Daniel Marjamäki
5f2379f3d1
astyle formatting
...
[ci skip]
2019-08-18 09:07:57 +02:00
Daniel Marjamäki
de9b928d98
ErrorLogger: add 'column' in serializer/deserializer
2019-08-18 09:06:40 +02:00
Daniel Marjamäki
016647d1d5
Fix testrunner
2019-08-18 09:02:13 +02:00
Daniel Marjamäki
2471266f12
test/cli: test unmatchedSuppression handling separately
2019-08-17 17:51:48 +02:00
Daniel Marjamäki
1fdae247b3
test/cli: ensure that there is unmatchedSuppression warning
2019-08-17 17:49:22 +02:00
Daniel Marjamäki
530a1a1c68
Remove test/cfg/unmatchedSuppressionTest.c: This testing belongs better in test/cli.
2019-08-17 17:18:44 +02:00
Daniel Marjamäki
eaf7224f6a
testrunner: Fix assertion error
2019-08-17 15:12:49 +02:00
Daniel Marjamäki
a17f2a6f05
Compiling/Installing : The CFGDIR parameter was removed. Use FILESDIR instead.
2019-08-17 10:53:07 +02:00
IOBYTE
04bb6c0d1f
template simplifier: fix new daca crashes ( #2093 )
2019-08-17 07:38:07 +02:00
Paul Fultz II
ee7fe3aaa1
Fix FP: Unitialized variable when using a pointer
...
This fixes the FP in cases like this:
```cpp
void f() {
bool b;
bool * x = &b;
if (x != nullptr)
x = 1;
}
```
It tracks the indirection of the uninit value in valueflow.
2019-08-17 07:36:41 +02:00
Paul Fultz II
3e0d1141d3
Fix issue 9277: FP: Dont warn for knwon conditions in if constexpr ( #2085 )
2019-08-16 07:56:39 +02:00
Paul Fultz II
3aef0c9bd3
Fix issue 8715: regression uninitvar not detected ( #2092 )
2019-08-16 07:48:54 +02:00
Paul Fultz II
ef714225bb
Use library to track container lifetimes
2019-08-15 21:14:54 +02:00
Sebastian
544bedc6ee
qt.cfg: Add QByteArray container configuration (similar to QString) ( #2088 )
...
Reference: https://doc.qt.io/qt-5/qbytearray.html
2019-08-15 16:14:17 +02:00
Paul Fultz II
af214e8212
Fix issue 8825: ValueFlow: uninitialized struct member ( #2087 )
...
* Pass uninit value across pointers
* Add more testing
2019-08-15 10:44:55 +02:00
Sebastian
81edb23c16
qt.cfg: Fix and enhance Qt container configuration ( #2055 )
...
-Add iterator end patterns
-Add/fix size and access functions
-Remove marking QList and QStringList as std-like strings
-QStringList configuration now inherits from QList like it is actually the case
-Add tests
2019-08-15 10:23:05 +02:00
orbitcowboy
4b41f19c87
insecureCmdLineArgs: Added more test cases to ensure 'const'-qualifiers are handled correctly.
2019-08-15 08:45:31 +02:00
Rikard Falkeborn
fc1d5b187f
leakNoVarFunctionCall: Use AST more ( fix #9252 ) ( #2086 )
...
Use the AST a little bit more to improve the check. In order to do so,
rewrite the check to work from the outer function first and then check
the arguments, instead of the other way around.
It also fixes Trac ticket #9252 , no warning is now given for
void* malloc1() {
return(malloc1(1));
}
This FP seems to be common in daca results.
It also makes it possible to improve handling of casts, for example
cppcheck now warns about
void f() {
strcpy(a, (void*) strdup(p));
}
But not for
char* f() {
char* ret = (char*)strcpy(malloc(10), "abc");
return ret;
}
These FP/FN were introduced when the check was switched to use the
simplified token list.
2019-08-14 22:01:40 +02:00
Paul Fultz II
4f76588f98
Fix issue 9275: False positive: Non-local object uses local variable ( #2084 )
2019-08-14 20:09:33 +02:00
Paul Fultz II
0c1dff5c93
Fix issue 9268: false negative: (style) Condition '...' is always true ( #2080 )
...
* Fix issue 9268: false negative: (style) Condition '...' is always true
* Fix copy and paste mistake
2019-08-14 06:34:27 +02:00
Paul Fultz II
13df5b2413
Fix FP with negative index and negated condition ( #2081 )
2019-08-14 06:32:31 +02:00
Daniel Marjamäki
d4549217d0
Renamed safeClassRefMember => unsafeClassRefMember
2019-08-13 20:58:31 +02:00
Daniel Marjamäki
41f8c1b281
Fixed #9271 (Safe classes: Class that store references)
2019-08-13 20:40:48 +02:00
Paul Fultz II
c0c6f92221
Fix issue 8431 and 8776: Size of constant string
...
Fixes these cases:
```cpp
void f(void) {
const std::string msg="xyz";
if(!msg.empty()){} // Always true
}
```
And out of bounds access:
```cpp
#include <string>
char fstr1(){const std::string s = "<a><b>"; return s[42]; }
wchar_t fwstr1(){const std::wstring s = L"<a><b>"; return s[42]; }
```
2019-08-12 20:24:16 +02:00
Paul Fultz II
68e8253920
Fix issue 8313 and 7326: Track values of pointer aliases in valueflow
2019-08-12 12:58:53 +02:00
Rikard Falkeborn
cd36f8ed0a
Fix #9253 : leakNoVarFunctionCall: do not warn if freopen opens standard stream ( #2076 )
...
This fixes false positives from daca@home where freopen is used to
reopen a standard stream. There is no longer a warning for
void f() {
assert(freopen("/dev/null", "r", stdin));
}
2019-08-12 12:53:59 +02:00
Paul Fultz II
aadc404958
Issue 8634: false negative: (style) Condition '...' is always true ( #2075 )
2019-08-12 11:04:01 +02:00
Paul Fultz II
9aa97cbb95
Fix issue 8296: ValueFlow: value not set in conditional scope in subfunction ( #2071 )
...
* Fix issue 8296: ValueFlow: value not set in conditional scope in subfunction
* Refactor condition checkingg
* Make test case TODO
2019-08-11 15:39:37 +02:00
Paul Fultz II
bd02ca5ccb
Fix issue 9207: Not detected 'always true' and unreachable code
2019-08-08 07:46:47 +02:00
Daniel Marjamäki
9fa1a5a540
astyle formatting
...
[ci skip]
2019-08-07 08:05:46 +02:00
IOBYTE
c6c50567cf
Fix #9250 (Regression: crash in gcc testsuite) ( #2067 )
...
* Fix #9250 (Regression: crash in gcc testsuite)
* fix cppcheck warning
2019-08-07 08:05:02 +02:00
Ken-Patrick
cb0b057595
8706 ( #2066 )
...
* 8706
* Add test case for #8706
2019-08-07 08:04:10 +02:00
Paul Fultz II
aaeec462e6
Re-enable valueFlowSubFunction ( #2063 )
...
* Re-enable valueFlowSubFunction
* Formatting
* Skip ternary operators in subfunctions
* Fix test with iostreams
* Fix FP with multiple parameters
2019-08-05 16:26:32 +02:00
Daniel Marjamäki
20278d9c92
Clarify signConversion warning message
2019-08-05 12:41:08 +02:00
Paul Fultz II
ffdd2dc793
Fix issue 8924: Re-enable valueFlowTerminatingCondition
2019-08-05 07:18:06 +02:00
IOBYTE
7ebc9d1b5f
Fix #9249 (Syntax error on valid C++) ( #2062 )
2019-08-04 10:24:44 +02:00
Daniel Marjamäki
510748134f
Fixed #9234 (FP unreadVariable - assignment via iterator)
2019-08-04 10:21:16 +02:00
Daniel Marjamäki
ce53931d00
Fixed #9251 (False positive: unininitialized variable (multi variables))
2019-08-03 21:12:34 +02:00
Daniel Marjamäki
cdc602e1be
Fixed #9137 (Tokenizer: Wrong handling of volatile pointer)
2019-08-03 12:28:50 +02:00
Daniel Marjamäki
c03df8e6b4
SymbolDatabase: Improved matchParameter for containers
2019-08-03 10:10:40 +02:00
IOBYTE
2da83df37b
Fix #9246 (Syntax error on C++ code) ( #2061 )
2019-08-03 08:15:06 +02:00
Daniel Marjamäki
e66e6549ee
SymbolDatabase: Improved ValueType::matchParameter handling of containers
2019-08-02 15:59:22 +02:00
versat
2519a1aed5
gnu.cfg: Add more __builtin_* functions and some tests
...
Most of them were detected by daca@home
2019-08-02 12:27:46 +02:00
Daniel Marjamäki
41549f4801
Try to fix Cppcheck warning to make Cppcheck happy
2019-08-02 07:57:34 +02:00
IOBYTE
0d1685cd29
Fix #9178 example with instantiation ( #2059 )
2019-08-02 07:53:39 +02:00
Sebastian
5390588cda
gnu.cfg: Add xfree() ( #2051 )
...
It is hard to find good references, one that describes it a bit can
be found here:
https://manpages.ubuntu.com/manpages/bionic/man3/xmalloc.3pub.html
xfree() can be used instead of free().
A check, to verify that a memory leak is found if the memory allocated
via xmalloc() is not freed, has also been added.
2019-08-02 07:41:32 +02:00
amai2012
29596baa92
Refactoring: Convert enum Direction to enum class
2019-08-01 20:56:02 +02:00
Rikard Falkeborn
f6726b76ae
Fix 9215 (add tilde for missing destructor override warning) ( #2057 )
2019-08-01 10:43:45 +02:00
amai2012
b0fbbb5aa7
Convert SHOWTIME_MODES to enum class
2019-07-31 22:35:51 +02:00
Daniel Marjamäki
8deb855b41
Fix ValueType::matchParameter for 'const float *' => 'signed long long'
2019-07-31 18:55:55 +02:00
Daniel Marjamäki
c51f44ce4c
SymbolDatabase: extend usage of ValueType::matchParameter for variable parameters
2019-07-31 18:24:15 +02:00
Daniel Marjamäki
1eb5f2266c
ValueType::matchParameter: Fix matching of char** and void*
2019-07-31 16:23:50 +02:00
Sebastian
549452b7b9
qt.cfg: Add container and function configurations for QVector ( #2052 )
...
Reference: https://doc.qt.io/qt-5/qvector.html
2019-07-31 13:58:55 +02:00
Daniel Marjamäki
a3dc2db77a
SymbolDatabase: Use ValueType::matchParameter for variable address parameters
2019-07-31 12:38:36 +02:00
Daniel Marjamäki
039d49bcb1
Improve ValueType::matchParameter for pointers with different types
2019-07-31 12:12:17 +02:00
Daniel Marjamäki
728ac6ae2e
SymbolDatabase: Use ValueType::matchParameter for char literal parameters
2019-07-31 09:35:32 +02:00
IOBYTE
9436f72a94
Fix daca dnsdist crash ( #2053 )
2019-07-31 09:18:43 +02:00
Daniel Marjamäki
e58e51ee14
SymbolDatabase::findFunction: For string literal, a std::string parameter is a better match than a void* parameter
2019-07-30 21:20:01 +02:00
Daniel Marjamäki
d5d50d9b17
ValueType::matchParameter: Improved constness matching
2019-07-30 09:19:51 +02:00
Daniel Marjamäki
3066c0653c
Fixed #8668 (SymbolDatabase: Wrong findFunction match for const pointer argument)
2019-07-29 18:14:23 +02:00
Daniel Marjamäki
607b3daca8
ValueFlow: Improve bailout for structs etc in loops
2019-07-29 15:51:48 +02:00
Daniel Marjamäki
a1214348c0
Fixed #8974 (false negative regression about never used variable)
2019-07-29 08:49:19 +02:00
Daniel Marjamäki
602911cfca
Activate a TODO test case
2019-07-29 08:06:57 +02:00
Daniel Marjamäki
a178d05cc5
Changed TODO test case, I do not see why it should warn.
2019-07-29 07:51:00 +02:00
IOBYTE
07ac6c5f08
Fix ternary operator simplification to accept template parameters. ( #2048 )
...
Also simplify decltype of bool and numeric literals in template
arguments.
2019-07-28 21:52:52 +02:00
IOBYTE
badc573b80
Fix #9224 (Performance regression in template parsing: 250x - 1200x slower) ( #2046 )
2019-07-28 09:25:18 +02:00
Daniel Marjamäki
e8ec6e6f11
Fixed #8349 (Noisy nullPointerRedundantCheck)
2019-07-27 20:03:06 +02:00
Daniel Marjamäki
1c75257212
Token::hasKnownIntValue: Fix when there is one possible int value and one known BUFFER_SIZE value, it should return false.
2019-07-27 08:25:07 +02:00
Rikard Falkeborn
f95d193e22
Fix #8282 (memleak FP when returning std::pair) ( #2039 )
2019-07-26 07:03:58 +02:00
Paul Fultz II
ee28a45db4
Fix issue 9235: new crash in astutils isVariableChanged from endless recursion ( #2040 )
2019-07-26 07:03:21 +02:00
Paul Fultz II
b049fd9303
Improve propogation of lifetimes of function arguments
...
This will now warn for cases like this:
```cpp
int* f(int * x) {
return x;
}
int * g(int x) {
return f(&x);
}
````
2019-07-26 07:02:07 +02:00
Rikard Falkeborn
a69a570505
Fix FP leakVarNotUsed with freopen() and stdin ( #2034 )
...
One usecase for freopen() is to redirect input and output streams to
files. For that, the return value is not needed.
2019-07-25 21:09:23 +02:00
Paul Fultz II
744a94ad5a
Fix issue 9231: FP constParameter - argument passed parent ctor ( #2032 )
2019-07-24 20:59:58 +02:00
IOBYTE
999d2f797c
Fix #9225 (Crash on valid C++14 code) ( #2031 )
...
* Fix #9225 (Crash on valid C++14 code)
This only fixes the crash. Specialization of nested templates is still
broken.
* fix cppcheck warnings
* fixed another cppcheck warning
2019-07-24 19:20:19 +02:00
Daniel Marjamäki
bbcffce529
Fixed #9062 (False positive "condition is always true")
2019-07-24 19:16:35 +02:00
Daniel Marjamäki
e11dcc609b
Fixed #7758 (Function array is seen as Uninitialized)
2019-07-24 18:20:23 +02:00
Daniel Marjamäki
7c0b011c05
Fixed #9230 (Improve check: integer conversion overflow in return)
2019-07-24 16:17:52 +02:00
Daniel Marjamäki
2da75d5af4
Split up Cppcheck attribute. low and high values can be specified separately and they can be used for variables also.
2019-07-24 15:08:26 +02:00
Daniel Marjamäki
cab9f61b79
safe checks: Handle float parameters
2019-07-24 12:09:13 +02:00
Daniel Marjamäki
10be2a1941
Safe checks: container parameters
2019-07-24 11:39:35 +02:00
Daniel Marjamäki
8959c5a9d0
Rename valueFlowAllFunctionParameterValues => valueFlowSafeFunctionParameterValues
2019-07-24 10:57:35 +02:00
Paul Fultz II
bb52a63c4e
Add check for const variables
...
When a local reference is declared, this will check if that local reference can be declared as `const`.
2019-07-24 09:59:01 +02:00
Paul Fultz II
3ec3bd52e0
Fix FP when using a pointer to a container ( #2029 )
2019-07-24 00:04:49 +02:00
Paul Fultz II
ab0fcc7640
Fix issue 9216: reset() method confusion ( #2025 )
...
* Fix issue 9216 with smart pointer reset
* Check for arrow
2019-07-23 22:45:58 +02:00
Paul Fultz II
60b670babd
Fix issue 9219: False positive, returnDanglingLifetime ( #2026 )
...
* Check for pointer deref for container methods
* Formatting
2019-07-23 21:59:05 +02:00
IOBYTE
5ad5cfcc29
Fix #9217 (Regression: Memory explodes in simplifyTemplateAliases) ( #2021 )
...
* Fix #9217 (Regression: Memory explodes in simplifyTemplateAliases)
* fix use after free when nothing was copied
2019-07-23 21:28:24 +02:00
Daniel Marjamäki
4fb6c27276
Modernize: Use enum class
2019-07-23 14:29:02 +02:00
Daniel Marjamäki
c8bc88e7e2
Fix compiler error
2019-07-23 13:14:08 +02:00
Rikard Falkeborn
8cd1d5a47d
Use library for memleak checks ( #2002 )
...
* Use library for memleak checks
Change memleakOnRealloc and leakReturnValNotUsed to use library
configuration instead of hardcoding "realloc".
In order to do so, some care needs to be taken when matching for a
reallocation function, since it can no longer be assumed that the input
to be allocated is the first argument of the function. This complicates
getReallocationType() and checkReallocUsage() but is necessary in order
to handle for example freopen() properly.
Also, refactor memleakOnRealloc check to reduce duplicated code when
checking "a" and "*a". When doing so, extending the check to look for
arbitrary number of "*" can be done for free (just change an if
statement to a while statement). Most likely, this is an unusual case in
real world code.
* Remove redundant whitespace in Token::Match()
* Run on simplified checks
* Fix cppcheck warning
2019-07-22 10:37:36 +02:00
Rikard Falkeborn
06337cedf5
Run more tests on full token list ( #2020 )
...
Since all checks are run on the full token list and not the simplified
one, run the tests on the full token list as well.
2019-07-22 10:26:55 +02:00
Rikard Falkeborn
abea580b78
Fix FP memory leak with unknown function call in condition ( #2012 )
...
* Fix FP memory leak with unknown function call in condition
This was introduced in 8513fb81d2
when
fixing memory leaks for global variables allocated in condition. The
refactored code had an inconsistency where c and c++ code behaved
slightly differently when `var` is NULL. This seemed to not have an
impact as the code was written prior to 8513fb81d2
,
but when the same code was used for conditions, FPs were introduced.
The introduced FPs were memleak warnings when there should have been an
information message about missing configurations for code like
void f() {
char *p = malloc(10);
if (set_data(p)) {}
}
Fix this by always returning true if varTok->Variable() is NULL for
both c and c++ code.
* Improve function name
2019-07-18 15:23:19 +02:00
Paul Fultz II
a08a9c1349
Switch to use lifetime analysis for iterators and pointers to invalid containers
...
This will diagnose more issues such as:
```cpp
void f(std::vector<int> &v) {
auto v0 = v.begin();
v.push_back(123);
std::cout << *v0 << std::endl;
}
```
2019-07-18 10:56:44 +02:00
Daniel Marjamäki
421a8da6a8
Try to clarify signConversion message
2019-07-17 22:41:24 +02:00
Daniel Marjamäki
d11d6f112e
Detect shadowed arguments
2019-07-17 17:08:42 +02:00
Daniel Marjamäki
90a215af0e
Rephraze performance message. /would be faster/could be faster/ to indicate that Cppcheck is not _sure_ that it would be faster
2019-07-17 16:06:10 +02:00
Daniel Marjamäki
64ef879ebf
Fix syntaxError for struct initialization
2019-07-17 15:21:17 +02:00
Daniel Marjamäki
9973db3a71
Modernize: Use enum class for Library::Action and Library::Yield
2019-07-17 11:39:30 +02:00
Daniel Marjamäki
5800692fa1
Move and refactor the CheckMemoryLeak::isclass
2019-07-17 08:59:09 +02:00
Rikard Falkeborn
8513fb81d2
Fix #9206 (FP with global variable allocated in condition) ( #2007 )
2019-07-17 07:43:07 +02:00
Daniel Marjamäki
b3688f22e8
Unknown macro: Detect and warn about unknown macro before throw/return
2019-07-16 20:32:46 +02:00
Daniel Marjamäki
5a6b89100d
Removed casts
2019-07-16 09:14:44 +02:00