Nora Dimitrijević
70ed8c6e8f
Swift: add QLdoc to Pattern
2023-03-29 11:52:50 +02:00
Nora Dimitrijević
3fbf90cbd7
Swift: add ConstructorDecl.isFailable/0
2023-03-29 11:52:50 +02:00
Paolo Tranquilli
f3f17791c3
Swift: extract all source files in WMO mode
...
WMO stands for whole module optimization. It's a compilation mode where
all sources of a module are compiled together, e.g.
```
swift-frontend -emit-module A.swift B.swift -o Module.swiftmodule
```
This is opposed to incremental mode, where one would do something like
```
swift-frontend -emit-module -primary-file A.swift B.swift -module-name Module -o Module~A.swiftmodule
swift-frontend -emit-module A.swift -primary-file B.swift -module-name Module -o Module~B.swiftmodule
swift-frontend -merge-modules Module~A.swiftmodule Module~B.swiftmodule -o Module.swiftmodule
```
In WMO mode we were skipping extraction of all files after the first
one, because we were filtering in only files with an associated output,
and internally swift only assigns the output to the first input file in
WMO mode (which is just an implementation detail).
This patch refines that filter, by getting all input source files in
case there are no primary inputs.
2023-03-29 10:39:58 +02:00
Nora Dimitrijević
55ce9760e1
Merge branch 'main' into swift/case-let-dataflow
2023-03-28 18:20:33 +02:00
Nora Dimitrijević
2a5f29cd0f
Swift: remove getIdentityPreservingEnclosingPattern
...
The Pattern public interface doesn't really need it.
2023-03-28 18:18:32 +02:00
Jeroen Ketema
a381aa4d37
Swift: Use DataFlow::ConfigSig in InsufficientHashIterations.ql
2023-03-28 17:39:58 +02:00
Jeroen Ketema
60f033f10c
Swift: Use DataFlow::ConfigSig in ConstantSalt.ql
2023-03-28 17:39:18 +02:00
Jeroen Ketema
b97b3d9975
Swift: Use DtatFlow::ConfigSig in InsecureTLS.ql
2023-03-28 17:38:46 +02:00
Jeroen Ketema
42248220b4
Swift: Use DataFlow::ConfigSig in WeakSensitiveDataHashing.ql
2023-03-28 17:38:11 +02:00
Jeroen Ketema
a8599eb689
Swift: Use DataFlow::ConfigSig in ECBEncryption.ql
2023-03-28 17:37:37 +02:00
Jeroen Ketema
cc23ba3698
Swift: Use DataFlow::ConfigSig in HardcodedEncryptionKey.ql
2023-03-28 17:37:05 +02:00
Jeroen Ketema
1592b578d9
Swift: Use DataFlow::ConfigSig in ConstantPassword.ql
2023-03-28 17:36:37 +02:00
Jeroen Ketema
31512b8627
Swift: Use DataFlow::ConfigSig in StaticInitializationVector.ql
2023-03-28 17:36:00 +02:00
Nora Dimitrijević
94614320b5
Swift: refactor OptionalSomeDecl -> OptionalSomeContentSet
2023-03-28 15:15:16 +02:00
Anders Schack-Mulligen
7c74fd07e9
Merge pull request #12684 from aschackmull/dataflow/remove-footgun
...
Dataflow: Remove accidentally exposed predicates.
2023-03-28 15:14:58 +02:00
Nora Dimitrijević
ea9e8e7ddb
Swift: fix bad join order in Pattern.getImmediateMatchingExpr
...
On Signal-iOS, this snippet:
```codeql
class Pattern extends Generated::Pattern {
...
Expr getImmediateMatchingExpr() {
...
exists(PatternBindingDecl v, int i |
v.getPattern(i) = this and
result = v.getInit(i)
)
...
}
...
}
```
Had the following join order:
```
33926 ~0% {3} r8 = SCAN PatternBindingDecl#ab5153b9::Generated::PatternBindingDecl::getImmediateInit#1#dispred#fff OUTPUT In.1, In.0, In.2
2565045964 ~0% {4} r9 = JOIN r8 WITH pattern_binding_decl_patterns_102#join_rhs ON FIRST 1 OUTPUT Lhs.1, Rhs.1, Lhs.2, Rhs.2
33926 ~0% {2} r10 = JOIN r9 WITH Synth#5f134a93::Synth::convertPatternBindingDeclToRaw#1#ff ON FIRST 2 OUTPUT Lhs.3, Lhs.2
33926 ~2% {2} r11 = JOIN r10 WITH Synth#5f134a93::Synth::convertPatternFromRaw#1#ff ON FIRST 1 OUTPUT Rhs.1, Lhs.1
33926 ~1% {2} r12 = JOIN r11 WITH Element#e67432df::Generated::Element::resolve#ff ON FIRST 1 OUTPUT Lhs.1, Rhs.1
33926 ~4% {2} r13 = JOIN r12 WITH Element#e67432df::Generated::Element::resolve#ff ON FIRST 1 OUTPUT Lhs.1, Rhs.1
```
After applying `pragma[only_bind_out]` to `this`:
```
198815 ~1% {2} r4 = SCAN Synth#5f134a93::Synth::TPattern#f OUTPUT In.0, In.0
198815 ~0% {2} r5 = JOIN r4 WITH Element#e67432df::Generated::Element::resolve#ff_10#join_rhs ON FIRST 1 OUTPUT Rhs.1, Lhs.1
75626 ~0% {3} r6 = JOIN r5 WITH PatternBindingDecl#ab5153b9::Generated::PatternBindingDecl::getImmediatePattern#1#dispred#fff_201#join_rhs ON FIRST 1 OUTPUT Rhs.1, Rhs.2, Lhs.1
33926 ~1% {2} r7 = JOIN r6 WITH PatternBindingDecl#ab5153b9::Generated::PatternBindingDecl::getImmediateInit#1#dispred#fff ON FIRST 2 OUTPUT Rhs.2, Lhs.2
33926 ~4% {2} r8 = JOIN r7 WITH Element#e67432df::Generated::Element::resolve#ff ON FIRST 1 OUTPUT Lhs.1, Rhs.1
```
2023-03-28 14:57:05 +02:00
Jeroen Ketema
3b8ad087eb
Make imports of codeql.util.Unit private
2023-03-28 14:14:13 +02:00
Anders Schack-Mulligen
d406b051fc
Dataflow: Remove accidentally exposed predicates.
2023-03-28 10:04:21 +02:00
Nora Dimitrijević
239e14b71a
Swift: fix QLdoc check for EnumElementExpr.qll
2023-03-27 23:48:37 +02:00
Nora Dimitrijević
41b283c07c
Swift: add .some enum content to init? calls
...
Again, this is hacky; we don't distinguish rigorously between an
optional value and its content (similar to how it was before enum
content flow).
2023-03-27 23:01:25 +02:00
Nora Dimitrijević
03122d76ce
Swift: fix a bunch of MISSING dataflow test cases
...
Optional content flow through constructors remains.
2023-03-27 23:01:25 +02:00
Nora Dimitrijević
6a127264af
Swift: distinguish between Pattern.get(Immediate)IdentityPreservingEnclosingPattern
2023-03-27 23:01:25 +02:00
Nora Dimitrijević
7dc793855b
Swift: introduce Node.asPattern()
2023-03-27 23:01:24 +02:00
Nora Dimitrijević
a715ebe826
Swift: distinguish Pattern.get(Immediate)EnclosingPattern
2023-03-27 23:01:24 +02:00
Nora Dimitrijević
9353549629
Swift: fixes responding to comments
2023-03-27 23:01:24 +02:00
Nora Dimitrijević
052a008926
Swift: Content-based dataflow through case let
2023-03-27 23:01:24 +02:00
Nora Dimitrijević
5c795632db
Swift: add Pattern.getEnclosingPattern()
2023-03-27 23:01:24 +02:00
Nora Dimitrijević
c2e9ffab63
Swift: add EnumElementExpr + Pattern.getMatchingExpr()
2023-03-27 23:01:24 +02:00
Nora Dimitrijević
5419e65e01
Swift: add NamedPattern.getVarDecl()
2023-03-27 23:01:24 +02:00
Nora Dimitrijević
feb8243d5f
Swift: move BindingPattern to the hidden AST
2023-03-27 23:01:24 +02:00
Nora Dimitrijević
9e8867aa96
Swift: update enum dataflow test with more cases
2023-03-27 23:01:23 +02:00
Geoffrey White
28998ccafe
Merge pull request #12471 from geoffw0/dbsinks2
...
Swift: Better sinks for swift/cleartext-storage-database
2023-03-27 12:51:13 +01:00
Jeroen Ketema
977f15f8a4
Merge pull request #12649 from jketema/unit
...
Replace all definitions of `Unit` by `import codeql.util.Unit`
2023-03-27 08:49:50 +02:00
Geoffrey White
c158f8331a
Swift: Fix regression.
2023-03-24 14:04:10 +00:00
Anders Schack-Mulligen
85511ba19d
Dataflow: Sync
2023-03-24 12:42:06 +01:00
Jeroen Ketema
a87a9438c7
Replace all definitions of Unit by import codeql.util.Unit
2023-03-24 10:39:34 +01:00
Anders Schack-Mulligen
9d88f01c82
Merge pull request #12645 from aschackmull/dataflow/renaming
...
Dataflow: Rename Make to Global and hasFlow to flow
2023-03-24 08:48:31 +01:00
Anders Schack-Mulligen
d440bc2d0c
Dataflow: Sync.
2023-03-23 13:40:23 +01:00
Anders Schack-Mulligen
d0b7ffda70
Python/Ruby/Swift: Rename references.
2023-03-23 13:06:19 +01:00
Anders Schack-Mulligen
2761aa73ca
Dataflow: Sync.
2023-03-23 13:06:19 +01:00
Geoffrey White
de5cf84bd5
Swift: Address check failures.
2023-03-23 11:08:49 +00:00
Geoffrey White
a5bb93402c
Swift: Replace sources with (extendable) CSV.
2023-03-23 10:52:58 +00:00
Geoffrey White
9529bc5f09
Swift: The regressed test is not realistic, update it to be more like what really happens.
2023-03-23 10:52:58 +00:00
Geoffrey White
e266132f0a
Swift: Replace sinks with (extendable) CSV.
2023-03-23 10:45:29 +00:00
Geoffrey White
4c0d02a87d
Swift: Standardize the sources, sinks etc.
2023-03-23 10:39:03 +00:00
Geoffrey White
dfcad7fa84
Swift: Split the query into the usual three files.
2023-03-23 10:39:03 +00:00
Geoffrey White
879dea2984
Swift: Additional test cases.
2023-03-23 10:38:52 +00:00
Kasper Svendsen
ce6be1f636
Dataflow: Instantiate stage 1 access paths with proper unit type
2023-03-23 08:32:16 +01:00
Geoffrey White
a4e9d38abb
Swift: Fix the test regression.
2023-03-22 16:44:29 +00:00
Geoffrey White
cbe5243c89
Swift: Accept test regressions. :(
2023-03-22 16:24:32 +00:00