Daniel Marjamäki
1393c1c3a0
AST: Try to handle C++17 syntax 'if (init;expr)'
2019-04-12 17:35:06 +02:00
Daniel Marjamäki
b04d1815ed
Add -std=c++17 and allow semicolon in 'if ()'
2019-04-12 09:10:25 +02:00
Daniel Marjamäki
cb06aebdab
Removed --std=posix. From now on, if you use --library=posix then the posix checks will be enabled.
2019-04-12 06:47:28 +02:00
Daniel Marjamäki
dfe417c369
msvc compatibility: /constexpr/const/
2019-04-11 21:06:37 +02:00
Daniel Marjamäki
c9172b169a
Improved handling of paths when importing cppcheck gui project
2019-04-11 21:02:49 +02:00
Daniel Marjamäki
7ede0feb2c
Better handling for excluded paths
2019-04-11 18:46:57 +02:00
Daniel Marjamäki
f6f8e2c192
Travis: Try to make travis happy by temporary setting checkUnusedTemplates to true
2019-04-10 20:27:24 +02:00
Daniel Marjamäki
e27b54664e
appveyor: /constexpr/const/
2019-04-10 19:15:56 +02:00
Daniel Marjamäki
2015f25a84
addon: Fix parsing of addon output
2019-04-10 18:28:46 +02:00
Daniel Marjamäki
42fdb1f826
ImportProject: checkHeaders, checkUnusedTemplates, maxCtuDepth
2019-04-10 17:04:18 +02:00
Daniel Marjamäki
f6b410b469
GUI: add setting for 'checkHeaders', 'checkUnusedTemplates' and 'maxCtuDepth' to project
2019-04-10 16:49:24 +02:00
IOBYTE
3094026e59
template simplifier: fix cppcheck warnings ( #1793 )
2019-04-09 20:07:13 +02:00
orbitcowboy
e47b6bf862
Revert quick fix: 0ace50204b (comments)
2019-04-09 08:38:08 +02:00
Daniel Marjamäki
cf6f886a68
Addons: try to create dump file in cppcheck build dir
2019-04-09 07:05:41 +02:00
Daniel Marjamäki
1f68e038be
Addons: Describe running addons from cppcheck in the manual
2019-04-08 21:31:38 +02:00
Daniel Marjamäki
44dcbda88e
Addons: Fixed handling of addon configuration
2019-04-08 19:42:16 +02:00
Daniel Marjamäki
7610513c49
Fixed #9090 (Do not simplify standard functions)
2019-04-08 19:00:46 +02:00
Daniel Marjamäki
4bb06eceeb
astyle formatting
...
[ci skip]
2019-04-08 18:53:14 +02:00
Márton Csordás
ca3c59fa6f
Add missing line feed to the generated plist output ( #1792 )
...
Add missing line feed to the generated plist output because DOS
uses carriage return and line feed as a line ending.
2019-04-08 18:09:18 +02:00
Daniel Marjamäki
50a5763cf5
Addons: Make it possible to configure any addon with json
2019-04-08 18:07:23 +02:00
Daniel Marjamäki
a508b2abfd
Addons: Add same handling in Windows as in Linux
2019-04-07 19:53:34 +02:00
Daniel Marjamäki
bf9006737a
Addons: Adding support in Cppcheck CLI to execute addons
2019-04-07 17:01:59 +02:00
orbitcowboy
64f0744242
Merge branch 'master' of https://github.com/danmar/cppcheck
2019-04-07 13:27:47 +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
6d7ec98dd6
Import Project: import suppressions from gui project
2019-04-07 13:15:25 +02:00
Daniel Marjamäki
111db91387
ImportProject: Import excluded paths properly
2019-04-07 12:31:52 +02:00
Daniel Marjamäki
3701db96a3
Refactoring; use range for loop
2019-04-07 11:58:42 +02:00
Daniel Marjamäki
83106d5827
Unused templates: Remove unused template function with variadic arguments
2019-04-07 08:37:04 +02:00
Rikard Falkeborn
82a1e3c61c
CheckInternal: Extend redundant null pointer check before Token::Match() ( #1789 )
...
Improve the internal check for redundant null pointer check before
calling Token::Match() (and friends). Now, warn about code snippets like
if (a && tok && Token::Match(tok, "foo"))
Also, extend the check for the inverted case.
There is still no warning for
if (tok && a && Token::Match(tok, "foo"))
since that would require checking if a is independent of tok.
2019-04-06 07:44:44 +02:00
Rikard Falkeborn
d23e987941
Fix CheckInternal warnings ( #1790 )
2019-04-06 06:55:46 +02:00
Rikard Falkeborn
295153df72
Checkstring fixes ( #1783 )
...
* teststring.cpp: Fix ternary syntax in tests
* stringLiteralWrite: Add tests wide character and utf16 strings
* suspiciousStringCompare: Add test with wide character string
* strPlusChar: Handle wide characters
* incorrectStringCompare: Add test with wide string
* Suspicious string compare: suggest wcscmp for wide strings
* deadStrcmp: Extend to handle wide strings
* sprintfOverlappingData: Print name of strcmp function
* Conversion of char literal to boolean, add wide character tests
* Conversion of char literal to boolean, fix ternary
2019-04-06 06:54:38 +02:00
Oliver Stöneberg
16ebb90b32
library.cpp: optimized Library::detectContainer() ( #1778 )
...
* library.cpp: optimized Library::detectContainer()
reduces Ir from 5882 to 1149 according to callgrind
* fixed hang in tests
2019-04-06 06:42:01 +02:00
IOBYTE
5cdde701ba
template simplifier: add minimal template template support ( #1779 )
2019-04-04 06:07:49 +02:00
Daniel Marjamäki
de4f57ec0f
Buffer overflow: Add CTU checking for pointer arithmetic overflows
2019-04-03 06:43:56 +02:00
IOBYTE
9f3ecdde31
Fixed #9076 (Template Simplifier : template < template <typename> T >) ( #1777 )
...
This does not add support for template templates. It only skips the
template template parameter.
2019-04-03 06:02:38 +02:00
Daniel Marjamäki
3f9dd4c567
Variable scope: Fix FP for reference variable in range for loop
2019-04-02 12:59:24 +02:00
IOBYTE
f5cb289b7d
template simplifier: fix another crash ( #1774 )
...
This fixes a daca crash in Vc-1.3.3/tests/casts.cpp.
2019-04-02 09:00:11 +02:00
Daniel Marjamäki
761f18c75c
Fixed #8988 (False positive: using memset on struct)
2019-04-01 19:32:03 +02:00
IOBYTE
165cce5dcc
template simplifier: fix some crashes ( #1772 )
...
Fix some crashes caused by the template simplifier generating bad code
for some instantiations.
Sorry but there are no tests because I was unable to get C-Reduce to
create examples that were not garbage code.
2019-04-01 08:04:47 +02:00
Daniel Marjamäki
0368648aff
debug warnings; report missing type for auto tokens
2019-03-31 17:38:00 +02:00
Daniel Marjamäki
fbc769266c
Fixed #9060 (TemplateSimplifier::templateParameters : var <...>)
2019-03-31 16:29:28 +02:00
Daniel Marjamäki
0efddc4010
astyle formatting
...
[ci skip]
2019-03-31 16:20:06 +02:00
Daniel Marjamäki
29a5404d1e
Incomplete statement: Fix FP for 'ar & x'
2019-03-31 11:50:57 +02:00
Daniel Marjamäki
73433c2961
Syntax error: Clarify a syntax error in audacity
2019-03-31 10:46:59 +02:00
Daniel Marjamäki
b30d463baf
Fix wrong syntax error
2019-03-31 09:34:19 +02:00
Daniel Marjamäki
c5807459f9
CheckBufferOverrun: Add check for pointer arithmetics
2019-03-31 09:00:52 +02:00
Daniel Marjamäki
51b64191e5
Fixed slow checking in FwdAnalysis
...
Credit to OSS-Fuzz for reporting this!
2019-03-30 14:22:24 +01:00
Daniel Marjamäki
b0c58f2b10
Fixed #9000 (SymbolDatabase: lambda scope)
2019-03-30 10:32:36 +01:00
Daniel Marjamäki
fe285f1df3
Fixed #9055 (SymbolDatabase: second argument is missing in the symbol database)
2019-03-30 07:44:36 +01:00
IOBYTE
d88ee2d6a2
Fixed #9070 (Segmentation fault in TemplateSimplifier::simplifyTemplateAliases (scram package)) ( #1771 )
...
This only fixes the crash. It does not fix the underlying problem of
template using with templates of templates causing the use of deleted
instantiations.
2019-03-30 06:53:17 +01:00
Sebastian
d233b56d58
Fix #9079 (make checkcfg crashes on Linux) ( #1769 )
...
temp.bufferSizeArg2 was not initialized when only bufferSizeArg1
was specified or the value was out of range. But in valueflow.cpp in
valueFlowDynamicBufferSize() it was used as if it is always initialized
and has a sane value (greater than 0).
2019-03-30 05:58:23 +01:00
Daniel Marjamäki
b5a285319c
Fixed #9073 (Segmentation fault in Token::isUnaryOp() with ode)
2019-03-29 19:37:23 +01:00
Daniel Marjamäki
54bea2847a
STL: Better out of bounds checking for empty containers when index is unknown
2019-03-29 15:20:17 +01:00
Daniel Marjamäki
3c30d274a0
Clarify STL out of bounds warning message
2019-03-29 11:13:25 +01:00
Daniel Marjamäki
e88a0c00c1
Fixed #9039 (STL: array index out of bounds: str.begin() + 1)
2019-03-28 12:49:52 +01:00
IOBYTE
22f01f035c
Fixed #9042 (Another `using BOOL` type breach) ( #1765 )
2019-03-27 21:42:50 +01:00
Daniel Marjamäki
0f6a90c595
Fixed #9069 (crash on invalid code: ' x= y{ } name5 ')
...
Credit to OSS-Fuzz for reporting this!
2019-03-27 18:17:11 +01:00
Daniel Marjamäki
4a45655bc2
astyle formatting
...
[ci skip]
2019-03-27 18:15:12 +01:00
Frank Zingsheim
574b77cf1f
Fixed: FP return reference to thread_local variable ( #1758 )
2019-03-27 12:22:53 +01:00
Oliver Stöneberg
88dc74929a
Add defines set by compiler options when using compilation database ( #1763 )
...
* Add defines set by compiler options when using compilation database
sets __cplusplus and __STDC_VERSION__ based on -std and the defines for -municode, -fpie, -fPIE, -fpic and -fPIC
* Fixed merge
2019-03-27 10:23:04 +01:00
Daniel Marjamäki
c77f31319d
Fix crash when checking re2c textfile
2019-03-26 20:51:41 +01:00
Daniel Marjamäki
7c6f21a158
astyle formatting
2019-03-26 20:51:04 +01:00
Daniel Marjamäki
c262aeffdd
Fixed #9068 (crash on invalid code)
2019-03-26 19:57:32 +01:00
firewave
ce11778a20
fixed parsing of -std= in compilation database
2019-03-26 19:02:08 +01:00
Sebastian
29815b2dd8
Fix #8922 (SIGSEGV below exprDependsOnThis - stack overflow?) ( #1761 )
...
This limits the recursion depth as a last line of defense to avoid stack
overflows when there are really huge arrays.
See https://trac.cppcheck.net/ticket/8922
2019-03-26 18:57:01 +01:00
Daniel Marjamäki
15676612c0
Fixed #9034 (crash on reading invalid code: '> typedef')
2019-03-26 16:14:24 +01:00
IOBYTE
5b72e1f568
Fixed #9040 (Type alias 'BOOL' declared with 'using' keyword breaks type detection) ( #1759 )
...
Moved simplifyUsing from TemplateSimplifier to Tokenizer.
2019-03-26 07:09:56 +01:00
Daniel Marjamäki
49e2f9d551
Fixed #9063 (Crash on invalid code: x='0' ++ '0' ( return)[ ];)
2019-03-25 15:29:23 +01:00
IOBYTE
10fcf731d9
Fixed #9021 (template simplifier: crash in simplifyCalculations) ( #1757 )
2019-03-25 14:56:51 +01:00
IOBYTE
b6faa11fbf
Fixed #9056 ("using namespace" inside namespace causes "SymbolDatabase bailout;) ( #1753 )
...
Fixed the bailout warning and one of the varid bugs.
The trailing return type still has a varid.
2019-03-24 17:31:34 +01:00
Daniel Marjamäki
7995b2fb86
getArguments: Avoid too deep recursion in array initialization
2019-03-24 11:51:28 +01:00
Daniel Marjamäki
e0f1418228
Fixed #9034 (Tokenizer::setVarId: function call parameter is not variable declaration)
2019-03-24 07:06:21 +01:00
Daniel Marjamäki
18aa968a7a
Astyle formatting
2019-03-23 19:03:57 +01:00
Daniel Marjamäki
5126e4b1af
Try to fix Visual Studio compiler error
2019-03-23 19:02:05 +01:00
Daniel Marjamäki
418eb43d45
Fixed #9032 (False-positive detection of reassigned value before used for pointer parameter)
2019-03-23 19:01:02 +01:00
Daniel Marjamäki
d82c792c1b
astyle formatting
2019-03-23 19:00:03 +01:00
Daniel Marjamäki
a9082c902a
Fixed #9058 (crash on invalid code in FwdAnalysis::checkRecursive)
2019-03-23 18:27:41 +01:00
Daniel Marjamäki
d6b806c592
CheckBufferOverrun: Better CTU checking when variable address is passed
2019-03-23 15:57:17 +01:00
Daniel Marjamäki
d27a4ad82e
CheckBufferOverrun: Fix ctu checking
2019-03-23 15:26:13 +01:00
Daniel Marjamäki
9653760547
CheckBufferOverrun: Improved CTU analysis for array
2019-03-23 11:20:35 +01:00
IOBYTE
40af889df0
Fixed #9053 (simplifyTypedef: wrong simplification of '(const d)' when 'd' is a array) ( #1751 )
...
* Fixed #9053 (simplifyTypedef: wrong simplification of '(const d)' when 'd' is a array)
* fix whitespace
2019-03-23 10:45:38 +01:00
Pavol Misik
7c7ee66cf9
Fix crash in TemplateSimplifier::TokenAndName::TokenAndName in case of template constexpr ( #1748 )
...
This is not propper solution. This change just eliminates crash and logs error.
https://trac.cppcheck.net/ticket/9046
2019-03-23 10:42:41 +01:00
Daniel Marjamäki
a135683d2f
Refactoring; Renamed CWE786 and CWE788
2019-03-23 08:41:20 +01:00
Daniel Marjamäki
15fc9a622d
CheckBufferOverrun: Add CTU analysis
2019-03-23 08:36:10 +01:00
Paul Fultz II
91138578cc
Fix 9052: Crash: SIGSEGV in Token::previous (this=0x0) while checking mariadb-10.0
2019-03-22 01:56:09 +01:00
Daniel Marjamäki
55433fce40
Library: added bufferSize parameters
2019-03-20 19:26:57 +01:00
Daniel Marjamäki
14528bcf25
Library: allowed values for the buffer-size attribute: malloc/calloc/strdup
2019-03-20 06:46:55 +01:00
Daniel Marjamäki
031362ae01
CheckBufferOverrun: Fix false positive
2019-03-19 21:07:08 +01:00
Daniel Marjamäki
6cbe818f1a
Fix uninitialized variable usage
2019-03-19 13:17:27 +01:00
Daniel Marjamäki
a0e58f0039
Revert "Revert "CheckBufferOverrun: Handle multidimensional arrays""
...
This reverts commit 9d1755f449
.
2019-03-19 13:16:22 +01:00
Daniel Marjamäki
9d1755f449
Revert "CheckBufferOverrun: Handle multidimensional arrays"
...
This reverts commit e98a4a6f14
.
2019-03-19 13:13:29 +01:00
Daniel Marjamäki
e98a4a6f14
CheckBufferOverrun: Handle multidimensional arrays
2019-03-19 09:29:32 +01:00
Paul Fultz II
774464eabb
Fix issue 8996: False positive duplicateCondition
...
This fixes issue 8996 by improving the alias checking by using lifetime analysis. It also extends the lifetime checker to handle constructors and initializer lists for containers and arrays.
2019-03-19 06:25:10 +01:00
Rikard Falkeborn
794f65bac1
Handle prefixed strings and characters in Token ( #1742 )
...
This makes it possible to call getStrLength() and similar functions
before the tokenizer is called.
2019-03-18 06:18:25 +01:00
Daniel Marjamäki
b53a2e5dc4
CheckBufferOverrun: restore minsize code
2019-03-17 20:34:49 +01:00
Daniel Marjamäki
03f8535c71
Better multiline warning when there is buffer overflow
2019-03-17 20:12:02 +01:00
Daniel Marjamäki
3c85d8a8ac
ValueFlow: Better info for buffer size values
2019-03-17 19:02:36 +01:00
Sebastian
19e9e42dd7
Library: Enhance minsize configuration and allow simple values. ( #1736 )
...
Some POSIX and Windows functions require buffers of at least some
specific size. This is now possible to configure via for example this
minsize configuration: `<minsize type="value" value="26"/>`.
The range for valid buffer size values is 1 to LLONG_MAX
(9223372036854775807)
2019-03-17 14:22:26 +01:00
Daniel Marjamäki
0771929518
Buffer overflow: Handling of dynamically allocated buffer
2019-03-17 13:40:56 +01:00
Daniel Marjamäki
92f4113b59
Array index: Checking array index out of bounds for dynamic buffers
2019-03-17 13:09:15 +01:00