Jonas Jensen
ae11e7b72c
Merge pull request #3265 from Semmle/rdmarsh/cpp/deprecate-isDefined
...
C++: deprecate Declaration::isDefined()
2020-04-15 07:53:19 +02:00
Chris Gavin
4e981d8e70
Merge rc/1.24 into master.
2020-04-14 21:30:29 +01:00
Robert Marsh
146bfca2ad
Merge pull request #3254 from dbartol/dbartol/ImplicitReturnValue2
...
C++: Treat implicit end of body of non`-void` function as `Unreached`
2020-04-14 12:18:50 -07:00
Dave Bartolomeo
279467654e
C++: Make test functions return void
2020-04-14 14:17:56 -04:00
Dave Bartolomeo
812087968f
C++: Fix test output
...
Mostly noise, but a couple of the missing operand errors are actual fixes.
2020-04-14 14:17:20 -04:00
Robert Marsh
b5c0a0f77d
C++: remove all uses of Declaration::isDefined
2020-04-14 10:54:06 -07:00
Dave Bartolomeo
125a09ce6e
C++: Fix IR generation of return of void expression
2020-04-14 11:40:33 -04:00
Dave Bartolomeo
83cd78c6cf
C++: Fix test output
2020-04-14 10:54:00 -04:00
Dave Bartolomeo
1bde11706e
C++: Connect InitializeIndirection to UnmodeledDefinition
...
The IR generation for `InitializeIndirection` currently connects its load operand to the result of the corresponding `InitializeParameter` instruction. This isn't exactly wrong, but it doesn't fit the IR invariant of "All unmodeled uses consume `UnmodeledDefinition`". Our current code doesn't care, because we just throw away all of the existing def-use information, modeled or otherwise, when we build unaliased SSA. However, some upcoming SSA changes don't work correctly if this invariant is broken.
I've added the trivial IR generation change, along with a new sanity query.
2020-04-13 18:37:47 -04:00
Dave Bartolomeo
603a3af19b
C++: Treat implicit end of body of non-void function as Unreached
...
When the extractor can't prove that control flow will never reach the end of a non-`void`-returning function without reaching an explicit `return` statement, it inserts an implicit `return` without an operand. If control actually reaches this point, the behavior is undefined.
We were previously generating invalid IR for these implicit `return` statements, because the lack of an operand meant that there was no definition of the return value variable along that path. Instead, I've changed the IR generation to emit an `Unreached` instruction for the implicit `return`. This ensures that we don't create a control flow edge from the end of the body to the function epilogue.
The change to the range analysis test avoids having that test depend on the previous bad IR behavior, while still preserving the original spirit of the test.
2020-04-13 18:09:44 -04:00
Robert Marsh
8779177839
C++: accept minor test change
2020-04-13 14:03:02 -07:00
Robert Marsh
a5e7db73b2
Merge branch 'rc/1.24' into rdmarsh/cpp/ir-flow-through-outparams
...
For submodule consistency
2020-04-13 12:02:59 -07:00
Mathias Vorreiter Pedersen
cde34c9b1b
C++: Accept test output which I previously forgot to accept
2020-04-13 16:19:21 +02:00
Mathias Vorreiter Pedersen
daac5c5ab3
Merge branch 'master' into ir-flow-fields
2020-04-13 14:19:17 +02:00
Dave Bartolomeo
9f18a15a93
Merge pull request #3231 from MathiasVP/qualified-static-calls-are-static
...
C++: Do not generate this parameters and read/write side effects from static member functions
2020-04-09 10:48:59 -04:00
Pavel Avgustinov
6737e99d65
Merge pull request #3209 from hmakholm/baselib-extractor
...
Add extractor field in base language QL packs
2020-04-09 15:24:49 +01:00
Geoffrey White
a7979fdc12
C++: Base results purely on allocations now, not multiplications by a sizeof.
2020-04-09 15:05:29 +01:00
Geoffrey White
febbbc4423
C++: Additional test cases.
2020-04-09 15:03:35 +01:00
Robert Marsh
c38ccaaab6
Merge branch 'master' into rdmarsh/cpp/ir-flow-through-outparams
2020-04-08 12:32:35 -07:00
Mathias Vorreiter Pedersen
7298b68674
C++: Exclude 'this' params and read/write side effects from static member function calls through qualifiers, and accept tests
2020-04-08 13:35:26 +02:00
Mathias Vorreiter Pedersen
e4e0d3b573
C++: Add test cases showing that static member function calls get 'this' pointers and side effects for 'this' when accessed through qualifiers
2020-04-08 13:00:51 +02:00
Mathias Vorreiter Pedersen
d65c52d281
Merge branch 'master' into ir-flow-fields
2020-04-08 09:16:42 +02:00
Jonas Jensen
42e9d1416b
Merge pull request #3206 from geoffw0/newfreefix
...
C++: Fix `cpp/new-free-mismatch` false positives
2020-04-08 08:39:43 +02:00
Mathias Vorreiter Pedersen
52b179aee5
Merge branch 'master' into ir-flow-fields
2020-04-07 21:27:17 +02:00
Geoffrey White
66a0b7884e
Merge branch 'master' into alloc-size
2020-04-07 17:12:35 +01:00
Mathias Vorreiter Pedersen
d56284fe8f
C++: Move added flow from simpleLocalFlowStep to simpleInstructionLocalFlowStep and remove flow that could cause field conflation
2020-04-07 16:00:40 +02:00
Jonas Jensen
057155f28f
Merge remote-tracking branch 'upstream/master' into DefaultTaintTracking-Configuration
2020-04-07 14:39:30 +02:00
Mathias Vorreiter Pedersen
5719967a8e
C++: Remove single-field case from PostUpdateNode and accept tests
2020-04-07 12:03:28 +02:00
Jonas Jensen
0743c42807
Merge remote-tracking branch 'upstream/master' into dataflow-indirect-args
...
Accepted test results that were in semantic merge conflict between
these branches. The changed results are due to a bug that that's part of
https://github.com/github/codeql-c-analysis-team/issues/35 .
2020-04-06 19:26:08 +02:00
Henning Makholm
d1ff3211ef
Add extractor fields to test qlpack.yml files.
2020-04-06 19:21:41 +02:00
Geoffrey White
d5accc70e1
C++: Add a test similar to issues/44.
2020-04-06 16:47:24 +01:00
Jonas Jensen
e37aab5002
C++: Suppress FieldAddressInstruction taint
...
See code comment. This fixes false positives on openjdk/jdk.
2020-04-06 16:14:26 +02:00
Jonas Jensen
3b76509159
C++: Test DefaultTaintTracking field conflation
2020-04-06 16:13:41 +02:00
Mathias Vorreiter Pedersen
c577541850
C++: Fix reverse read dataflow consistency failure and accept tests
2020-04-06 15:50:08 +02:00
Geoffrey White
8059d69bbd
C++: Model calls to operator new / delete for NewFreeMismatch.ql.
2020-04-06 14:27:05 +01:00
Geoffrey White
3e9f9645ae
C++: Exclude calls to operator new / delete from NewFreeMismatch.ql.
2020-04-06 14:08:00 +01:00
Geoffrey White
97cdcbee63
C++: Test for NewFreeMismatch.ql with operator new / delete.
2020-04-06 13:57:28 +01:00
Mathias Vorreiter Pedersen
317734f41e
C++: Attach PostUpdateNodes to Chi nodes following aschackmull's suggestion
2020-04-05 22:35:26 +02:00
Jonas Jensen
530d4294b0
Merge remote-tracking branch 'upstream/master' into DefaultTaintTracking-Configuration
2020-04-05 07:27:07 +02:00
Jonas Jensen
58366b19e9
C++: Path explanations in the last two queries
...
For some reason I thought that these two queries were special because
they manipulate `SecurityOptions` to change the taint-tracking sources.
It turns out it was just the opposite: the queries used to be special
because they invalidated the cache for the `tainted` predicate, but that
predicate is no longer used, so these queries are no longer special.
2020-04-04 16:47:06 +02:00
Jonas Jensen
54a23a486a
C++: Accept test changes for 108d5177b8
2020-04-04 16:46:59 +02:00
Robert Marsh
316d932829
Merge pull request #3198 from MathiasVP/valuenumbering-provider-new-file
...
C++/C#: Prevent accidental import of ValueNumberPropertyProvider
2020-04-03 13:31:11 -07:00
Jonas Jensen
5822cd7b84
C++: Put paths in the remaining LGTM-suite queries
2020-04-03 17:10:47 +02:00
Jonas Jensen
3ec1f691c2
C++: First query with flow-paths through globals
2020-04-03 16:45:00 +02:00
Jonas Jensen
469bdae9b2
C++: More helpful toString for def. by ref. node
2020-04-03 16:37:23 +02:00
Jonas Jensen
36da2d1dae
C++: Manipulate the source end of paths too
...
Without this, we get duplicate alerts in some cases and
unnatural-looking source nodes in other cases. The source nodes were
often `Conversion`s.
2020-04-03 16:37:23 +02:00
Mathias Vorreiter Pedersen
c54cddead1
C++: Include PrintValueNumbering in testcase
2020-04-03 12:42:06 +02:00
Jonas Jensen
16c7a35b1c
Merge pull request #3195 from geoffw0/taintstring
...
C++: Model taint flow through std::string constructor and c_str()
2020-04-03 12:05:07 +02:00
Robert Marsh
a8e191248e
Merge branch 'master' into rdmarsh/cpp/ir-flow-through-outparams
...
Merge IR SSA test additions
2020-04-02 15:30:20 -07:00
Geoffrey White
73171682b7
C++: Switch to taint flow as suggested in the old PR.
2020-04-02 19:49:41 +01:00