Skip to content

Fix Windows profile path containment - #64

Draft
ghbarker wants to merge 1 commit into
varunsalian:webdav-syncfrom
ghbarker:codex/upstream-profile-path-containment
Draft

ghbarker wants to merge 1 commit into
varunsalian:webdav-syncfrom
ghbarker:codex/upstream-profile-path-containment

Conversation

@ghbarker

@ghbarker ghbarker commented Sep 11, 2026

Copy link
Copy Markdown
Contributor

Windows backslash traversal and drive-relative paths could escape the profile directory through ProfileScope.fileIn. Reject drive-relative paths and verify normalized path-component containment before returning the file, while retaining the existing API and valid root-relative behavior.

Based independently on webdav-sync at 077f2e79; no storage refactor or settings UI changes are included.

Validation with Flutter 3.44.8 / Dart 3.12.2 on Windows: 12 regression cases fail on the unchanged upstream code; all 31 focused tests pass with the fix. Changed-file analysis is clean. POSIX-host execution remains outstanding. The check is lexical containment and does not resolve filesystem links.

Independent adversarial review passed the 31 native Windows tests and 32 additional explicit path-context checks, including rejection of mutations to traversal and drive-relative handling. Explicit POSIX path contexts supplement coverage but do not replace native POSIX CI.

Combined validation with the other ten proposed slices: 304 focused/integration tests passed and an Android release build succeeded with Flutter 3.44.8 / Dart 3.12.2 / JDK 17. The test and build source trees match. The existing Windows Spotlight golden is excluded from that selection. A separate clean upstream full-suite run has 6,044 passes, 12 skips, 55 failing user tests and one failing teardown hook; this is not a full-suite or GitHub CI pass. Physical-device validation of the upstream ports remains outstanding.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant