mirror of
https://github.com/github/codeql.git
synced 2026-08-03 08:52:55 +02:00
Test-side changes accompanying the dataflow migration:
* Test queries (.ql) and shared test harness (TestSummaries,
TestTaintLib) qualify CFG / SSA types with Cfg:: / SsaImpl::,
bridge via AST (Name, Call, ...) instead of legacy NameNode /
CallNode, and switch GlobalSsaVariable / EssaVariable usages
to the new adapter API.
* .expected files updated for legitimate precision and toString
changes:
- phi-node def-use edges newly exposed in def_use_counts.
- scope-exit synthetic use surfaces one extra implicit use
in use-use-counts.
- For [empty]/[non-empty] outcome rows added in
EnclosingCallable.
- SsaSourceVariable / Global Variable label cosmetics
normalised throughout.
* Inline annotations:
- typetracking/test.py: removed MISSING:tracked on lines
93/95 (now found), added SPURIOUS:tracked on line 108
(decorator over-reach).
- global-flow/test.py: added SPURIOUS writes=g_mod on line
20 (correctly reports immediately-overwritten write).
- tainttracking/customSanitizer/test.py: marked
try/except: ensure_tainted(s) cases as MISSING: tainted
(no-raise CFG abstraction does not connect try body to
except body).
- coverage/test.py: marked
SINK(return_from_inner_scope([])) as
MISSING: flow=... pending closer investigation.
* regression/{dataflow,custom_dataflow}.expected: accept two
if/else cond-correlation over-reaches (documented limitation;
same imprecision applies under legacy semantics by design).
After this change the dataflow library-tests stand at 62 of 64
passing; the two remaining failures are tracked under the
ImportStarRefinement workstream.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
115 lines
12 KiB
Plaintext
115 lines
12 KiB
Plaintext
edges
|
|
| summaries.py:32:1:32:7 | tainted | summaries.py:33:6:33:12 | tainted | provenance | |
|
|
| summaries.py:32:11:32:26 | After identity() | summaries.py:32:1:32:7 | tainted | provenance | |
|
|
| summaries.py:32:20:32:25 | SOURCE | summaries.py:32:11:32:26 | After identity() | provenance | identity |
|
|
| summaries.py:36:1:36:14 | tainted_lambda | summaries.py:37:6:37:19 | tainted_lambda | provenance | |
|
|
| summaries.py:36:18:36:54 | After apply_lambda() | summaries.py:36:1:36:14 | tainted_lambda | provenance | |
|
|
| summaries.py:36:38:36:38 | x | summaries.py:36:41:36:45 | After BinaryExpr | provenance | |
|
|
| summaries.py:36:48:36:53 | SOURCE | summaries.py:36:18:36:54 | After apply_lambda() | provenance | apply_lambda |
|
|
| summaries.py:36:48:36:53 | SOURCE | summaries.py:36:38:36:38 | x | provenance | apply_lambda |
|
|
| summaries.py:44:1:44:12 | tainted_list | summaries.py:45:6:45:20 | After Subscript | provenance | |
|
|
| summaries.py:44:1:44:12 | tainted_list [List element] | summaries.py:45:6:45:17 | tainted_list [List element] | provenance | |
|
|
| summaries.py:44:16:44:33 | After reversed() | summaries.py:44:1:44:12 | tainted_list | provenance | |
|
|
| summaries.py:44:16:44:33 | After reversed() [List element] | summaries.py:44:1:44:12 | tainted_list [List element] | provenance | |
|
|
| summaries.py:44:25:44:32 | After List | summaries.py:44:16:44:33 | After reversed() | provenance | builtins.reversed |
|
|
| summaries.py:44:25:44:32 | After List [List element] | summaries.py:44:16:44:33 | After reversed() [List element] | provenance | builtins.reversed |
|
|
| summaries.py:44:26:44:31 | SOURCE | summaries.py:44:25:44:32 | After List | provenance | |
|
|
| summaries.py:44:26:44:31 | SOURCE | summaries.py:44:25:44:32 | After List [List element] | provenance | |
|
|
| summaries.py:45:6:45:17 | tainted_list [List element] | summaries.py:45:6:45:20 | After Subscript | provenance | |
|
|
| summaries.py:48:15:48:15 | x | summaries.py:49:12:49:18 | After BinaryExpr | provenance | |
|
|
| summaries.py:51:1:51:14 | tainted_mapped [List element] | summaries.py:52:6:52:19 | tainted_mapped [List element] | provenance | |
|
|
| summaries.py:51:18:51:46 | After list_map() [List element] | summaries.py:51:1:51:14 | tainted_mapped [List element] | provenance | |
|
|
| summaries.py:51:38:51:45 | After List [List element] | summaries.py:48:15:48:15 | x | provenance | list_map |
|
|
| summaries.py:51:38:51:45 | After List [List element] | summaries.py:51:18:51:46 | After list_map() [List element] | provenance | list_map |
|
|
| summaries.py:51:39:51:44 | SOURCE | summaries.py:51:38:51:45 | After List [List element] | provenance | |
|
|
| summaries.py:52:6:52:19 | tainted_mapped [List element] | summaries.py:52:6:52:22 | After Subscript | provenance | |
|
|
| summaries.py:54:23:54:23 | x | summaries.py:55:12:55:12 | x | provenance | |
|
|
| summaries.py:57:1:57:23 | tainted_mapped_explicit [List element] | summaries.py:58:6:58:28 | tainted_mapped_explicit [List element] | provenance | |
|
|
| summaries.py:57:27:57:63 | After list_map() [List element] | summaries.py:57:1:57:23 | tainted_mapped_explicit [List element] | provenance | |
|
|
| summaries.py:57:55:57:62 | After List [List element] | summaries.py:54:23:54:23 | x | provenance | list_map |
|
|
| summaries.py:57:55:57:62 | After List [List element] | summaries.py:57:27:57:63 | After list_map() [List element] | provenance | list_map |
|
|
| summaries.py:57:56:57:61 | SOURCE | summaries.py:57:55:57:62 | After List [List element] | provenance | |
|
|
| summaries.py:58:6:58:28 | tainted_mapped_explicit [List element] | summaries.py:58:6:58:31 | After Subscript | provenance | |
|
|
| summaries.py:60:1:60:22 | tainted_mapped_summary [List element] | summaries.py:61:6:61:27 | tainted_mapped_summary [List element] | provenance | |
|
|
| summaries.py:60:26:60:53 | After list_map() [List element] | summaries.py:60:1:60:22 | tainted_mapped_summary [List element] | provenance | |
|
|
| summaries.py:60:45:60:52 | After List [List element] | summaries.py:60:26:60:53 | After list_map() [List element] | provenance | list_map |
|
|
| summaries.py:60:46:60:51 | SOURCE | summaries.py:60:45:60:52 | After List [List element] | provenance | |
|
|
| summaries.py:61:6:61:27 | tainted_mapped_summary [List element] | summaries.py:61:6:61:30 | After Subscript | provenance | |
|
|
| summaries.py:63:1:63:12 | tainted_list [List element] | summaries.py:64:6:64:17 | tainted_list [List element] | provenance | |
|
|
| summaries.py:63:16:63:41 | After append_to_list() [List element] | summaries.py:63:1:63:12 | tainted_list [List element] | provenance | |
|
|
| summaries.py:63:35:63:40 | SOURCE | summaries.py:63:16:63:41 | After append_to_list() [List element] | provenance | append_to_list |
|
|
| summaries.py:64:6:64:17 | tainted_list [List element] | summaries.py:64:6:64:20 | After Subscript | provenance | |
|
|
| summaries.py:67:1:67:18 | tainted_resultlist | summaries.py:68:6:68:26 | After Subscript | provenance | |
|
|
| summaries.py:67:1:67:18 | tainted_resultlist [List element] | summaries.py:68:6:68:23 | tainted_resultlist [List element] | provenance | |
|
|
| summaries.py:67:22:67:39 | After json_loads() [List element] | summaries.py:67:1:67:18 | tainted_resultlist [List element] | provenance | |
|
|
| summaries.py:67:33:67:38 | SOURCE | summaries.py:67:1:67:18 | tainted_resultlist | provenance | Decoding-JSON |
|
|
| summaries.py:67:33:67:38 | SOURCE | summaries.py:67:22:67:39 | After json_loads() [List element] | provenance | json.loads |
|
|
| summaries.py:68:6:68:23 | tainted_resultlist [List element] | summaries.py:68:6:68:26 | After Subscript | provenance | |
|
|
nodes
|
|
| summaries.py:32:1:32:7 | tainted | semmle.label | tainted |
|
|
| summaries.py:32:11:32:26 | After identity() | semmle.label | After identity() |
|
|
| summaries.py:32:20:32:25 | SOURCE | semmle.label | SOURCE |
|
|
| summaries.py:33:6:33:12 | tainted | semmle.label | tainted |
|
|
| summaries.py:36:1:36:14 | tainted_lambda | semmle.label | tainted_lambda |
|
|
| summaries.py:36:18:36:54 | After apply_lambda() | semmle.label | After apply_lambda() |
|
|
| summaries.py:36:38:36:38 | x | semmle.label | x |
|
|
| summaries.py:36:41:36:45 | After BinaryExpr | semmle.label | After BinaryExpr |
|
|
| summaries.py:36:48:36:53 | SOURCE | semmle.label | SOURCE |
|
|
| summaries.py:37:6:37:19 | tainted_lambda | semmle.label | tainted_lambda |
|
|
| summaries.py:44:1:44:12 | tainted_list | semmle.label | tainted_list |
|
|
| summaries.py:44:1:44:12 | tainted_list [List element] | semmle.label | tainted_list [List element] |
|
|
| summaries.py:44:16:44:33 | After reversed() | semmle.label | After reversed() |
|
|
| summaries.py:44:16:44:33 | After reversed() [List element] | semmle.label | After reversed() [List element] |
|
|
| summaries.py:44:25:44:32 | After List | semmle.label | After List |
|
|
| summaries.py:44:25:44:32 | After List [List element] | semmle.label | After List [List element] |
|
|
| summaries.py:44:26:44:31 | SOURCE | semmle.label | SOURCE |
|
|
| summaries.py:45:6:45:17 | tainted_list [List element] | semmle.label | tainted_list [List element] |
|
|
| summaries.py:45:6:45:20 | After Subscript | semmle.label | After Subscript |
|
|
| summaries.py:48:15:48:15 | x | semmle.label | x |
|
|
| summaries.py:49:12:49:18 | After BinaryExpr | semmle.label | After BinaryExpr |
|
|
| summaries.py:51:1:51:14 | tainted_mapped [List element] | semmle.label | tainted_mapped [List element] |
|
|
| summaries.py:51:18:51:46 | After list_map() [List element] | semmle.label | After list_map() [List element] |
|
|
| summaries.py:51:38:51:45 | After List [List element] | semmle.label | After List [List element] |
|
|
| summaries.py:51:39:51:44 | SOURCE | semmle.label | SOURCE |
|
|
| summaries.py:52:6:52:19 | tainted_mapped [List element] | semmle.label | tainted_mapped [List element] |
|
|
| summaries.py:52:6:52:22 | After Subscript | semmle.label | After Subscript |
|
|
| summaries.py:54:23:54:23 | x | semmle.label | x |
|
|
| summaries.py:55:12:55:12 | x | semmle.label | x |
|
|
| summaries.py:57:1:57:23 | tainted_mapped_explicit [List element] | semmle.label | tainted_mapped_explicit [List element] |
|
|
| summaries.py:57:27:57:63 | After list_map() [List element] | semmle.label | After list_map() [List element] |
|
|
| summaries.py:57:55:57:62 | After List [List element] | semmle.label | After List [List element] |
|
|
| summaries.py:57:56:57:61 | SOURCE | semmle.label | SOURCE |
|
|
| summaries.py:58:6:58:28 | tainted_mapped_explicit [List element] | semmle.label | tainted_mapped_explicit [List element] |
|
|
| summaries.py:58:6:58:31 | After Subscript | semmle.label | After Subscript |
|
|
| summaries.py:60:1:60:22 | tainted_mapped_summary [List element] | semmle.label | tainted_mapped_summary [List element] |
|
|
| summaries.py:60:26:60:53 | After list_map() [List element] | semmle.label | After list_map() [List element] |
|
|
| summaries.py:60:45:60:52 | After List [List element] | semmle.label | After List [List element] |
|
|
| summaries.py:60:46:60:51 | SOURCE | semmle.label | SOURCE |
|
|
| summaries.py:61:6:61:27 | tainted_mapped_summary [List element] | semmle.label | tainted_mapped_summary [List element] |
|
|
| summaries.py:61:6:61:30 | After Subscript | semmle.label | After Subscript |
|
|
| summaries.py:63:1:63:12 | tainted_list [List element] | semmle.label | tainted_list [List element] |
|
|
| summaries.py:63:16:63:41 | After append_to_list() [List element] | semmle.label | After append_to_list() [List element] |
|
|
| summaries.py:63:35:63:40 | SOURCE | semmle.label | SOURCE |
|
|
| summaries.py:64:6:64:17 | tainted_list [List element] | semmle.label | tainted_list [List element] |
|
|
| summaries.py:64:6:64:20 | After Subscript | semmle.label | After Subscript |
|
|
| summaries.py:67:1:67:18 | tainted_resultlist | semmle.label | tainted_resultlist |
|
|
| summaries.py:67:1:67:18 | tainted_resultlist [List element] | semmle.label | tainted_resultlist [List element] |
|
|
| summaries.py:67:22:67:39 | After json_loads() [List element] | semmle.label | After json_loads() [List element] |
|
|
| summaries.py:67:33:67:38 | SOURCE | semmle.label | SOURCE |
|
|
| summaries.py:68:6:68:23 | tainted_resultlist [List element] | semmle.label | tainted_resultlist [List element] |
|
|
| summaries.py:68:6:68:26 | After Subscript | semmle.label | After Subscript |
|
|
subpaths
|
|
| summaries.py:36:48:36:53 | SOURCE | summaries.py:36:38:36:38 | x | summaries.py:36:41:36:45 | After BinaryExpr | summaries.py:36:18:36:54 | After apply_lambda() |
|
|
| summaries.py:51:38:51:45 | After List [List element] | summaries.py:48:15:48:15 | x | summaries.py:49:12:49:18 | After BinaryExpr | summaries.py:51:18:51:46 | After list_map() [List element] |
|
|
| summaries.py:57:55:57:62 | After List [List element] | summaries.py:54:23:54:23 | x | summaries.py:55:12:55:12 | x | summaries.py:57:27:57:63 | After list_map() [List element] |
|
|
invalidSpecComponent
|
|
#select
|
|
| summaries.py:33:6:33:12 | tainted | summaries.py:32:20:32:25 | SOURCE | summaries.py:33:6:33:12 | tainted | $@ | summaries.py:32:20:32:25 | SOURCE | SOURCE |
|
|
| summaries.py:37:6:37:19 | tainted_lambda | summaries.py:36:48:36:53 | SOURCE | summaries.py:37:6:37:19 | tainted_lambda | $@ | summaries.py:36:48:36:53 | SOURCE | SOURCE |
|
|
| summaries.py:45:6:45:20 | After Subscript | summaries.py:44:26:44:31 | SOURCE | summaries.py:45:6:45:20 | After Subscript | $@ | summaries.py:44:26:44:31 | SOURCE | SOURCE |
|
|
| summaries.py:52:6:52:22 | After Subscript | summaries.py:51:39:51:44 | SOURCE | summaries.py:52:6:52:22 | After Subscript | $@ | summaries.py:51:39:51:44 | SOURCE | SOURCE |
|
|
| summaries.py:58:6:58:31 | After Subscript | summaries.py:57:56:57:61 | SOURCE | summaries.py:58:6:58:31 | After Subscript | $@ | summaries.py:57:56:57:61 | SOURCE | SOURCE |
|
|
| summaries.py:61:6:61:30 | After Subscript | summaries.py:60:46:60:51 | SOURCE | summaries.py:61:6:61:30 | After Subscript | $@ | summaries.py:60:46:60:51 | SOURCE | SOURCE |
|
|
| summaries.py:64:6:64:20 | After Subscript | summaries.py:63:35:63:40 | SOURCE | summaries.py:64:6:64:20 | After Subscript | $@ | summaries.py:63:35:63:40 | SOURCE | SOURCE |
|
|
| summaries.py:68:6:68:26 | After Subscript | summaries.py:67:33:67:38 | SOURCE | summaries.py:68:6:68:26 | After Subscript | $@ | summaries.py:67:33:67:38 | SOURCE | SOURCE |
|