Geoffrey White
5e71207a23
CPP: Add '/' case.
2019-04-04 14:32:22 +01:00
Anders Schack-Mulligen
15fa4f8b7a
Merge pull request #1007 from jbj/dataflow-dispatch-no-ctx
...
C++: Simplify stubs in DataFlowDispatch.qll
2019-04-04 11:25:50 +02:00
Ziemowit Laski
970c45e896
Merge branch 'master' into cpp340a
2019-04-03 17:52:46 -07:00
Ziemowit Laski
e4ce8347bc
[CPP-340] Simplify MistypedFunctionArguments.ql and reduce its
...
precision from very-high to high.
2019-04-03 16:19:37 -07:00
Jonas Jensen
d0091b28ee
Merge pull request #1199 from geoffw0/printfld
...
CPP: Support %Ld in printf.qll
2019-04-03 15:38:16 +02:00
Geoffrey White
d4c931cf11
CPP: Permit %Ld and similar.
2019-04-03 11:46:48 +01:00
Jonas Jensen
2140995530
C++: Update QLDoc for new use of getFullyConverted
2019-04-03 10:52:05 +02:00
Jonas Jensen
4b159fd2a5
C++: Fix the suppression for alerts about enums
...
The suppression mechanism broke when I changed `relOpWithSwap` to take
fully-converted expressions as parameters.
2019-04-03 10:45:39 +02:00
Jonas Jensen
f9c9efeabe
Merge pull request #1188 from geoffw0/donotedit
...
CPP: Consider more files to be generated.
2019-04-03 09:52:28 +02:00
Robert Marsh
fa8b771944
Merge pull request #1186 from jbj/dataflow-defbyref-1.20-fixes
...
C++: Let data flow past definition by reference
2019-04-02 13:36:37 -07:00
Robert Marsh
65d0412692
Merge pull request #1194 from geoffw0/dead-goto
...
CPP: Fix false positive from DeadCodeGoto.ql
2019-04-02 10:03:15 -07:00
Jonas Jensen
eae2fe5a16
Merge pull request #1190 from Semmle/rc/1.20
...
Merge 1.20 into master
2019-04-02 15:29:12 +02:00
Geoffrey White
8979361255
CPP: Exclude functions containing preprocessor logic.
2019-04-02 14:24:37 +01:00
Geoffrey White
1542fdc44b
CPP: Change AV Rule 107.ql to a recommendation.
2019-04-02 12:19:33 +01:00
Geoffrey White
96136a1c55
CPP: Change SloppyGlobal.ql to a recommendation.
2019-04-02 12:18:22 +01:00
Geoffrey White
c3ec7b55b7
CPP: Workaround improvement for File.compiledAsMicrosoft.
2019-04-02 11:40:49 +01:00
Jonas Jensen
842aafc888
C++: Fix new UnsafeDaclSecurityDescriptor FP
...
This query uses data flow for nullness analysis, which is always going
to be a large overapproximation. The overapproximation became too big
for one of the test cases after the recent change to make data flow go
across assignment by reference.
To make this query more conservative, it will now only report that the
`pDacl` argument can be null if there isn't also evidence that it can be
non-null.
2019-04-02 11:31:12 +02:00
Geoffrey White
bce6ee5c27
CPP: Consider more files to be generated.
2019-04-02 09:19:55 +01:00
Ziemowit Laski
96b8bdfeb5
[CPP-340] Add new queries to analysis-cpp.md; correct id of
...
TooFewArguments.ql
2019-04-01 19:15:27 -07:00
Ziemowit Laski
03aa86ed4d
Merge branch 'master' into cpp340a
...
So as to get to change-notes/1.21/analysis-cpp.md
2019-04-01 18:51:03 -07:00
Ziemowit Laski
bd139829ea
[CPP-340] Delete old 'UnspecifiedFunctions' folders
2019-04-01 18:44:49 -07:00
Ziemowit Laski
3ec988c39b
[CPP-340] Rename 'UnspecifiedFunctions' to 'Unspecified Functions'
...
Make MistypedFunctionArguments.ql more restrictive (allowing
type matching only in the presence of no-op conversions).
2019-04-01 18:39:46 -07:00
Arthur Baars
5eb58f3ba2
C++: fix HubClasses.ql by changing its kind to 'table'
2019-04-01 16:17:23 +02:00
Jonas Jensen
71659594c8
C++: Let data flow past definition by reference
...
This commit changes how data flow works in the following code.
MyType x = source();
defineByReference(&x);
sink(x);
The question here is whether there should be flow from `source` to
`sink`. Such flow is desirable if `defineByReference` doesn't write to
all of `x`, but it's undesirable if `defineByReference` is a typical
init function in `C` that writes to every field or if
`defineByReference` is `memcpy` or `memset` on the full range.
Before 1.20.0, there would be flow from `source` to `sink` in case `x`
happened to be modeled with `BlockVar` but not in case `x` happened to
be modelled with SSA. The choice of modelling depends on an analysis of
how `x` is used elsewhere in the function, and it's supposed to be an
internal implementation detail that there are two ways to model
variables. In 1.20.0, I changed the `BlockVar` behavior so it worked the
same as SSA, never allowing that flow. It turns out that this change
broke a customer's query.
This commit reverts `BlockVar` to its old behavior of letting flow
propagate past the `defineByReference` call and then regains consistency
by changing all variables that are ever defined by reference to be
modelled with `BlockVar` instead of SSA. This means we now get too much
flow in certain cases, but that appears to be better overall than
getting too little flow. See also the discussion in CPP-336.
2019-04-01 14:13:47 +02:00
Arthur Baars
4b95fbbb39
C++ Fix select statements of AV 3 and 81
2019-04-01 11:20:12 +02:00
Arthur Baars
ba7fdddafb
Change @kind to 'table' for test and sanity checks queries that don't select problems
2019-04-01 11:20:12 +02:00
Jonas Jensen
04a48e9034
Merge remote-tracking branch 'upstream/master' into SimpleRangeAnalysis-use-after-cast
2019-04-01 09:10:57 +02:00
Ziemowit Laski
8a653b9adc
[CPP-340] Fix TooFewArguments.c to actually provide a ()-prototype.
2019-03-29 20:34:49 -07:00
Ziemowit Laski
59a54df149
[CPP-340] cpp/too-many-arguments should remain as cpp/futile-params.
2019-03-29 20:30:40 -07:00
Ziemowit Laski
2ea9f81c7f
[CPP-340] Refer to C coding standard, not C++.
2019-03-29 20:27:25 -07:00
Ziemowit Laski
cb5bbd2197
[CPP-340] When warning about mismatched parameters, follow what C
...
compilers do. Various integral and floating-point types
are treated as mutually implicitly convertible. Remaining
warnings deal with misuse of pointer and array types.
2019-03-29 20:19:45 -07:00
Geoffrey White
a6e0296c0c
CPP: Be slash/case insensitive.
2019-03-29 11:19:20 +00:00
Geoffrey White
f5a7d7a035
CPP: Correct a few comments.
2019-03-29 11:19:19 +00:00
Geoffrey White
66e87fc34c
CPP: Detect Microsoft compilations even more reliably.
2019-03-29 11:18:32 +00:00
Geoffrey White
5911699c55
CPP: Clean up some remaining old 'isWideCharDefault' logic that has caused confusion.
2019-03-29 11:18:31 +00:00
Geoffrey White
eef050dd47
CPP: Improve deduction of %S types in FormattingFunction.qll.
2019-03-29 11:18:31 +00:00
Geoffrey White
4a25c37ecc
CPP: Detect Microsoft compilations somewhat more reliably.
2019-03-29 11:18:31 +00:00
Geoffrey White
975a0bbf0d
CPP: Handle %s/%c/%S/%C correctly on non-MS platforms.
2019-03-29 11:18:31 +00:00
Geoffrey White
648cdbab6c
CPP: Add FormattingFunction.getFormatCharType() and test.
2019-03-29 11:18:31 +00:00
Jonas Jensen
68a19d7d3e
Merge branch 'master' into taintedmalloc
2019-03-29 09:12:38 +01:00
Jason Reed
d03b5bca31
C++: Fix non-private imports.
2019-03-28 20:39:29 -04:00
Jason Reed
9c0be34fd4
C++: Remove accidental redundancy.
2019-03-28 20:39:29 -04:00
Jason Reed
23ee7ee928
C++: Teach range analysis to pay attention to NaNs.
2019-03-28 20:39:29 -04:00
Geoffrey White
f358e61719
CPP: Add a reference about include optimization to the qhelp for AV Rule 35.
2019-03-28 16:37:50 +00:00
Geoffrey White
743b17af50
CPP: Autoformat.
2019-03-28 15:49:36 +00:00
Geoffrey White
0b85966b31
CPP: Fix dubious [old] taint library results involving strlen.
2019-03-28 15:49:36 +00:00
Geoffrey White
8c75e730e4
CPP: Widen TaintedAllocationSize.ql.
2019-03-28 15:49:36 +00:00
Jonas Jensen
debc441d03
Merge pull request #1158 from geoffw0/moremsalloc
...
CPP: Add more allocation functions to Alloc.qll
2019-03-27 13:51:39 +01:00
Geoffrey White
885df8754e
Merge pull request #1165 from dave-bartolomeo/dave/CompareFP
...
C++: Fix FP in PointlessComparison due to preprocessor
2019-03-27 10:54:26 +00:00
Jonas Jensen
1ffeebcfea
C++: Range analysis: support casts from/to typedef
2019-03-27 10:48:35 +01:00