fix(linux): safely rebase legacy sysroot links #1553

Merged
Brett-D merged 2 commits from fix/linux-legacy-sysroot-links into main 2026-11-10 07:48:08 +00:00
Brett-D commented 2026-11-10 07:44:01 +00:00 (Migrated from github.com)

Previously published Linux sysroot update parts can contain absolute sysroot links, which the newer updater rejects. #1536 avoids the known alias in newly produced parts, but it does not rewrite existing published parts.

This permits legacy rooted links only in the sysroot part and rebases them to relative links after verifying that their targets exist and resolve inside that sysroot. Absolute links in other parts remain rejected; missing or circular targets and lexical or indirect escapes fail. The same handling covers unchanged installed parts and new sysroot-part creation.

Testing

  • All 24 Linux updater unit tests passed, including synthetic legacy links and hostile-link cases.
  • A synthetic legacy sysroot archive reproduced the rejection on unmodified main.
  • Game-free suite on Ubuntu 24.04: 230 passed, 15 skipped (shader tools or game/platform-specific requirements).
Previously published Linux sysroot update parts can contain absolute sysroot links, which the newer updater rejects. #1536 avoids the known alias in newly produced parts, but it does not rewrite existing published parts. This permits legacy rooted links only in the sysroot part and rebases them to relative links after verifying that their targets exist and resolve inside that sysroot. Absolute links in other parts remain rejected; missing or circular targets and lexical or indirect escapes fail. The same handling covers unchanged installed parts and new sysroot-part creation. ### Testing - All 24 Linux updater unit tests passed, including synthetic legacy links and hostile-link cases. - A synthetic legacy sysroot archive reproduced the rejection on unmodified main. - Game-free suite on Ubuntu 24.04: 230 passed, 15 skipped (shader tools or game/platform-specific requirements).
Commenting is not possible because the repository is archived.
No description provided.