Skip to content

Commit 7a82544

Browse files
committed
unified: Fix for members only appearing in MaD
1 parent 9af1095 commit 7a82544

4 files changed

Lines changed: 30 additions & 1 deletion

File tree

‎unified/ql/lib/codeql/unified/internal/dataflow/Content.qll‎

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
11
private import unified
22
private import AllDataFlow
33

4+
/**
5+
* Holds if a MaD access path token of form `name[arg]` exists.
6+
*/
7+
predicate isAccessPathTokenPresent(string name, string arg) {
8+
arg = any(FlowSummaryOutput::Private::AccessPathToken tok).getAnArgument(name)
9+
}
10+
411
private newtype TContent =
512
TArrayElement() or
613
TNamedMember(string name) {
@@ -11,6 +18,8 @@ private newtype TContent =
1118
name = [0 .. 20].toString()
1219
or
1320
name = getEnumCaseParameterFieldFromArgument(_, _)
21+
or
22+
isAccessPathTokenPresent("Member", name)
1423
} or
1524
TCapturedVariable(CaptureSsaInput::CapturedVariable v)
1625

‎unified/ql/lib/codeql/unified/internal/dataflow/FlowSummaries.qll‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,8 @@ private import StepsInput
116116
private module StepsOutput = Steps<StepsInput>;
117117

118118
module FlowSummaryOutput {
119+
module Private = FlowSummaryOutput1::Private;
120+
119121
import FlowSummaryOutput1::Public
120122
import FlowSummaryOutput2
121123
import StepsOutput

‎unified/ql/test/library-tests/dataflow/flow-summaries.swift‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,5 +33,5 @@ func t5() {
3333
let x = source("t5.1")
3434
let y = TestType.storeUnusualName(x)
3535
let z = TestType.readUnusualName(y)
36-
sink(z) // $ MISSING: hasValueFlow=t5.1
36+
sink(z) // $ hasValueFlow=t5.1
3737
}

‎unified/ql/test/library-tests/dataflow/test.expected‎

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,14 @@ edges
204204
| flow-summaries.swift:28:36:28:36 | x | flow-summaries.swift:28:47:28:49 | [post] box [outputField] | provenance | |
205205
| flow-summaries.swift:28:47:28:49 | [post] box [outputField] | flow-summaries.swift:29:10:29:12 | box [outputField] | provenance | |
206206
| flow-summaries.swift:29:10:29:12 | box [outputField] | flow-summaries.swift:29:10:29:24 | ... .outputField | provenance | |
207+
| flow-summaries.swift:33:9:33:9 | x | flow-summaries.swift:34:39:34:39 | x | provenance | |
208+
| flow-summaries.swift:33:13:33:26 | source(...) | flow-summaries.swift:33:9:33:9 | x | provenance | |
209+
| flow-summaries.swift:34:9:34:9 | y [unusualNameNotAppearingInSourceCode] | flow-summaries.swift:35:38:35:38 | y [unusualNameNotAppearingInSourceCode] | provenance | |
210+
| flow-summaries.swift:34:13:34:40 | ... .storeUnusualName(...) [unusualNameNotAppearingInSourceCode] | flow-summaries.swift:34:9:34:9 | y [unusualNameNotAppearingInSourceCode] | provenance | |
211+
| flow-summaries.swift:34:39:34:39 | x | flow-summaries.swift:34:13:34:40 | ... .storeUnusualName(...) [unusualNameNotAppearingInSourceCode] | provenance | |
212+
| flow-summaries.swift:35:9:35:9 | z | flow-summaries.swift:36:10:36:10 | z | provenance | |
213+
| flow-summaries.swift:35:13:35:39 | ... .readUnusualName(...) | flow-summaries.swift:35:9:35:9 | z | provenance | |
214+
| flow-summaries.swift:35:38:35:38 | y [unusualNameNotAppearingInSourceCode] | flow-summaries.swift:35:13:35:39 | ... .readUnusualName(...) | provenance | |
207215
| implicit-self.swift:16:9:16:12 | [post] self [x] | implicit-self.swift:17:14:17:17 | self [x] | provenance | |
208216
| implicit-self.swift:16:9:16:14 | ... .x | implicit-self.swift:16:9:16:12 | [post] self [x] | provenance | |
209217
| implicit-self.swift:16:18:16:31 | source(...) | implicit-self.swift:16:9:16:14 | ... .x | provenance | |
@@ -641,6 +649,15 @@ nodes
641649
| flow-summaries.swift:28:47:28:49 | [post] box [outputField] | semmle.label | [post] box [outputField] |
642650
| flow-summaries.swift:29:10:29:12 | box [outputField] | semmle.label | box [outputField] |
643651
| flow-summaries.swift:29:10:29:24 | ... .outputField | semmle.label | ... .outputField |
652+
| flow-summaries.swift:33:9:33:9 | x | semmle.label | x |
653+
| flow-summaries.swift:33:13:33:26 | source(...) | semmle.label | source(...) |
654+
| flow-summaries.swift:34:9:34:9 | y [unusualNameNotAppearingInSourceCode] | semmle.label | y [unusualNameNotAppearingInSourceCode] |
655+
| flow-summaries.swift:34:13:34:40 | ... .storeUnusualName(...) [unusualNameNotAppearingInSourceCode] | semmle.label | ... .storeUnusualName(...) [unusualNameNotAppearingInSourceCode] |
656+
| flow-summaries.swift:34:39:34:39 | x | semmle.label | x |
657+
| flow-summaries.swift:35:9:35:9 | z | semmle.label | z |
658+
| flow-summaries.swift:35:13:35:39 | ... .readUnusualName(...) | semmle.label | ... .readUnusualName(...) |
659+
| flow-summaries.swift:35:38:35:38 | y [unusualNameNotAppearingInSourceCode] | semmle.label | y [unusualNameNotAppearingInSourceCode] |
660+
| flow-summaries.swift:36:10:36:10 | z | semmle.label | z |
644661
| implicit-self.swift:16:9:16:12 | [post] self [x] | semmle.label | [post] self [x] |
645662
| implicit-self.swift:16:9:16:14 | ... .x | semmle.label | ... .x |
646663
| implicit-self.swift:16:18:16:31 | source(...) | semmle.label | source(...) |
@@ -955,6 +972,7 @@ testFailures
955972
| flow-summaries.swift:18:10:18:10 | y | flow-summaries.swift:16:18:16:31 | source(...) | flow-summaries.swift:18:10:18:10 | y | $@ | flow-summaries.swift:16:18:16:31 | source(...) | source(...) |
956973
| flow-summaries.swift:18:10:18:10 | y | flow-summaries.swift:16:34:16:47 | source(...) | flow-summaries.swift:18:10:18:10 | y | $@ | flow-summaries.swift:16:34:16:47 | source(...) | source(...) |
957974
| flow-summaries.swift:29:10:29:24 | ... .outputField | flow-summaries.swift:25:13:25:26 | source(...) | flow-summaries.swift:29:10:29:24 | ... .outputField | $@ | flow-summaries.swift:25:13:25:26 | source(...) | source(...) |
975+
| flow-summaries.swift:36:10:36:10 | z | flow-summaries.swift:33:13:33:26 | source(...) | flow-summaries.swift:36:10:36:10 | z | $@ | flow-summaries.swift:33:13:33:26 | source(...) | source(...) |
958976
| implicit-self.swift:17:14:17:19 | ... .x | implicit-self.swift:16:18:16:31 | source(...) | implicit-self.swift:17:14:17:19 | ... .x | $@ | implicit-self.swift:16:18:16:31 | source(...) | source(...) |
959977
| implicit-self.swift:23:14:23:14 | x | implicit-self.swift:22:13:22:26 | source(...) | implicit-self.swift:23:14:23:14 | x | $@ | implicit-self.swift:22:13:22:26 | source(...) | source(...) |
960978
| implicit-self.swift:29:14:29:19 | ... .x | implicit-self.swift:28:13:28:26 | source(...) | implicit-self.swift:29:14:29:19 | ... .x | $@ | implicit-self.swift:28:13:28:26 | source(...) | source(...) |

0 commit comments

Comments
 (0)