Skip to content

REQ 026

sergio velderrain edited this page Nov 9, 2026 · 1 revision

REQ-026: Source-checkout stage rejects a checkoutPath that escapes the project root

Requirement

The native pipeline's optional secondary source-checkout stage shall reject a checkoutPath that escapes the project's own checkout root.

Rationale

Prevents a maliciously or accidentally misconfigured sourceCheckouts entry from writing outside the intended project directory.

Fit Criterion

Invoke-PipelineSourceCheckoutStage rejects a rooted path, a path containing .. segments, a path traversing a symlink/reparse-point ancestor, or a path that already exists at the resolved destination -- throwing in each case rather than silently normalizing or overwriting.

Verification

Code review of internal/Pipeline.Stages.ps1's Invoke-PipelineSourceCheckoutStage function.

Source

Software-Requirements-Specification

Priority

High

TestID

TEST-026

TestArtifact

Code review of the rooted/../symlink/pre-existing-destination rejections

CodeRef

internal/Pipeline.Stages.ps1 Invoke-PipelineSourceCheckoutStage module

Status

Verified (manual)

Clone this wiki locally