Files
codeql/python/ql/test/library-tests/dataflow/summaries/summaries.expected
yoff 8f6c24678f Python: update dataflow tests for new CFG + shared SSA
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>
2026-05-28 21:09:47 +00:00

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 |