summaryrefslogtreecommitdiff
path: root/.github/workflows
diff options
context:
space:
mode:
authorYuriy Andamasov <yuriy@vyos.io>2026-05-11 01:39:38 +0300
committerYuriy Andamasov <yuriy@vyos.io>2026-05-11 01:39:38 +0300
commit9b516a32dee89534cca80fd8acb16272c8c3b28f (patch)
tree6d97e011c3a80fb9a2d68834b5386b6f28854b1a /.github/workflows
parentc1bd8ec3e8b5a6dfbc530fa3183eee0ece7572f4 (diff)
downloadvyos-documentation-9b516a32dee89534cca80fd8acb16272c8c3b28f.tar.gz
vyos-documentation-9b516a32dee89534cca80fd8acb16272c8c3b28f.zip
ci(ai-validation): fail-fast on traversal paths (consistency w/ non-regular guard)
Copilot finding on PR #1959 (line 114): the path-traversal hardening block used `continue` (skip-with-warning) on detection of absolute / traversal paths, but the non-regular-tree-entry check below uses `exit 1`. The asymmetry meant a fork PR that smuggles in a path like `docs/../../outside.md` would silently bypass Pass 1 (no file copied into _changed_md/) and Pass 2 (LLM Read/Glob/Grep tools see no content) — reducing validation coverage on exactly the inputs that warrant the closest look. Change `continue` to `exit 1` so both unsafe-input checks have consistent visible-failure semantics. Maintainers must explicitly address an offending path rather than have it skipped. Mirrored byte-identically across all three open workflow PRs.
Diffstat (limited to '.github/workflows')
-rw-r--r--.github/workflows/ai-validation.yml10
1 files changed, 8 insertions, 2 deletions
diff --git a/.github/workflows/ai-validation.yml b/.github/workflows/ai-validation.yml
index 3d77ec08..425644f1 100644
--- a/.github/workflows/ai-validation.yml
+++ b/.github/workflows/ai-validation.yml
@@ -110,8 +110,14 @@ jobs:
|| "$path" == "../"* \
|| "$path" == *"/.." \
|| "$path" == ".." ]]; then
- echo "::warning::Skipping unsafe path with traversal/absolute prefix: $path"
- continue
+ # Fail-fast (don't `continue`) so an unsafe path can't silently
+ # bypass Pass 1 (no file copied into _changed_md/) and Pass 2
+ # (LLM tools see no content) — same reasoning as the non-regular
+ # tree-entry check below: maintainers must explicitly decide to
+ # land such a path. Visible failure > silent skip on inputs that
+ # warrant the closest look.
+ echo "::error::Refusing to bundle: path has traversal/absolute prefix: $path"
+ exit 1
fi
# Refuse to bundle non-regular tree entries (symlinks mode 120000,
# submodules 160000, etc). Skipping silently would let a PR that