Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions misc/scripts/accept-expected-changes-from-ci.py
Original file line number Diff line number Diff line change
Expand Up @@ -208,7 +208,7 @@ def get_log_content(status: GithubStatus) -> str:
LOGGER.debug(f"'{status.context}': Getting logs")
if status.job_ids:
contents = [subprocess.check_output(
["gh", "api", f"/repos/{status.nwo}/actions/jobs/{job_id}/logs"],
["gh", "api", f"/repos/{status.nwo}/actions/jobs/{job_id}/logs", "--allow-escape-sequences"],
).decode("utf-8") for job_id in status.job_ids]
content = "\n".join(contents)
else:
Expand Down Expand Up @@ -275,7 +275,7 @@ def main(pr_number: Optional[int], sha_override: Optional[str] = None, force=Fal

lang_test_failures: List[GithubStatus] = list()
for status in newest_status.values():
if " Language Tests" in status.context or status.context in supported_internal_status_language_test_names:
if " Language Tests" in status.context and not " Language Tests Windows" in status.context or status.context in supported_internal_status_language_test_names:
if status.state == "failure":
lang_test_failures.append(status)
elif status.state == "pending":
Expand Down
48 changes: 36 additions & 12 deletions rust/ql/test/library-tests/dataflow/models/models.expected
Original file line number Diff line number Diff line change
Expand Up @@ -265,18 +265,28 @@ edges
| main.rs:281:9:281:37 | ...::C {...} [C] | main.rs:281:35:281:35 | i | provenance | |
| main.rs:281:35:281:35 | i | main.rs:281:47:281:47 | i | provenance | |
| main.rs:281:35:281:35 | i | main.rs:281:47:281:47 | i | provenance | |
| main.rs:303:24:303:24 | a | main.rs:302:26:302:26 | a | provenance | Src:MaD:17 |
| main.rs:303:24:303:24 | a | main.rs:302:26:302:26 | a | provenance | Src:MaD:17 |
| main.rs:305:24:307:9 | \|...\| ... | main.rs:306:18:306:18 | a | provenance | Src:MaD:17 |
| main.rs:305:24:307:9 | \|...\| ... | main.rs:306:18:306:18 | a | provenance | Src:MaD:17 |
| main.rs:312:24:312:24 | f | main.rs:310:18:310:18 | a | provenance | Src:MaD:17 |
| main.rs:312:24:312:24 | f | main.rs:310:18:310:18 | a | provenance | Src:MaD:17 |
| main.rs:314:24:316:9 | \|...\| ... | main.rs:315:18:315:18 | a | provenance | Src:MaD:17 |
| main.rs:314:24:316:9 | \|...\| ... | main.rs:315:18:315:18 | a | provenance | Src:MaD:17 |
| main.rs:302:18:302:18 | ... | main.rs:302:26:302:26 | a | provenance | |
| main.rs:302:18:302:18 | ... | main.rs:302:26:302:26 | a | provenance | |
| main.rs:303:24:303:24 | a | main.rs:302:18:302:18 | ... | provenance | Src:MaD:17 |
| main.rs:303:24:303:24 | a | main.rs:302:18:302:18 | ... | provenance | Src:MaD:17 |
| main.rs:305:24:307:9 | \|...\| ... | main.rs:305:25:305:25 | ... | provenance | Src:MaD:17 |
| main.rs:305:24:307:9 | \|...\| ... | main.rs:305:25:305:25 | ... | provenance | Src:MaD:17 |
| main.rs:305:25:305:25 | ... | main.rs:306:18:306:18 | a | provenance | |
| main.rs:305:25:305:25 | ... | main.rs:306:18:306:18 | a | provenance | |
| main.rs:309:14:309:19 | ...: i64 | main.rs:310:18:310:18 | a | provenance | |
| main.rs:309:14:309:19 | ...: i64 | main.rs:310:18:310:18 | a | provenance | |
| main.rs:312:24:312:24 | f | main.rs:309:14:309:19 | ...: i64 | provenance | Src:MaD:17 |
| main.rs:312:24:312:24 | f | main.rs:309:14:309:19 | ...: i64 | provenance | Src:MaD:17 |
| main.rs:314:24:316:9 | \|...\| ... | main.rs:314:36:314:36 | ... | provenance | Src:MaD:17 |
| main.rs:314:24:316:9 | \|...\| ... | main.rs:314:36:314:36 | ... | provenance | Src:MaD:17 |
| main.rs:314:36:314:36 | ... | main.rs:315:18:315:18 | a | provenance | |
| main.rs:314:36:314:36 | ... | main.rs:315:18:315:18 | a | provenance | |
| main.rs:318:31:329:9 | \|...\| ... | main.rs:318:31:329:9 | \|...\| ... [E, Some] | provenance | Src:MaD:18 |
| main.rs:318:31:329:9 | \|...\| ... | main.rs:318:31:329:9 | \|...\| ... [E, Some] | provenance | Src:MaD:18 |
| main.rs:318:31:329:9 | \|...\| ... [E, Some] | main.rs:319:19:319:19 | e [E, Some] | provenance | |
| main.rs:318:31:329:9 | \|...\| ... [E, Some] | main.rs:319:19:319:19 | e [E, Some] | provenance | |
| main.rs:318:31:329:9 | \|...\| ... [E, Some] | main.rs:318:32:318:32 | ... [E, Some] | provenance | |
| main.rs:318:31:329:9 | \|...\| ... [E, Some] | main.rs:318:32:318:32 | ... [E, Some] | provenance | |
| main.rs:318:32:318:32 | ... [E, Some] | main.rs:319:19:319:19 | e [E, Some] | provenance | |
| main.rs:318:32:318:32 | ... [E, Some] | main.rs:319:19:319:19 | e [E, Some] | provenance | |
| main.rs:319:19:319:19 | e [E, Some] | main.rs:322:17:322:45 | ...::E {...} [E, Some] | provenance | |
| main.rs:319:19:319:19 | e [E, Some] | main.rs:322:17:322:45 | ...::E {...} [E, Some] | provenance | |
| main.rs:322:17:322:45 | ...::E {...} [E, Some] | main.rs:322:43:322:43 | o [Some] | provenance | |
Expand All @@ -291,12 +301,14 @@ edges
| main.rs:324:30:324:30 | i | main.rs:324:41:324:41 | i | provenance | |
| main.rs:344:21:344:29 | source(...) | main.rs:345:19:345:19 | a | provenance | Sink:MaD:7 |
| main.rs:344:21:344:29 | source(...) | main.rs:345:19:345:19 | a | provenance | Sink:MaD:7 |
| main.rs:347:22:352:9 | { ... } [E, Some] | main.rs:353:26:353:26 | b [E, Some] | provenance | |
| main.rs:347:22:352:9 | { ... } [E, Some] | main.rs:353:26:353:26 | b [E, Some] | provenance | |
| main.rs:348:17:348:17 | s | main.rs:350:39:350:39 | s | provenance | |
| main.rs:348:17:348:17 | s | main.rs:350:39:350:39 | s | provenance | |
| main.rs:348:21:348:29 | source(...) | main.rs:348:17:348:17 | s | provenance | |
| main.rs:348:21:348:29 | source(...) | main.rs:348:17:348:17 | s | provenance | |
| main.rs:349:13:351:13 | ...::E {...} [E, Some] | main.rs:353:26:353:26 | b [E, Some] | provenance | |
| main.rs:349:13:351:13 | ...::E {...} [E, Some] | main.rs:353:26:353:26 | b [E, Some] | provenance | |
| main.rs:349:13:351:13 | ...::E {...} [E, Some] | main.rs:347:22:352:9 | { ... } [E, Some] | provenance | |
| main.rs:349:13:351:13 | ...::E {...} [E, Some] | main.rs:347:22:352:9 | { ... } [E, Some] | provenance | |
| main.rs:350:26:350:40 | ...::Some(...) [Some] | main.rs:349:13:351:13 | ...::E {...} [E, Some] | provenance | |
| main.rs:350:26:350:40 | ...::Some(...) [Some] | main.rs:349:13:351:13 | ...::E {...} [E, Some] | provenance | |
| main.rs:350:39:350:39 | s | main.rs:350:26:350:40 | ...::Some(...) [Some] | provenance | |
Expand Down Expand Up @@ -654,26 +666,36 @@ nodes
| main.rs:281:35:281:35 | i | semmle.label | i |
| main.rs:281:47:281:47 | i | semmle.label | i |
| main.rs:281:47:281:47 | i | semmle.label | i |
| main.rs:302:18:302:18 | ... | semmle.label | ... |
| main.rs:302:18:302:18 | ... | semmle.label | ... |
| main.rs:302:26:302:26 | a | semmle.label | a |
| main.rs:302:26:302:26 | a | semmle.label | a |
| main.rs:303:24:303:24 | a | semmle.label | a |
| main.rs:303:24:303:24 | a | semmle.label | a |
| main.rs:305:24:307:9 | \|...\| ... | semmle.label | \|...\| ... |
| main.rs:305:24:307:9 | \|...\| ... | semmle.label | \|...\| ... |
| main.rs:305:25:305:25 | ... | semmle.label | ... |
| main.rs:305:25:305:25 | ... | semmle.label | ... |
| main.rs:306:18:306:18 | a | semmle.label | a |
| main.rs:306:18:306:18 | a | semmle.label | a |
| main.rs:309:14:309:19 | ...: i64 | semmle.label | ...: i64 |
| main.rs:309:14:309:19 | ...: i64 | semmle.label | ...: i64 |
| main.rs:310:18:310:18 | a | semmle.label | a |
| main.rs:310:18:310:18 | a | semmle.label | a |
| main.rs:312:24:312:24 | f | semmle.label | f |
| main.rs:312:24:312:24 | f | semmle.label | f |
| main.rs:314:24:316:9 | \|...\| ... | semmle.label | \|...\| ... |
| main.rs:314:24:316:9 | \|...\| ... | semmle.label | \|...\| ... |
| main.rs:314:36:314:36 | ... | semmle.label | ... |
| main.rs:314:36:314:36 | ... | semmle.label | ... |
| main.rs:315:18:315:18 | a | semmle.label | a |
| main.rs:315:18:315:18 | a | semmle.label | a |
| main.rs:318:31:329:9 | \|...\| ... | semmle.label | \|...\| ... |
| main.rs:318:31:329:9 | \|...\| ... | semmle.label | \|...\| ... |
| main.rs:318:31:329:9 | \|...\| ... [E, Some] | semmle.label | \|...\| ... [E, Some] |
| main.rs:318:31:329:9 | \|...\| ... [E, Some] | semmle.label | \|...\| ... [E, Some] |
| main.rs:318:32:318:32 | ... [E, Some] | semmle.label | ... [E, Some] |
| main.rs:318:32:318:32 | ... [E, Some] | semmle.label | ... [E, Some] |
| main.rs:319:19:319:19 | e [E, Some] | semmle.label | e [E, Some] |
| main.rs:319:19:319:19 | e [E, Some] | semmle.label | e [E, Some] |
| main.rs:322:17:322:45 | ...::E {...} [E, Some] | semmle.label | ...::E {...} [E, Some] |
Expand All @@ -692,6 +714,8 @@ nodes
| main.rs:344:21:344:29 | source(...) | semmle.label | source(...) |
| main.rs:345:19:345:19 | a | semmle.label | a |
| main.rs:345:19:345:19 | a | semmle.label | a |
| main.rs:347:22:352:9 | { ... } [E, Some] | semmle.label | { ... } [E, Some] |
| main.rs:347:22:352:9 | { ... } [E, Some] | semmle.label | { ... } [E, Some] |
| main.rs:348:17:348:17 | s | semmle.label | s |
| main.rs:348:17:348:17 | s | semmle.label | s |
| main.rs:348:21:348:29 | source(...) | semmle.label | source(...) |
Expand Down
16 changes: 10 additions & 6 deletions shared/dataflow/codeql/dataflow/internal/FlowSummaryImpl.qll
Original file line number Diff line number Diff line change
Expand Up @@ -2260,20 +2260,24 @@ module Make<
/** Provides a compilation of flow summaries to atomic data-flow steps. */
module Steps<StepsInputSig StepsInput> {
private predicate sourceExitStep(SourceOutputNode nodeFrom, Node nodeTo, boolean local) {
exists(SummaryComponent sc, SourceSinkReportingElement e |
nodeFrom.isExit(_, sc, e, _) and
exists(SummaryComponent sc, SourceSinkReportingElement e, string model |
nodeFrom.isExit(_, sc, e, model) and
nodeTo = getSourceDataFlowNode(e, sc) and
if e.getEnclosingCallable() = getNodeEnclosingCallable(nodeTo)
if
e.getEnclosingCallable() = getNodeEnclosingCallable(nodeTo) and
(nodeFrom.isEntry(_, model) or summaryStoreStep(_, _, nodeFrom))
then local = true
else local = false
)
}

private predicate sinkEntryStep(Node nodeFrom, SinkInputNode nodeTo, boolean local) {
exists(SummaryComponent sc, SourceSinkReportingElement e |
nodeTo.isEntry(_, sc, e, _) and
exists(SummaryComponent sc, SourceSinkReportingElement e, string model |
nodeTo.isEntry(_, sc, e, model) and
nodeFrom = getSinkDataFlowNode(e, sc) and
if e.getEnclosingCallable() = getNodeEnclosingCallable(nodeFrom)
if
e.getEnclosingCallable() = getNodeEnclosingCallable(nodeFrom) and
(nodeTo.isExit(_, model) or summaryReadStep(nodeTo, _, _))
then local = true
else local = false
)
Expand Down
Loading