zizmor 1.13.0__tar.gz → 1.14.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of zizmor might be problematic. Click here for more details.
- {zizmor-1.13.0 → zizmor-1.14.1}/Cargo.lock +44 -32
- {zizmor-1.13.0 → zizmor-1.14.1}/Cargo.toml +11 -11
- {zizmor-1.13.0 → zizmor-1.14.1}/PKG-INFO +8 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/github-actions-expressions/src/lib.rs +4 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/Cargo.toml +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/README.md +7 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/src/audit/cache_poisoning.rs +10 -6
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/src/audit/excessive_permissions.rs +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/src/audit/known_vulnerable_actions.rs +9 -8
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/src/audit/mod.rs +1 -8
- zizmor-1.14.1/crates/zizmor/src/audit/ref_version_mismatch.rs +164 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/src/audit/self_hosted_runner.rs +4 -4
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/src/audit/template_injection.rs +4 -4
- zizmor-1.14.1/crates/zizmor/src/audit/unsound_condition.rs +528 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/src/audit/use_trusted_publishing.rs +54 -12
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/src/config.rs +119 -62
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/src/finding/location.rs +17 -8
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/src/finding.rs +4 -34
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/src/github_api.rs +148 -100
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/src/lsp.rs +11 -5
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/src/main.rs +219 -27
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/src/models/action.rs +3 -5
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/src/models/coordinate.rs +4 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/src/models/uses.rs +25 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/src/models/workflow.rs +3 -5
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/src/output/github.rs +0 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/src/output/plain.rs +1 -3
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/src/output/sarif.rs +0 -2
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/src/registry/input.rs +128 -107
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/src/registry.rs +2 -2
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/src/utils.rs +7 -5
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/acceptance.rs +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/config.rs +42 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/e2e.rs +33 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshot.rs +50 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__config__ignores_config_in_dotgithub.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__config__ignores_config_in_dotgithub_from_file_input.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__config__ignores_config_in_root.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__config__ignores_config_in_root_from_child_dir.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__config__ignores_config_in_root_from_file_input.snap +1 -1
- zizmor-1.14.1/crates/zizmor/tests/integration/snapshots/integration__config__invalid_configs-2.snap +14 -0
- zizmor-1.14.1/crates/zizmor/tests/integration/snapshots/integration__config__invalid_configs-3.snap +11 -0
- zizmor-1.14.1/crates/zizmor/tests/integration/snapshots/integration__config__invalid_configs.snap +14 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__e2e__gha_hazmat.snap +3 -2
- zizmor-1.14.1/crates/zizmor/tests/integration/snapshots/integration__e2e__invalid_config_file.snap +14 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__e2e__invalid_inputs-10.snap +0 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__e2e__invalid_inputs-2.snap +0 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__e2e__invalid_inputs-3.snap +0 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__e2e__invalid_inputs-4.snap +0 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__e2e__invalid_inputs-5.snap +0 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__e2e__invalid_inputs-6.snap +0 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__e2e__invalid_inputs-7.snap +0 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__e2e__invalid_inputs-8.snap +0 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__e2e__invalid_inputs-9.snap +0 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__e2e__invalid_inputs.snap +0 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__e2e__issue_1065.snap +2 -1
- zizmor-1.14.1/crates/zizmor/tests/integration/snapshots/integration__e2e__issue_1116_strict_collection_remote_input.snap +10 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__e2e__issue_569.snap +2 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__e2e__issue_726.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__e2e__menagerie-2.snap +2 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__e2e__menagerie.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__e2e__pr_960_backstop.snap +1 -1
- zizmor-1.14.1/crates/zizmor/tests/integration/snapshots/integration__e2e__warn_on_min_confidence_unknown.snap +6 -0
- zizmor-1.14.1/crates/zizmor/tests/integration/snapshots/integration__e2e__warn_on_min_severity_unknown.snap +6 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__anonymous_definition.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__artipacked-2.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__artipacked-3.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__artipacked-4.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__artipacked-5.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__artipacked.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__bot_conditions.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__cache_poisoning-10.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__cache_poisoning-11.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__cache_poisoning-12.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__cache_poisoning-13.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__cache_poisoning-15.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__cache_poisoning-16.snap +1 -1
- zizmor-1.14.1/crates/zizmor/tests/integration/snapshots/integration__snapshot__cache_poisoning-17.snap +39 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__cache_poisoning-2.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__cache_poisoning-3.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__cache_poisoning-4.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__cache_poisoning-5.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__cache_poisoning-8.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__cache_poisoning-9.snap +1 -1
- zizmor-1.14.1/crates/zizmor/tests/integration/snapshots/integration__snapshot__cant_retrieve-2.snap +8 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__cant_retrieve.snap +2 -2
- zizmor-1.14.1/crates/zizmor/tests/integration/snapshots/integration__snapshot__cant_retrieve_no_gh_token.snap +11 -0
- zizmor-1.14.1/crates/zizmor/tests/integration/snapshots/integration__snapshot__cant_retrieve_offline.snap +11 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__excessive_permissions-10.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__excessive_permissions-11.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__excessive_permissions-12.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__excessive_permissions-2.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__excessive_permissions-3.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__excessive_permissions-4.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__excessive_permissions-5.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__excessive_permissions-7.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__excessive_permissions-8.snap +2 -2
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__forbidden_uses-2.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__forbidden_uses-3.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__forbidden_uses-4.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__forbidden_uses-5.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__forbidden_uses-6.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__github_env-2.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__github_env-3.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__github_env.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__github_output.snap +1 -2
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__insecure_commands-2.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__insecure_commands-3.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__insecure_commands-4.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__insecure_commands.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__obfuscation-2.snap +1 -1
- zizmor-1.14.1/crates/zizmor/tests/integration/snapshots/integration__snapshot__obfuscation-3.snap +5 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__obfuscation.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__overprovisioned_secrets.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__ref_confusion-2.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__ref_confusion.snap +1 -1
- zizmor-1.14.1/crates/zizmor/tests/integration/snapshots/integration__snapshot__ref_version_mismatch.snap +15 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__secrets_inherit.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__self_hosted-3.snap +2 -2
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__self_hosted-4.snap +2 -2
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__self_hosted-5.snap +2 -2
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__self_hosted-6.snap +2 -2
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__self_hosted.snap +2 -2
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__stale_action_refs.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__template_injection-11.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__template_injection-12.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__template_injection-13.snap +3 -3
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__template_injection-14.snap +5 -5
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__template_injection-15.snap +5 -5
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__template_injection-2.snap +3 -3
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__template_injection-4.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__template_injection-5.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__template_injection-6.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__template_injection-8.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__template_injection.snap +3 -3
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__undocumented_permissions-3.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__undocumented_permissions-6.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__undocumented_permissions-7.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__undocumented_permissions.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__unpinned-uses-composite-config-2.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__unpinned-uses-composite-config.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__unpinned-uses-default-config.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__unpinned-uses-empty-config.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__unpinned-uses-hash-pin-everything-config.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__unpinned_images.snap +1 -1
- zizmor-1.14.1/crates/zizmor/tests/integration/snapshots/integration__snapshot__unpinned_uses-10.snap +14 -0
- zizmor-1.14.1/crates/zizmor/tests/integration/snapshots/integration__snapshot__unpinned_uses-11.snap +14 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__unpinned_uses-12.snap +4 -4
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__unpinned_uses-2.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__unpinned_uses-3.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__unpinned_uses-5.snap +1 -1
- zizmor-1.14.1/crates/zizmor/tests/integration/snapshots/integration__snapshot__unpinned_uses-6.snap +14 -0
- zizmor-1.14.1/crates/zizmor/tests/integration/snapshots/integration__snapshot__unpinned_uses-7.snap +14 -0
- zizmor-1.14.1/crates/zizmor/tests/integration/snapshots/integration__snapshot__unpinned_uses-8.snap +14 -0
- zizmor-1.14.1/crates/zizmor/tests/integration/snapshots/integration__snapshot__unpinned_uses-9.snap +14 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__unpinned_uses.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__unredacted_secrets.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__unsound_condition.snap +38 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__unsound_contains.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__use_trusted_publishing-2.snap +1 -1
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__use_trusted_publishing-3.snap +9 -9
- zizmor-1.14.1/crates/zizmor/tests/integration/snapshots/integration__snapshot__use_trusted_publishing-4.snap +179 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__use_trusted_publishing.snap +1 -1
- zizmor-1.14.1/crates/zizmor/tests/integration/test-data/cache-poisoning/issue-1152-repro.yml +45 -0
- zizmor-1.14.1/crates/zizmor/tests/integration/test-data/config-scenarios/zizmor.invalid-schema-1.yml +10 -0
- zizmor-1.14.1/crates/zizmor/tests/integration/test-data/config-scenarios/zizmor.invalid-schema-2.yml +8 -0
- zizmor-1.14.1/crates/zizmor/tests/integration/test-data/config-scenarios/zizmor.invalid-schema-3.yml +8 -0
- zizmor-1.14.1/crates/zizmor/tests/integration/test-data/neutral.yml +13 -0
- zizmor-1.14.1/crates/zizmor/tests/integration/test-data/obfuscation/issue-1177-repro.yml +16 -0
- zizmor-1.14.1/crates/zizmor/tests/integration/test-data/ref-version-mismatch.yml +28 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/unsound-condition.yml +10 -0
- zizmor-1.14.1/crates/zizmor/tests/integration/test-data/use-trusted-publishing/npm-publish.yml +136 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/pyproject.toml +0 -1
- zizmor-1.13.0/crates/zizmor/src/audit/unsound_condition.rs +0 -125
- zizmor-1.13.0/crates/zizmor/tests/integration/snapshots/integration__e2e__invalid_config_file.snap +0 -12
- zizmor-1.13.0/crates/zizmor/tests/integration/snapshots/integration__e2e__issue_1116_strict_collection_remote_input.snap +0 -13
- zizmor-1.13.0/crates/zizmor/tests/integration/snapshots/integration__snapshot__anonymous_definition-2.snap +0 -28
- zizmor-1.13.0/crates/zizmor/tests/integration/snapshots/integration__snapshot__unpinned_uses-10.snap +0 -11
- zizmor-1.13.0/crates/zizmor/tests/integration/snapshots/integration__snapshot__unpinned_uses-11.snap +0 -11
- zizmor-1.13.0/crates/zizmor/tests/integration/snapshots/integration__snapshot__unpinned_uses-6.snap +0 -11
- zizmor-1.13.0/crates/zizmor/tests/integration/snapshots/integration__snapshot__unpinned_uses-7.snap +0 -11
- zizmor-1.13.0/crates/zizmor/tests/integration/snapshots/integration__snapshot__unpinned_uses-8.snap +0 -11
- zizmor-1.13.0/crates/zizmor/tests/integration/snapshots/integration__snapshot__unpinned_uses-9.snap +0 -11
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/github-actions-expressions/Cargo.toml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/github-actions-expressions/README.md +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/github-actions-expressions/src/call.rs +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/github-actions-expressions/src/context.rs +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/github-actions-expressions/src/expr.pest +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/github-actions-expressions/src/identifier.rs +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/github-actions-expressions/src/literal.rs +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/github-actions-expressions/src/op.rs +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/github-actions-models/Cargo.toml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/github-actions-models/LICENSE +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/github-actions-models/README.md +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/github-actions-models/src/action.rs +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/github-actions-models/src/common/expr.rs +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/github-actions-models/src/common.rs +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/github-actions-models/src/dependabot/mod.rs +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/github-actions-models/src/dependabot/v2.rs +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/github-actions-models/src/lib.rs +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/github-actions-models/src/workflow/event.rs +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/github-actions-models/src/workflow/job.rs +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/github-actions-models/src/workflow/mod.rs +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/github-actions-models/tests/sample-actions/gh-action-pip-audit.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/github-actions-models/tests/sample-actions/gh-action-pypi-publish.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/github-actions-models/tests/sample-actions/gh-action-sigstore-python.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/github-actions-models/tests/sample-actions/no-input-output-descriptions.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/github-actions-models/tests/sample-actions/setup-python.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/github-actions-models/tests/sample-dependabot/v2/pip-audit.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/github-actions-models/tests/sample-dependabot/v2/sigstore-python.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/github-actions-models/tests/sample-workflows/adafruit-circuitpython-run-tests.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/github-actions-models/tests/sample-workflows/false-condition.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/github-actions-models/tests/sample-workflows/gh-action-sigstore-python-selftest.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/github-actions-models/tests/sample-workflows/git-annex-built-windows.yaml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/github-actions-models/tests/sample-workflows/guacsec-guac-ci.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/github-actions-models/tests/sample-workflows/homebrew-core-automerge-triggers.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/github-actions-models/tests/sample-workflows/homebrew-core-dispatch-rebottle.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/github-actions-models/tests/sample-workflows/intel-llvm-sycl-linux-run-tests.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/github-actions-models/tests/sample-workflows/issue-35.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/github-actions-models/tests/sample-workflows/jazzband-tablib-docs-lint.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/github-actions-models/tests/sample-workflows/letsencrypt-boulder-boulder-ci.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/github-actions-models/tests/sample-workflows/mhils-workflows-python-deploy.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/github-actions-models/tests/sample-workflows/openbao-openbao-test-go.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/github-actions-models/tests/sample-workflows/pip-api-test.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/github-actions-models/tests/sample-workflows/pip-audit-ci.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/github-actions-models/tests/sample-workflows/pip-audit-scorecards.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/github-actions-models/tests/sample-workflows/pwn-requests.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/github-actions-models/tests/sample-workflows/pyca-cryptography-ci.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/github-actions-models/tests/sample-workflows/pypi-attestations-release.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/github-actions-models/tests/sample-workflows/reusable-workflow-unpinned.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/github-actions-models/tests/sample-workflows/rnpgp-rnp-centos-and-fedora.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/github-actions-models/tests/sample-workflows/runs-on-expr.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/github-actions-models/tests/sample-workflows/runs-on-group-only.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/github-actions-models/tests/sample-workflows/scalar-trigger-type.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/github-actions-models/tests/sample-workflows/vil02-puzzle_generator-check_examples.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/github-actions-models/tests/sample-workflows/zizmor-issue-646.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/github-actions-models/tests/sample-workflows/zizmor-issue-650.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/github-actions-models/tests/test_action.rs +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/github-actions-models/tests/test_dependabot_v2.rs +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/github-actions-models/tests/test_workflow.rs +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/subfeature/.gitignore +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/subfeature/Cargo.toml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/subfeature/LICENSE +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/subfeature/README.md +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/subfeature/src/lib.rs +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/yamlpatch/Cargo.toml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/yamlpatch/LICENSE +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/yamlpatch/README.md +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/yamlpatch/src/lib.rs +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/yamlpatch/tests/unit_tests.rs +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/yamlpath/Cargo.toml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/yamlpath/LICENSE +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/yamlpath/README.md +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/yamlpath/src/lib.rs +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/yamlpath/tests/integration_test.rs +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/yamlpath/tests/testcases/basic.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/yamlpath/tests/testcases/comments.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/yamlpath/tests/testcases/directives.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/yamlpath/tests/testcases/exact-features.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/yamlpath/tests/testcases/flow.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/yamlpath/tests/testcases/interceding-comment.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/yamlpath/tests/testcases/key-only-features.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/yamlpath/tests/testcases/quoted-key.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/build.rs +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/data/codeql-injection-sinks.json +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/data/context-capabilities.csv +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/src/audit/anonymous_definition.rs +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/src/audit/artipacked.rs +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/src/audit/bot_conditions.rs +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/src/audit/dangerous_triggers.rs +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/src/audit/forbidden_uses.rs +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/src/audit/github_env.rs +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/src/audit/hardcoded_container_credentials.rs +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/src/audit/impostor_commit.rs +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/src/audit/insecure_commands.rs +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/src/audit/obfuscation.rs +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/src/audit/overprovisioned_secrets.rs +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/src/audit/ref_confusion.rs +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/src/audit/secrets_inherit.rs +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/src/audit/stale_action_refs.rs +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/src/audit/undocumented_permissions.rs +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/src/audit/unpinned_images.rs +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/src/audit/unpinned_uses.rs +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/src/audit/unredacted_secrets.rs +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/src/audit/unsound_contains.rs +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/src/data/github-action.json +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/src/data/github-workflow.json +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/src/models/inputs.rs +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/src/models.rs +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/src/output/fix.rs +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/src/output/json/mod.rs +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/src/output/json/v1.rs +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/src/output/mod.rs +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/src/state.rs +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/common.rs +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/e2e/json_v1.rs +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/e2e/snapshots/integration__e2e__json_v1__json_v1.snap +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/main.rs +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__config__disablement.snap +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__config__discovers_config_in_dotgithub.snap +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__config__discovers_config_in_dotgithub_from_file_input.snap +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__config__discovers_config_in_root.snap +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__config__discovers_config_in_root_from_child_dir.snap +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__config__discovers_config_in_root_from_file_input.snap +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__e2e__invalid_input_not_strict-2.snap +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__e2e__invalid_input_not_strict.snap +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__e2e__issue_1116_strict_collection_remote_input-2.snap +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__e2e__issue_612_repro.snap +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__cache_poisoning-14.snap +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__cache_poisoning-6.snap +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__cache_poisoning-7.snap +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__cache_poisoning.snap +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__excessive_permissions-6.snap +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__excessive_permissions-9.snap +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__excessive_permissions.snap +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__forbidden_uses.snap +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__self_hosted-2.snap +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__self_hosted-7.snap +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__self_hosted-8.snap +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__template_injection-10.snap +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__template_injection-3.snap +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__template_injection-7.snap +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__template_injection-9.snap +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__undocumented_permissions-2.snap +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__undocumented_permissions-4.snap +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__undocumented_permissions-5.snap +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__unpinned-uses-ref-pin-everything-config.snap +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/snapshots/integration__snapshot__unpinned_uses-4.snap +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/anonymous-definition.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/artipacked/demo-action/action.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/artipacked/issue-447-repro.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/artipacked.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/bot-conditions.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/cache-poisoning/caching-disabled-by-default.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/cache-poisoning/caching-enabled-by-default.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/cache-poisoning/caching-not-configurable.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/cache-poisoning/caching-opt-in-boolean-toggle.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/cache-poisoning/caching-opt-in-boolish-toggle.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/cache-poisoning/caching-opt-in-expression.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/cache-poisoning/caching-opt-in-multi-value-toggle.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/cache-poisoning/caching-opt-out.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/cache-poisoning/issue-1081-repro.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/cache-poisoning/issue-343-repro.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/cache-poisoning/issue-378-repro.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/cache-poisoning/issue-642-repro.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/cache-poisoning/no-cache-aware-steps.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/cache-poisoning/publisher-step.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/cache-poisoning/workflow-release-branch-trigger.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/cache-poisoning/workflow-tag-trigger.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/cache-poisoning.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/config-scenarios/config-in-dotgithub/.github/workflows/hackme.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/config-scenarios/config-in-dotgithub/.github/zizmor.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/config-scenarios/config-in-root/.github/workflows/hackme.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/config-scenarios/config-in-root/zizmor.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/config-scenarios/disablement/.github/workflows/hackme.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/config-scenarios/disablement/zizmor.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/e2e-menagerie/.github/dummy-action-2/action.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/e2e-menagerie/.github/workflows/another-dummy.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/e2e-menagerie/.github/workflows/dummy.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/e2e-menagerie/.github/workflows/ignored.yaml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/e2e-menagerie/.gitignore +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/e2e-menagerie/README.md +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/e2e-menagerie/dummy-action-1/action.yaml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/excessive-permissions/issue-336-repro.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/excessive-permissions/issue-472-repro.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/excessive-permissions/jobs-broaden-permissions.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/excessive-permissions/reusable-workflow-call.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/excessive-permissions/reusable-workflow-other-triggers.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/excessive-permissions/workflow-default-perms-all-jobs-explicit.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/excessive-permissions/workflow-default-perms.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/excessive-permissions/workflow-empty-perms.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/excessive-permissions/workflow-read-all.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/excessive-permissions/workflow-write-all.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/excessive-permissions/workflow-write-explicit.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/excessive-permissions.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/forbidden-uses/configs/allow-all.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/forbidden-uses/configs/allow-some-refs.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/forbidden-uses/configs/allow-some.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/forbidden-uses/configs/deny-all.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/forbidden-uses/configs/deny-some-refs.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/forbidden-uses/configs/deny-some.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/forbidden-uses/forbidden-uses-menagerie.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/github-env/action.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/github-env/github-path.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/github-env/issue-397-repro.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/github_env.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/hardcoded-credentials.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/inlined-ignores.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/insecure-commands/action.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/insecure-commands/issue-839-repro.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/insecure-commands.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/invalid/bad-yaml-1.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/invalid/bad-yaml-2.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/invalid/blank.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/invalid/comment-only.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/invalid/empty-action/action.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/invalid/empty.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/invalid/invalid-action-1/action.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/invalid/invalid-action-2/action.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/invalid/invalid-workflow-2.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/invalid/invalid-workflow.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/issue-1065.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/issue-612-repro/action.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/obfuscation/computed-indices.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/obfuscation.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/overprovisioned-secrets.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/pr-960-backstop/action.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/ref-confusion/issue-518-repro.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/ref-confusion.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/secrets-inherit.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/self-hosted/issue-283-repro.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/self-hosted/self-hosted-matrix-dimension.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/self-hosted/self-hosted-matrix-exclusion.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/self-hosted/self-hosted-matrix-inclusion.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/self-hosted/self-hosted-runner-group.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/self-hosted/self-hosted-runner-label.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/self-hosted.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/several-vulnerabilities.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/stale-action-refs.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/template-injection/addnab-docker-run-action.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/template-injection/codeql-sinks.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/template-injection/dataflow.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/template-injection/false-positive-menagerie.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/template-injection/input-caps.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/template-injection/issue-22-repro.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/template-injection/issue-339-repro.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/template-injection/issue-418-repro.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/template-injection/issue-749-repro.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/template-injection/issue-883-repro/action.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/template-injection/issue-988-repro.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/template-injection/multiline-expression.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/template-injection/patterns.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/template-injection/pr-317-repro.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/template-injection/pr-425-backstop/action.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/template-injection/pwsh-script.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/template-injection/static-env.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/template-injection/template-injection-dynamic-matrix.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/template-injection/template-injection-static-matrix.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/template-injection.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/undocumented-permissions/contents-read-only.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/undocumented-permissions/contents-read-with-other.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/undocumented-permissions/documented.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/undocumented-permissions/empty-permissions.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/undocumented-permissions/partially-documented.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/undocumented-permissions.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/unpinned-images.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/unpinned-uses/action.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/unpinned-uses/configs/composite-2.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/unpinned-uses/configs/composite.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/unpinned-uses/configs/empty.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/unpinned-uses/configs/hash-pin-everything.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/unpinned-uses/configs/invalid-policy-syntax-1.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/unpinned-uses/configs/invalid-policy-syntax-2.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/unpinned-uses/configs/invalid-policy-syntax-3.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/unpinned-uses/configs/invalid-policy-syntax-4.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/unpinned-uses/configs/invalid-policy-syntax-5.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/unpinned-uses/configs/invalid-policy-syntax-6.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/unpinned-uses/configs/invalid-wrong-policy-object.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/unpinned-uses/configs/ref-pin-everything.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/unpinned-uses/issue-433-repro.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/unpinned-uses/issue-659-repro.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/unpinned-uses/menagerie-of-uses.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/unpinned-uses.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/unredacted-secrets.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/unsound-contains.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/use-trusted-publishing/cargo-publish.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/use-trusted-publishing/demo-action/action.yml +0 -0
- {zizmor-1.13.0 → zizmor-1.14.1}/crates/zizmor/tests/integration/test-data/use-trusted-publishing.yml +0 -0
|
@@ -52,9 +52,9 @@ dependencies = [
|
|
|
52
52
|
|
|
53
53
|
[[package]]
|
|
54
54
|
name = "annotate-snippets"
|
|
55
|
-
version = "0.12.
|
|
55
|
+
version = "0.12.4"
|
|
56
56
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
57
|
-
checksum = "
|
|
57
|
+
checksum = "a8ee2f071d418442e50c643c4e7a4051ce3abd9dba11713cc6cdf4f4a3f3cca5"
|
|
58
58
|
dependencies = [
|
|
59
59
|
"anstyle",
|
|
60
60
|
"unicode-width 0.2.0",
|
|
@@ -112,9 +112,9 @@ dependencies = [
|
|
|
112
112
|
|
|
113
113
|
[[package]]
|
|
114
114
|
name = "anyhow"
|
|
115
|
-
version = "1.0.
|
|
115
|
+
version = "1.0.100"
|
|
116
116
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
117
|
-
checksum = "
|
|
117
|
+
checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61"
|
|
118
118
|
|
|
119
119
|
[[package]]
|
|
120
120
|
name = "arrayvec"
|
|
@@ -302,11 +302,11 @@ dependencies = [
|
|
|
302
302
|
|
|
303
303
|
[[package]]
|
|
304
304
|
name = "camino"
|
|
305
|
-
version = "1.
|
|
305
|
+
version = "1.2.0"
|
|
306
306
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
307
|
-
checksum = "
|
|
307
|
+
checksum = "e1de8bc0aa9e9385ceb3bf0c152e3a9b9544f6c4a912c8ae504e80c1f0368603"
|
|
308
308
|
dependencies = [
|
|
309
|
-
"
|
|
309
|
+
"serde_core",
|
|
310
310
|
]
|
|
311
311
|
|
|
312
312
|
[[package]]
|
|
@@ -332,9 +332,9 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724"
|
|
|
332
332
|
|
|
333
333
|
[[package]]
|
|
334
334
|
name = "clap"
|
|
335
|
-
version = "4.5.
|
|
335
|
+
version = "4.5.48"
|
|
336
336
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
337
|
-
checksum = "
|
|
337
|
+
checksum = "e2134bb3ea021b78629caa971416385309e0131b351b25e01dc16fb54e1b5fae"
|
|
338
338
|
dependencies = [
|
|
339
339
|
"clap_builder",
|
|
340
340
|
"clap_derive",
|
|
@@ -352,9 +352,9 @@ dependencies = [
|
|
|
352
352
|
|
|
353
353
|
[[package]]
|
|
354
354
|
name = "clap_builder"
|
|
355
|
-
version = "4.5.
|
|
355
|
+
version = "4.5.48"
|
|
356
356
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
357
|
-
checksum = "
|
|
357
|
+
checksum = "c2ba64afa3c0a6df7fa517765e31314e983f51dda798ffba27b988194fb65dc9"
|
|
358
358
|
dependencies = [
|
|
359
359
|
"anstream",
|
|
360
360
|
"anstyle",
|
|
@@ -364,9 +364,9 @@ dependencies = [
|
|
|
364
364
|
|
|
365
365
|
[[package]]
|
|
366
366
|
name = "clap_complete"
|
|
367
|
-
version = "4.5.
|
|
367
|
+
version = "4.5.58"
|
|
368
368
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
369
|
-
checksum = "
|
|
369
|
+
checksum = "75bf0b32ad2e152de789bb635ea4d3078f6b838ad7974143e99b99f45a04af4a"
|
|
370
370
|
dependencies = [
|
|
371
371
|
"clap",
|
|
372
372
|
]
|
|
@@ -1230,13 +1230,14 @@ dependencies = [
|
|
|
1230
1230
|
|
|
1231
1231
|
[[package]]
|
|
1232
1232
|
name = "indexmap"
|
|
1233
|
-
version = "2.11.
|
|
1233
|
+
version = "2.11.4"
|
|
1234
1234
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1235
|
-
checksum = "
|
|
1235
|
+
checksum = "4b0f83760fb341a774ed326568e19f5a863af4a952def8c39f9ab92fd95b88e5"
|
|
1236
1236
|
dependencies = [
|
|
1237
1237
|
"equivalent",
|
|
1238
1238
|
"hashbrown 0.15.2",
|
|
1239
1239
|
"serde",
|
|
1240
|
+
"serde_core",
|
|
1240
1241
|
]
|
|
1241
1242
|
|
|
1242
1243
|
[[package]]
|
|
@@ -1684,9 +1685,9 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
|
|
|
1684
1685
|
|
|
1685
1686
|
[[package]]
|
|
1686
1687
|
name = "pest"
|
|
1687
|
-
version = "2.8.
|
|
1688
|
+
version = "2.8.2"
|
|
1688
1689
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1689
|
-
checksum = "
|
|
1690
|
+
checksum = "21e0a3a33733faeaf8651dfee72dd0f388f0c8e5ad496a3478fa5a922f49cfa8"
|
|
1690
1691
|
dependencies = [
|
|
1691
1692
|
"memchr",
|
|
1692
1693
|
"thiserror 2.0.16",
|
|
@@ -1695,9 +1696,9 @@ dependencies = [
|
|
|
1695
1696
|
|
|
1696
1697
|
[[package]]
|
|
1697
1698
|
name = "pest_derive"
|
|
1698
|
-
version = "2.8.
|
|
1699
|
+
version = "2.8.2"
|
|
1699
1700
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1700
|
-
checksum = "
|
|
1701
|
+
checksum = "bc58706f770acb1dbd0973e6530a3cff4746fb721207feb3a8a6064cd0b6c663"
|
|
1701
1702
|
dependencies = [
|
|
1702
1703
|
"pest",
|
|
1703
1704
|
"pest_generator",
|
|
@@ -1705,9 +1706,9 @@ dependencies = [
|
|
|
1705
1706
|
|
|
1706
1707
|
[[package]]
|
|
1707
1708
|
name = "pest_generator"
|
|
1708
|
-
version = "2.8.
|
|
1709
|
+
version = "2.8.2"
|
|
1709
1710
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1710
|
-
checksum = "
|
|
1711
|
+
checksum = "6d4f36811dfe07f7b8573462465d5cb8965fffc2e71ae377a33aecf14c2c9a2f"
|
|
1711
1712
|
dependencies = [
|
|
1712
1713
|
"pest",
|
|
1713
1714
|
"pest_meta",
|
|
@@ -1718,9 +1719,9 @@ dependencies = [
|
|
|
1718
1719
|
|
|
1719
1720
|
[[package]]
|
|
1720
1721
|
name = "pest_meta"
|
|
1721
|
-
version = "2.8.
|
|
1722
|
+
version = "2.8.2"
|
|
1722
1723
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1723
|
-
checksum = "
|
|
1724
|
+
checksum = "42919b05089acbd0a5dcd5405fb304d17d1053847b81163d09c4ad18ce8e8420"
|
|
1724
1725
|
dependencies = [
|
|
1725
1726
|
"pest",
|
|
1726
1727
|
"sha2",
|
|
@@ -2201,10 +2202,11 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
|
|
|
2201
2202
|
|
|
2202
2203
|
[[package]]
|
|
2203
2204
|
name = "serde"
|
|
2204
|
-
version = "1.0.
|
|
2205
|
+
version = "1.0.226"
|
|
2205
2206
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2206
|
-
checksum = "
|
|
2207
|
+
checksum = "0dca6411025b24b60bfa7ec1fe1f8e710ac09782dca409ee8237ba74b51295fd"
|
|
2207
2208
|
dependencies = [
|
|
2209
|
+
"serde_core",
|
|
2208
2210
|
"serde_derive",
|
|
2209
2211
|
]
|
|
2210
2212
|
|
|
@@ -2228,11 +2230,20 @@ dependencies = [
|
|
|
2228
2230
|
"typed-builder",
|
|
2229
2231
|
]
|
|
2230
2232
|
|
|
2233
|
+
[[package]]
|
|
2234
|
+
name = "serde_core"
|
|
2235
|
+
version = "1.0.226"
|
|
2236
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2237
|
+
checksum = "ba2ba63999edb9dac981fb34b3e5c0d111a69b0924e253ed29d83f7c99e966a4"
|
|
2238
|
+
dependencies = [
|
|
2239
|
+
"serde_derive",
|
|
2240
|
+
]
|
|
2241
|
+
|
|
2231
2242
|
[[package]]
|
|
2232
2243
|
name = "serde_derive"
|
|
2233
|
-
version = "1.0.
|
|
2244
|
+
version = "1.0.226"
|
|
2234
2245
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2235
|
-
checksum = "
|
|
2246
|
+
checksum = "8db53ae22f34573731bafa1db20f04027b2d25e02d8205921b569171699cdb33"
|
|
2236
2247
|
dependencies = [
|
|
2237
2248
|
"proc-macro2",
|
|
2238
2249
|
"quote",
|
|
@@ -2241,15 +2252,16 @@ dependencies = [
|
|
|
2241
2252
|
|
|
2242
2253
|
[[package]]
|
|
2243
2254
|
name = "serde_json"
|
|
2244
|
-
version = "1.0.
|
|
2255
|
+
version = "1.0.145"
|
|
2245
2256
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2246
|
-
checksum = "
|
|
2257
|
+
checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c"
|
|
2247
2258
|
dependencies = [
|
|
2248
2259
|
"indexmap",
|
|
2249
2260
|
"itoa",
|
|
2250
2261
|
"memchr",
|
|
2251
2262
|
"ryu",
|
|
2252
2263
|
"serde",
|
|
2264
|
+
"serde_core",
|
|
2253
2265
|
]
|
|
2254
2266
|
|
|
2255
2267
|
[[package]]
|
|
@@ -2983,9 +2995,9 @@ checksum = "c4013970217383f67b18aef68f6fb2e8d409bc5755227092d32efb0422ba24b8"
|
|
|
2983
2995
|
|
|
2984
2996
|
[[package]]
|
|
2985
2997
|
name = "tree-sitter-powershell"
|
|
2986
|
-
version = "0.25.
|
|
2998
|
+
version = "0.25.9"
|
|
2987
2999
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2988
|
-
checksum = "
|
|
3000
|
+
checksum = "ae0e37101b110badaf99aa40460915a8797ceba15fc0ed22773280377a8dffb6"
|
|
2989
3001
|
dependencies = [
|
|
2990
3002
|
"cc",
|
|
2991
3003
|
"tree-sitter-language",
|
|
@@ -3789,7 +3801,7 @@ dependencies = [
|
|
|
3789
3801
|
|
|
3790
3802
|
[[package]]
|
|
3791
3803
|
name = "zizmor"
|
|
3792
|
-
version = "1.
|
|
3804
|
+
version = "1.14.1"
|
|
3793
3805
|
dependencies = [
|
|
3794
3806
|
"annotate-snippets",
|
|
3795
3807
|
"anstream",
|
|
@@ -11,20 +11,20 @@ license = "MIT"
|
|
|
11
11
|
rust-version = "1.88.0"
|
|
12
12
|
|
|
13
13
|
[workspace.dependencies]
|
|
14
|
-
anyhow = "1.0.
|
|
14
|
+
anyhow = "1.0.100"
|
|
15
15
|
github-actions-expressions = { path = "crates/github-actions-expressions", version = "0.0.10" }
|
|
16
16
|
github-actions-models = { path = "crates/github-actions-models", version = "0.32.0" }
|
|
17
17
|
itertools = "0.14.0"
|
|
18
|
-
pest = "2.8.
|
|
19
|
-
pest_derive = "2.8.
|
|
18
|
+
pest = "2.8.2"
|
|
19
|
+
pest_derive = "2.8.2"
|
|
20
20
|
pretty_assertions = "1.4.1"
|
|
21
|
-
annotate-snippets = "0.12.
|
|
21
|
+
annotate-snippets = "0.12.4"
|
|
22
22
|
anstream = "0.6.20"
|
|
23
23
|
assert_cmd = "2.0.17"
|
|
24
|
-
camino = "1.
|
|
25
|
-
clap = "4.5.
|
|
24
|
+
camino = "1.2.0"
|
|
25
|
+
clap = "4.5.48"
|
|
26
26
|
clap-verbosity-flag = { version = "3.0.4", default-features = false }
|
|
27
|
-
clap_complete = "4.5.
|
|
27
|
+
clap_complete = "4.5.58"
|
|
28
28
|
clap_complete_nushell = "4.5.8"
|
|
29
29
|
csv = "1.3.1"
|
|
30
30
|
etcetera = "0.10.0"
|
|
@@ -33,7 +33,7 @@ fst = "0.4.7"
|
|
|
33
33
|
http-cache-reqwest = "0.16"
|
|
34
34
|
human-panic = "2.0.3"
|
|
35
35
|
ignore = "0.4.23"
|
|
36
|
-
indexmap = { version = "2.11.
|
|
36
|
+
indexmap = { version = "2.11.4", features = ["serde"] }
|
|
37
37
|
indicatif = "0.18"
|
|
38
38
|
insta = "1.43.2"
|
|
39
39
|
jsonschema = "0.30.0"
|
|
@@ -43,9 +43,9 @@ owo-colors = "4.2.2"
|
|
|
43
43
|
regex = "1.11.2"
|
|
44
44
|
reqwest = { version = "0.12.23", default-features = false }
|
|
45
45
|
reqwest-middleware = "0.4.2"
|
|
46
|
-
serde = { version = "1.0.
|
|
46
|
+
serde = { version = "1.0.226", features = ["derive"] }
|
|
47
47
|
serde-sarif = "0.8.0"
|
|
48
|
-
serde_json = "1.0.
|
|
48
|
+
serde_json = "1.0.145"
|
|
49
49
|
serde_json_path = "0.7.2"
|
|
50
50
|
serde_yaml = "0.9.34"
|
|
51
51
|
subfeature = { path = "crates/subfeature", version = "0.0.3" }
|
|
@@ -59,7 +59,7 @@ tracing-indicatif = "0.3.13"
|
|
|
59
59
|
tracing-subscriber = "0.3.20"
|
|
60
60
|
tree-sitter = "0.25.9"
|
|
61
61
|
tree-sitter-bash = "0.23.3"
|
|
62
|
-
tree-sitter-powershell = "0.25.
|
|
62
|
+
tree-sitter-powershell = "0.25.9"
|
|
63
63
|
yamlpath = { path = "crates/yamlpath", version = "0.25.0" }
|
|
64
64
|
yamlpatch = { path = "crates/yamlpatch", version = "0.3.0" }
|
|
65
65
|
tree-sitter-yaml = "0.7.1"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: zizmor
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.14.1
|
|
4
4
|
License-File: LICENSE
|
|
5
5
|
Home-Page: https://docs.zizmor.sh
|
|
6
6
|
Requires-Python: >=3.9
|
|
@@ -79,6 +79,13 @@ Grafana Labs
|
|
|
79
79
|
Trail of Bits
|
|
80
80
|
</a>
|
|
81
81
|
</td>
|
|
82
|
+
<td align="center" valign="top" width="15%">
|
|
83
|
+
<a href="https://www.shipfox.io">
|
|
84
|
+
<img src="https://avatars.githubusercontent.com/u/163036520?s=100&v=4" width="100px">
|
|
85
|
+
<br>
|
|
86
|
+
Shipfox
|
|
87
|
+
</a>
|
|
88
|
+
</td>
|
|
82
89
|
</tr>
|
|
83
90
|
</tbody>
|
|
84
91
|
</table>
|
|
@@ -304,7 +304,10 @@ impl<'src> Expr<'src> {
|
|
|
304
304
|
|| func == "startsWith"
|
|
305
305
|
|| func == "endsWith"
|
|
306
306
|
|| func == "toJSON"
|
|
307
|
-
|
|
307
|
+
// TODO(ww): `fromJSON` *is* frequently reducible, but
|
|
308
|
+
// doing so soundly with subexpressions is annoying.
|
|
309
|
+
// We overapproximate for now and consider it non-reducible.
|
|
310
|
+
// || func == "fromJSON"
|
|
308
311
|
|| func == "join"
|
|
309
312
|
{
|
|
310
313
|
args.iter().all(|e| e.constant_reducible())
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
[package]
|
|
2
2
|
name = "zizmor"
|
|
3
3
|
description = "Static analysis for GitHub Actions"
|
|
4
|
-
version = "1.
|
|
4
|
+
version = "1.14.1"
|
|
5
5
|
repository = "https://github.com/zizmorcore/zizmor"
|
|
6
6
|
documentation = "https://docs.zizmor.sh"
|
|
7
7
|
keywords = ["cli", "github-actions", "static-analysis", "security"]
|
|
@@ -71,6 +71,13 @@ Grafana Labs
|
|
|
71
71
|
Trail of Bits
|
|
72
72
|
</a>
|
|
73
73
|
</td>
|
|
74
|
+
<td align="center" valign="top" width="15%">
|
|
75
|
+
<a href="https://www.shipfox.io">
|
|
76
|
+
<img src="https://avatars.githubusercontent.com/u/163036520?s=100&v=4" width="100px">
|
|
77
|
+
<br>
|
|
78
|
+
Shipfox
|
|
79
|
+
</a>
|
|
80
|
+
</td>
|
|
74
81
|
</tr>
|
|
75
82
|
</tbody>
|
|
76
83
|
</table>
|
|
@@ -50,12 +50,16 @@ static KNOWN_CACHE_AWARE_ACTIONS: LazyLock<Vec<ActionCoordinate>> = LazyLock::ne
|
|
|
50
50
|
// https://github.com/actions/setup-node/blob/main/action.yml
|
|
51
51
|
ActionCoordinate::Configurable {
|
|
52
52
|
uses_pattern: "actions/setup-node".parse().unwrap(),
|
|
53
|
-
control: ControlExpr::
|
|
54
|
-
Toggle::OptIn,
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
53
|
+
control: ControlExpr::any([
|
|
54
|
+
ControlExpr::single(Toggle::OptIn, "cache", ControlFieldType::FreeString, false),
|
|
55
|
+
// NOTE: Added with `setup-node@v5`.
|
|
56
|
+
ControlExpr::single(
|
|
57
|
+
Toggle::OptIn,
|
|
58
|
+
"package-manager-cache",
|
|
59
|
+
ControlFieldType::Boolean,
|
|
60
|
+
true,
|
|
61
|
+
),
|
|
62
|
+
]),
|
|
59
63
|
},
|
|
60
64
|
// https://github.com/actions/setup-python/blob/main/action.yml
|
|
61
65
|
ActionCoordinate::Configurable {
|
|
@@ -99,11 +99,12 @@ impl KnownVulnerableActions {
|
|
|
99
99
|
|
|
100
100
|
for vuln in vulns {
|
|
101
101
|
let severity = match vuln.severity.as_str() {
|
|
102
|
-
"low" => Severity::
|
|
102
|
+
"low" => Severity::Low,
|
|
103
103
|
"medium" => Severity::Medium,
|
|
104
104
|
"high" => Severity::High,
|
|
105
105
|
"critical" => Severity::High,
|
|
106
|
-
|
|
106
|
+
// Seems like a safe fallback.
|
|
107
|
+
_ => Severity::High,
|
|
107
108
|
};
|
|
108
109
|
|
|
109
110
|
// Get the first patched version from the first vulnerability in the advisory
|
|
@@ -303,8 +304,8 @@ mod tests {
|
|
|
303
304
|
false,
|
|
304
305
|
Some(
|
|
305
306
|
github_api::Client::new(
|
|
306
|
-
github_api::GitHubHost::default(),
|
|
307
|
-
github_api::GitHubToken::new("fake").unwrap(),
|
|
307
|
+
&github_api::GitHubHost::default(),
|
|
308
|
+
&github_api::GitHubToken::new("fake").unwrap(),
|
|
308
309
|
"/tmp".into(),
|
|
309
310
|
)
|
|
310
311
|
.unwrap(),
|
|
@@ -748,8 +749,8 @@ jobs:
|
|
|
748
749
|
false,
|
|
749
750
|
Some(
|
|
750
751
|
github_api::Client::new(
|
|
751
|
-
github_api::GitHubHost::default(),
|
|
752
|
-
github_api::GitHubToken::new(&std::env::var("GH_TOKEN").unwrap()).unwrap(),
|
|
752
|
+
&github_api::GitHubHost::default(),
|
|
753
|
+
&github_api::GitHubToken::new(&std::env::var("GH_TOKEN").unwrap()).unwrap(),
|
|
753
754
|
"/tmp".into(),
|
|
754
755
|
)
|
|
755
756
|
.unwrap(),
|
|
@@ -803,8 +804,8 @@ jobs:
|
|
|
803
804
|
false,
|
|
804
805
|
Some(
|
|
805
806
|
github_api::Client::new(
|
|
806
|
-
github_api::GitHubHost::default(),
|
|
807
|
-
github_api::GitHubToken::new(&std::env::var("GH_TOKEN").unwrap()).unwrap(),
|
|
807
|
+
&github_api::GitHubHost::default(),
|
|
808
|
+
&github_api::GitHubToken::new(&std::env::var("GH_TOKEN").unwrap()).unwrap(),
|
|
808
809
|
"/tmp".into(),
|
|
809
810
|
)
|
|
810
811
|
.unwrap(),
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
//! Core namespace for zizmor's audits.
|
|
2
2
|
|
|
3
|
-
use line_index::LineIndex;
|
|
4
3
|
use thiserror::Error;
|
|
5
4
|
use tracing::instrument;
|
|
6
5
|
use yamlpath::Document;
|
|
@@ -32,6 +31,7 @@ pub(crate) mod known_vulnerable_actions;
|
|
|
32
31
|
pub(crate) mod obfuscation;
|
|
33
32
|
pub(crate) mod overprovisioned_secrets;
|
|
34
33
|
pub(crate) mod ref_confusion;
|
|
34
|
+
pub(crate) mod ref_version_mismatch;
|
|
35
35
|
pub(crate) mod secrets_inherit;
|
|
36
36
|
pub(crate) mod self_hosted_runner;
|
|
37
37
|
pub(crate) mod stale_action_refs;
|
|
@@ -58,13 +58,6 @@ impl AuditInput {
|
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
60
|
|
|
61
|
-
pub(crate) fn line_index(&self) -> &LineIndex {
|
|
62
|
-
match self {
|
|
63
|
-
AuditInput::Workflow(workflow) => workflow.as_document().line_index(),
|
|
64
|
-
AuditInput::Action(action) => action.as_document().line_index(),
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
|
|
68
61
|
pub(crate) fn link(&self) -> Option<&str> {
|
|
69
62
|
match self {
|
|
70
63
|
AuditInput::Workflow(workflow) => workflow.link.as_deref(),
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
use std::sync::LazyLock;
|
|
2
|
+
|
|
3
|
+
use anyhow::{Result, anyhow};
|
|
4
|
+
use github_actions_models::common::Uses;
|
|
5
|
+
use regex::Regex;
|
|
6
|
+
use subfeature::Subfeature;
|
|
7
|
+
|
|
8
|
+
use crate::{
|
|
9
|
+
audit::{Audit, AuditLoadError, AuditState, audit_meta},
|
|
10
|
+
config::Config,
|
|
11
|
+
finding::{
|
|
12
|
+
Confidence, Finding, Severity,
|
|
13
|
+
location::{Comment, Feature, Location},
|
|
14
|
+
},
|
|
15
|
+
github_api,
|
|
16
|
+
models::{StepCommon, action::CompositeStep, uses::RepositoryUsesExt, workflow::Step},
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
pub(crate) struct RefVersionMismatch {
|
|
20
|
+
client: github_api::Client,
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
audit_meta!(
|
|
24
|
+
RefVersionMismatch,
|
|
25
|
+
"ref-version-mismatch",
|
|
26
|
+
"detects commit SHAs that don't match their version comment tags"
|
|
27
|
+
);
|
|
28
|
+
|
|
29
|
+
static VERSION_COMMENT_PATTERNS: LazyLock<Vec<Regex>> = LazyLock::new(|| {
|
|
30
|
+
vec![
|
|
31
|
+
// Matches "# tag=v2.8.0" or "# tag=v1.2.3"
|
|
32
|
+
Regex::new(r"#\s*tag\s*=\s*(v\d+(?:\.\d+)*(?:\.\d+)?)").unwrap(),
|
|
33
|
+
// Matches "# v2.8.0"
|
|
34
|
+
Regex::new(r"#\s*(v\d+(?:\.\d+)*(?:\.\d+)?)").unwrap(),
|
|
35
|
+
// Matches version without 'v' prefix: "# tag=2.8.0"
|
|
36
|
+
Regex::new(r"#\s*tag\s*=\s*(\d+(?:\.\d+)*(?:\.\d+)?)").unwrap(),
|
|
37
|
+
// More flexible: "# version: 2.8.0"
|
|
38
|
+
Regex::new(r"#\s*(?:version|ver)\s*[:=]\s*(v?\d+(?:\.\d+)*(?:\.\d+)?)").unwrap(),
|
|
39
|
+
]
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
impl RefVersionMismatch {
|
|
43
|
+
fn extract_version_from_comments<'doc>(
|
|
44
|
+
&self,
|
|
45
|
+
comments: &'doc [Comment<'doc>],
|
|
46
|
+
) -> Option<&'doc str> {
|
|
47
|
+
for comment in comments {
|
|
48
|
+
for pattern in VERSION_COMMENT_PATTERNS.iter() {
|
|
49
|
+
if let Some(captures) = pattern.captures(comment.as_ref())
|
|
50
|
+
&& let Some(version_match) = captures.get(1)
|
|
51
|
+
{
|
|
52
|
+
return Some(version_match.as_str());
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
None
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
fn audit_step_common<'doc, S: StepCommon<'doc>>(
|
|
60
|
+
&self,
|
|
61
|
+
step: &S,
|
|
62
|
+
) -> anyhow::Result<Vec<Finding<'doc>>> {
|
|
63
|
+
let mut findings = vec![];
|
|
64
|
+
|
|
65
|
+
let Some(Uses::Repository(uses)) = step.uses() else {
|
|
66
|
+
return Ok(findings);
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
// Only check steps that have commit refs (not symbolic refs like v1.0.0)
|
|
70
|
+
let Some(commit_sha) = uses.commit_ref() else {
|
|
71
|
+
return Ok(findings);
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
let step_location = step.location();
|
|
75
|
+
let uses_location = step_location
|
|
76
|
+
.with_keys(["uses".into()])
|
|
77
|
+
.concretize(step.document())?;
|
|
78
|
+
|
|
79
|
+
let Some(version_from_comment) =
|
|
80
|
+
self.extract_version_from_comments(&uses_location.concrete.comments)
|
|
81
|
+
else {
|
|
82
|
+
return Ok(findings);
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
let Some(commit_for_ref) =
|
|
86
|
+
self.client
|
|
87
|
+
.commit_for_ref(&uses.owner, &uses.repo, version_from_comment)?
|
|
88
|
+
else {
|
|
89
|
+
// TODO(ww): Does it make sense to flag this as well?
|
|
90
|
+
// This indicates a completely bogus version comment,
|
|
91
|
+
// rather than a mismatch.
|
|
92
|
+
return Ok(findings);
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
if commit_for_ref != commit_sha {
|
|
96
|
+
tracing::warn!("{commit_for_ref} != {commit_sha}");
|
|
97
|
+
|
|
98
|
+
let subfeature = Subfeature::new(
|
|
99
|
+
uses_location.concrete.location.offset_span.end,
|
|
100
|
+
version_from_comment,
|
|
101
|
+
);
|
|
102
|
+
|
|
103
|
+
let mut builder = Self::finding()
|
|
104
|
+
.severity(Severity::Medium)
|
|
105
|
+
.confidence(Confidence::High)
|
|
106
|
+
.add_raw_location(Location::new(
|
|
107
|
+
// NOTE(ww): We trim the commit SHA to 12 characters
|
|
108
|
+
// for display purposes; 12 is a conservative length
|
|
109
|
+
// that avoids collisions in Linux-sized repositories.
|
|
110
|
+
uses_location.symbolic.clone().primary().annotated(format!(
|
|
111
|
+
"points to commit {short_commit}",
|
|
112
|
+
short_commit = &commit_for_ref[..12]
|
|
113
|
+
)),
|
|
114
|
+
Feature::from_subfeature(&subfeature, step),
|
|
115
|
+
));
|
|
116
|
+
|
|
117
|
+
if let Some(suggestion) =
|
|
118
|
+
self.client
|
|
119
|
+
.longest_tag_for_commit(&uses.owner, &uses.repo, commit_sha)?
|
|
120
|
+
{
|
|
121
|
+
builder = builder.add_location(
|
|
122
|
+
uses_location
|
|
123
|
+
.symbolic
|
|
124
|
+
.annotated(format!("is pointed to by tag {tag}", tag = suggestion.name)),
|
|
125
|
+
);
|
|
126
|
+
}
|
|
127
|
+
findings.push(builder.build(step)?);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
Ok(findings)
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
impl Audit for RefVersionMismatch {
|
|
135
|
+
fn new(state: &AuditState) -> Result<Self, AuditLoadError> {
|
|
136
|
+
if state.no_online_audits {
|
|
137
|
+
return Err(AuditLoadError::Skip(anyhow!(
|
|
138
|
+
"offline audits only requested"
|
|
139
|
+
)));
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
state
|
|
143
|
+
.gh_client
|
|
144
|
+
.clone()
|
|
145
|
+
.ok_or_else(|| AuditLoadError::Skip(anyhow!("can't run without a GitHub API token")))
|
|
146
|
+
.map(|client| Self { client })
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
fn audit_step<'doc>(
|
|
150
|
+
&self,
|
|
151
|
+
step: &Step<'doc>,
|
|
152
|
+
_config: &Config,
|
|
153
|
+
) -> anyhow::Result<Vec<Finding<'doc>>> {
|
|
154
|
+
self.audit_step_common(step)
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
fn audit_composite_step<'doc>(
|
|
158
|
+
&self,
|
|
159
|
+
step: &CompositeStep<'doc>,
|
|
160
|
+
_config: &Config,
|
|
161
|
+
) -> anyhow::Result<Vec<Finding<'doc>>> {
|
|
162
|
+
self.audit_step_common(step)
|
|
163
|
+
}
|
|
164
|
+
}
|
|
@@ -59,7 +59,7 @@ impl Audit for SelfHostedRunner {
|
|
|
59
59
|
results.push(
|
|
60
60
|
Self::finding()
|
|
61
61
|
.confidence(Confidence::High)
|
|
62
|
-
.severity(Severity::
|
|
62
|
+
.severity(Severity::Medium)
|
|
63
63
|
.persona(Persona::Auditor)
|
|
64
64
|
.add_location(
|
|
65
65
|
job.location()
|
|
@@ -77,7 +77,7 @@ impl Audit for SelfHostedRunner {
|
|
|
77
77
|
results.push(
|
|
78
78
|
Self::finding()
|
|
79
79
|
.confidence(Confidence::Low)
|
|
80
|
-
.severity(Severity::
|
|
80
|
+
.severity(Severity::Medium)
|
|
81
81
|
.persona(Persona::Auditor)
|
|
82
82
|
.add_location(
|
|
83
83
|
job.location()
|
|
@@ -100,7 +100,7 @@ impl Audit for SelfHostedRunner {
|
|
|
100
100
|
LoE::Literal(RunsOn::Group { .. }) => results.push(
|
|
101
101
|
Self::finding()
|
|
102
102
|
.confidence(Confidence::Low)
|
|
103
|
-
.severity(Severity::
|
|
103
|
+
.severity(Severity::Medium)
|
|
104
104
|
.persona(Persona::Auditor)
|
|
105
105
|
.add_location(
|
|
106
106
|
job.location()
|
|
@@ -127,7 +127,7 @@ impl Audit for SelfHostedRunner {
|
|
|
127
127
|
results.push(
|
|
128
128
|
Self::finding()
|
|
129
129
|
.confidence(Confidence::High)
|
|
130
|
-
.severity(Severity::
|
|
130
|
+
.severity(Severity::Medium)
|
|
131
131
|
.persona(Persona::Auditor)
|
|
132
132
|
.add_location(
|
|
133
133
|
job.location()
|
|
@@ -378,8 +378,8 @@ impl TemplateInjection {
|
|
|
378
378
|
Subfeature::new(expr_span.start, &parsed),
|
|
379
379
|
// Intentionally not providing a fix here.
|
|
380
380
|
None,
|
|
381
|
-
Severity::
|
|
382
|
-
Confidence::
|
|
381
|
+
Severity::Low,
|
|
382
|
+
Confidence::High,
|
|
383
383
|
Persona::Pedantic,
|
|
384
384
|
));
|
|
385
385
|
|
|
@@ -440,7 +440,7 @@ impl TemplateInjection {
|
|
|
440
440
|
(Severity::High, Confidence::High, Persona::default())
|
|
441
441
|
}
|
|
442
442
|
None => {
|
|
443
|
-
(Severity::
|
|
443
|
+
(Severity::Low, Confidence::Low, Persona::default())
|
|
444
444
|
}
|
|
445
445
|
};
|
|
446
446
|
|
|
@@ -477,7 +477,7 @@ impl TemplateInjection {
|
|
|
477
477
|
origin.raw,
|
|
478
478
|
),
|
|
479
479
|
self.attempt_fix(&expr, &parsed, step),
|
|
480
|
-
Severity::
|
|
480
|
+
Severity::Low,
|
|
481
481
|
Confidence::High,
|
|
482
482
|
Persona::Pedantic,
|
|
483
483
|
));
|