Chris Smowton
f037030c26
Adapt instanceof CFG and DFG to general patterns
2023-11-30 11:24:00 +00:00
Chris Smowton
20b97af02f
Implement dataflow for record patterns
...
Strategy: there is now a regular flow step from an instance-of LHS / switch expr to the pattern, 0 or more read steps corresponding to record pattern destructors, and then finally a normal SSA def/use step connecting the binding patterns to their first uses.
2023-11-30 11:24:00 +00:00
Chris Smowton
05addde957
Adapt control-flow graph to record patterns
2023-11-30 11:24:00 +00:00
Chris Smowton
556feb31f0
Autoformat
2023-11-30 11:24:00 +00:00
Chris Smowton
936c0206ea
Adapt ancillary analyses to record patterns
2023-11-30 11:23:59 +00:00
Chris Smowton
daccd04087
Basic extraction of record patterns
2023-11-30 11:23:59 +00:00
Chris Smowton
293cc67494
Fix stringifying record fields
2023-11-30 11:23:59 +00:00
Chris Smowton
144218e2f7
Implement switch CFG when there are mixed constant and pattern cases
2023-11-30 11:23:59 +00:00
Chris Smowton
54a89d6fef
Handle 'case null, default:'
2023-11-30 11:23:59 +00:00
Chris Smowton
9a450b09be
Account for pattern-cases in more places
2023-11-30 11:23:59 +00:00
Chris Smowton
2b16121638
CFG: Support guarded patterns
2023-11-30 11:23:59 +00:00
Chris Smowton
ba0f3cf718
Add basic support for case guards
2023-11-30 11:23:59 +00:00
Chris Smowton
6b9aed21df
Nullness library: recognise switches with null checks
2023-11-30 11:23:58 +00:00
Chris Smowton
30c5885966
Fix constant cases relating to enum types
2023-11-30 11:23:58 +00:00
Chris Smowton
b21aaa75bc
Type-flow: treat pattern-switch on an array index similar to instanceof
2023-11-30 11:23:58 +00:00
Chris Smowton
7dd4030f51
Pattern cases: support type-flow
2023-11-30 11:23:58 +00:00
Chris Smowton
a06ac42512
PrintAst: report pattern-cases similar to pattern-instanceof
2023-11-30 11:23:58 +00:00
Chris Smowton
b6622d2f5b
usesType: support pattern cases
2023-11-30 11:23:58 +00:00
Chris Smowton
0f434e7f08
Add test for dataflow vs. pattern-switch
2023-11-30 11:23:58 +00:00
Chris Smowton
6c990c2cf6
Add pattern-case support and generally debug switch CFGs
...
These were reasonably broken beforehand, due to not taking switch rules into account in enough places, and confusing the expression/statement switch rule distinction with the distinction between switch statements and expressions.
(For example, `switch(x) { 1 -> System.out.println("Hello world") ... }` is a statement, but has a rule expression).
2023-11-30 11:23:58 +00:00
Chris Smowton
f4b45fa511
Support switch cases with binding patterns
2023-11-30 11:23:58 +00:00
Tom Hvitved
1a6886cf99
SSA: Add locations to ease debugging
2023-11-22 08:37:02 +01:00
Anders Schack-Mulligen
bf6cfd3bef
Rangeanalysis: Simplify api.
2023-11-13 10:35:44 +01:00
Anders Schack-Mulligen
30aefabb2a
Rangeanalysis: Rename predicate.
2023-11-13 10:35:44 +01:00
Anders Schack-Mulligen
66b03bfb12
Java: Remove unused import
2023-11-13 10:35:44 +01:00
Anders Schack-Mulligen
3a73faf061
Rangeanalysis: Remove unused getAlternateType predicates.
2023-11-13 10:35:43 +01:00
Anders Schack-Mulligen
657c29f409
Java/C++: Share valueFlowStep.
2023-11-09 20:24:28 +01:00
Anders Schack-Mulligen
b8e7e1d15e
Java/C++: Share ssaUpdateStep.
2023-11-09 16:02:44 +01:00
Anders Schack-Mulligen
daffae020b
Java/C++: Share eqFlowCond.
2023-11-09 16:00:46 +01:00
Anders Schack-Mulligen
f9132c5ff0
Java: Duplicate a bit more code to postpone Java-C# cleanup.
2023-11-08 14:04:34 +01:00
Anders Schack-Mulligen
1f4cd74a1c
Java/C++: Move SsaReadPosition to shared qlpack.
2023-11-08 12:11:17 +01:00
Tony Torralba
5442cdb49c
Merge pull request #14610 from atorralba/atorralba/java/jms-deserialization
...
Java: Add JMS sink to java/unsafe-deserialization
2023-11-08 09:10:20 +01:00
Anders Schack-Mulligen
45ae4ed362
Merge pull request #14711 from aschackmull/shared/rangeutil-share2
...
Java/C++/RangeAnalysis: Move a couple of utility predicates to shared qlpack
2023-11-08 08:33:12 +01:00
Geoffrey White
b63294764b
Merge pull request #14705 from geoffw0/qhelplink
...
Fix a dead ReDoS link in docs
2023-11-07 17:40:19 +00:00
Anders Schack-Mulligen
12cba7909b
Java/C++: Move range util guard-controls predicates to shared pack.
2023-11-07 15:14:34 +01:00
Anders Schack-Mulligen
f2ca52d951
Java/C++: Move range util backEdge predicate to shared pack.
2023-11-07 15:14:34 +01:00
Tom Hvitved
af7b295c59
Address review comments
2023-11-07 13:01:19 +01:00
Geoffrey White
e8a466a02c
Update dead link.
2023-11-07 09:26:07 +00:00
Anders Schack-Mulligen
f8ab64dff0
Java: Switch to shared modulus analysis.
2023-11-01 16:34:28 +01:00
Anders Schack-Mulligen
a7f3ef1a6c
Rangeanalysis: Parameterise shared modulus analysis.
2023-11-01 15:59:24 +01:00
Anders Schack-Mulligen
6d859daf3d
Merge pull request #14656 from aschackmull/shared/range-utils
...
Rangeanalysis: Share ssaRead predicate
2023-11-01 15:57:52 +01:00
Anders Schack-Mulligen
048a7c4e42
Rangeanalysis: Rename SsaBound.getAVariable to getVariable.
2023-11-01 11:58:06 +01:00
Anders Schack-Mulligen
48291dd32d
Rangeanalysis: Remove superfluous ignoreZeroLowerBound.
2023-11-01 11:51:46 +01:00
Edward Minnix III
1ec1dd368d
Merge pull request #13978 from egregius313/egregius313/java/mad/convert-sensitive-api-to-mad
...
Java: Convert `SensitiveApi.qll` to use Models-as-Data
2023-10-31 15:25:42 -04:00
Anders Schack-Mulligen
34b9791e46
Rangeanalysis: Remove superfluous ignoreSsaReadCopy.
2023-10-31 15:32:25 +01:00
Anders Schack-Mulligen
322e6c91be
Rangeanalysis: Remove superfluous specificSsaRead.
2023-10-31 15:30:36 +01:00
Anders Schack-Mulligen
8b6c940e76
Rangeanalysis: Remove superfluous ignoreSsaReadAssignment.
2023-10-31 15:28:37 +01:00
Anders Schack-Mulligen
6d6f89e71e
Rangeanalysis: Remove superfluous ignoreSsaReadArithmeticExpr.
2023-10-31 15:25:28 +01:00
Anders Schack-Mulligen
a39a94ca8e
Rangeanalysis: Switch to shared ssaRead predicate.
2023-10-31 15:23:05 +01:00
Anders Schack-Mulligen
19644a8f07
Rangeanalysis: Implement shared ssaRead predicate
2023-10-31 15:07:11 +01:00