Skip to content

Make SVN fingerprint opens race-safe #1124

Open

Description

@lzl51230

Related to #1113.

The SVN fingerprint path checks run before ordinary fopen/opendir calls. A concurrent path swap can therefore replace a previously validated regular file or directory with a symlink, reparse point, special file, or path outside the working-copy root before it is opened.

Use no-follow, handle-relative opens where supported, or validate the opened handle identity and containment before reading. Add a regression test that swaps the candidate between validation and open.

Activity

  1. added
    enhancementNew feature or request
    taskUmbrella task grouping multiple related issues
    on Jul 16, 2026
  2. added this to the 0.9.2-rc milestone on Jul 16, 2026
  3. added
    editor/integrationEditor compatibility and CLI integration
    securitySecurity vulnerabilities, hardening
    priority/normalStandard review queue; useful PR with ordinary maintainer urgency.
    on Jul 16, 2026
  4. DeusData commented on Jul 16, 2026

    @DeusData
    Owner

    Tracked as a 0.9.2-rc path-safety blocker for #1113/#1127. A pre-open path check is not sufficient when the subsequent open can race with a symlink, reparse point, special-file, or containment swap. The regression should exercise the swap at a deterministic test seam and validate the opened handle, not repeat the same pathname check.

  5. DeusData commented on Oct 19, 2026

    @DeusData
    Owner

    Thank you for separating the validation/open race from ordinary path checks. I have no new opened-handle containment verification or resolution to report for this SVN blocker.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    editor/integrationEditor compatibility and CLI integrationenhancementNew feature or requestpriority/normalStandard review queue; useful PR with ordinary maintainer urgency.securitySecurity vulnerabilities, hardeningtaskUmbrella task grouping multiple related issues

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions