[PR #1378] [MERGED] fix(apple): scope keyed archive traversal to the selection #2839

Closed
opened 2026-10-17 21:10:52 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/morluto/rea/pull/1378
Author: @rudycelekli
Created: 10/9/2026
Status: ✅ Merged
Merged: 10/10/2026
Merged by: @N0zoM1z0

Base: main ← Head: fix/keyed-archive-selected-scope-20261009


📝 Commits (10+)

  • be6863e feat(ghidra): support native PE DLLs on Windows
  • 2309ceb fix(apple): scope keyed archive traversal to the selection
  • e10c934 fix(ghidra): keep the cross-format branch callee multi-block
  • b8a8190 fix(javascript): retain conditional mutation ordering uncertainty
  • 565f2ef chore(release/6.3.0): release rea-agents 6.3.0
  • bf58eac docs(release): restore complete 6.3 migration and ancestry notes
  • 74cf9e1 Merge pull request #1383 from morluto/release-please--branches--release/6.3.0--components--rea-agents
  • 7aa4d76 chore(release): sync corrected 6.3 checkpoint
  • 40f632a ci: re-run the suite after the main-branch shard flake
  • e17290c ci: re-run the suite on the corrected main checkpoint

📊 Changes

367 files changed (+21640 additions, -2406 deletions)

View changed files

📝 .agents/skills/reverse-engineer-anything/SKILL.md (+14 -7)
📝 .agents/skills/reverse-engineer-anything/references/android-applications.md (+0 -0)
📝 .agents/skills/reverse-engineer-anything/references/evidence-workflows.md (+0 -0)
📝 .agents/skills/reverse-engineer-anything/references/javascript-applications.md (+0 -0)
📝 .agents/skills/reverse-engineer-anything/references/native-and-artifacts.md (+9 -0)
📝 .agents/skills/reverse-engineer-anything/references/runtime-observation.md (+0 -0)
📝 .github/pull_request_template.md (+1 -1)
📝 .github/workflows/real-ghidra-windows.yml (+20 -0)
📝 .github/workflows/website-check.yml (+2 -6)
📝 .github/workflows/website-pages.yml (+2 -4)
📝 AGENTS.md (+1 -1)
📝 CHANGELOG.md (+10 -0)
📝 CONTRIBUTING.md (+6 -2)
📝 README.md (+2 -2)
📝 README_ar.md (+2 -2)
📝 README_de.md (+2 -2)
📝 README_es.md (+2 -2)
📝 README_fa.md (+2 -2)
📝 README_fr.md (+2 -2)
➕ README_id.md (+307 -0)

...and 80 more files

📄 Description

Selecting one keyed archive recursively reads unrelated directories before validating the selected entry. A valid standalone plist can fail because a sibling is unreadable; an invalid selected directory or an oversized selected file can also lose its useful type/limit diagnostic.

This change restricts directory descent to Unicode-equivalent ancestors of the selected archive and validates matching entry type/size immediately. Default recursive inventories, raw filesystem identity, equivalent-path ambiguity checks, streaming limits, and cancellation remain covered. Required ancestors still must be readable; invalid-type/size rejection can precede ambiguity rejection.

Follow-up to the selected-path feedback on superseded #1314; related to the bounded-resource work in #1065.

Validation:

  • Independently built current main 2d99e1e3 and the integrated fix. A real 666-byte XML keyed archive with an unrelated directory at mode 000 reproduces the failure through both the public CLI and an actual SDK stdio MCP client on main. Actual EACCES is asserted first on Linux as uid 1000.
  • The same public workflows succeed on the fix despite that confirmed EACCES. Full normalized results and Evidence IDs agree; the archive digest and raw path are preserved, text/structured output matches, the input stays unchanged, and the following MCP ping succeeds. These artifact owners are unchanged between baseline 2d99e1e3 and integrated main 9ffc6210.
  • 52 tests across seven exact files pass with no skips: selected-path/permission/Unicode cases, default directory inventory and errors, file replacement/FIFO/open identity, archive encoding, and MCP numeric metadata.
  • Fresh runtime build, serial full typecheck, lint/module boundaries, formatting, unused-code and duplication checks, architecture guards, and generated documentation checks pass under the local resource guard.

Maintainer verification establishes actual Linux public XML-artifact workflows and filesystem boundaries. It does not establish native macOS Foundation, Windows permissions, or native-engine behavior. The contributor separately reports Foundation-generated binary/XML archive CLI/MCP verification on macOS in the original submission.


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/morluto/rea/pull/1378 **Author:** [@rudycelekli](https://github.com/rudycelekli) **Created:** 10/9/2026 **Status:** ✅ Merged **Merged:** 10/10/2026 **Merged by:** [@N0zoM1z0](https://github.com/N0zoM1z0) **Base:** `main` ← **Head:** `fix/keyed-archive-selected-scope-20261009` --- ### 📝 Commits (10+) - [`be6863e`](https://github.com/morluto/rea/commit/be6863e9a16bcc3a09d87c50981e69292795a512) feat(ghidra): support native PE DLLs on Windows - [`2309ceb`](https://github.com/morluto/rea/commit/2309cebb7b280a9465c5a063cb287fc196ed2ddd) fix(apple): scope keyed archive traversal to the selection - [`e10c934`](https://github.com/morluto/rea/commit/e10c934d5a756c1a4c7b547ebd02c403ddfde7b8) fix(ghidra): keep the cross-format branch callee multi-block - [`b8a8190`](https://github.com/morluto/rea/commit/b8a8190b2f30e377eee2d69d1ba31ea454fa70b9) fix(javascript): retain conditional mutation ordering uncertainty - [`565f2ef`](https://github.com/morluto/rea/commit/565f2efa0337648324db294822103a39ccfab013) chore(release/6.3.0): release rea-agents 6.3.0 - [`bf58eac`](https://github.com/morluto/rea/commit/bf58eac4ef0830648db9a67daf6756270fb338e1) docs(release): restore complete 6.3 migration and ancestry notes - [`74cf9e1`](https://github.com/morluto/rea/commit/74cf9e1401fcd89482fe39c27cc898f5858e9b72) Merge pull request #1383 from morluto/release-please--branches--release/6.3.0--components--rea-agents - [`7aa4d76`](https://github.com/morluto/rea/commit/7aa4d768eb15317a63a476431ed75bafec086033) chore(release): sync corrected 6.3 checkpoint - [`40f632a`](https://github.com/morluto/rea/commit/40f632a155bff2defdea09e467229c703bc0b0e9) ci: re-run the suite after the main-branch shard flake - [`e17290c`](https://github.com/morluto/rea/commit/e17290cd2a17931d7a2af70f74b76b94276bd788) ci: re-run the suite on the corrected main checkpoint ### 📊 Changes **367 files changed** (+21640 additions, -2406 deletions) <details> <summary>View changed files</summary> 📝 `.agents/skills/reverse-engineer-anything/SKILL.md` (+14 -7) 📝 `.agents/skills/reverse-engineer-anything/references/android-applications.md` (+0 -0) 📝 `.agents/skills/reverse-engineer-anything/references/evidence-workflows.md` (+0 -0) 📝 `.agents/skills/reverse-engineer-anything/references/javascript-applications.md` (+0 -0) 📝 `.agents/skills/reverse-engineer-anything/references/native-and-artifacts.md` (+9 -0) 📝 `.agents/skills/reverse-engineer-anything/references/runtime-observation.md` (+0 -0) 📝 `.github/pull_request_template.md` (+1 -1) 📝 `.github/workflows/real-ghidra-windows.yml` (+20 -0) 📝 `.github/workflows/website-check.yml` (+2 -6) 📝 `.github/workflows/website-pages.yml` (+2 -4) 📝 `AGENTS.md` (+1 -1) 📝 `CHANGELOG.md` (+10 -0) 📝 `CONTRIBUTING.md` (+6 -2) 📝 `README.md` (+2 -2) 📝 `README_ar.md` (+2 -2) 📝 `README_de.md` (+2 -2) 📝 `README_es.md` (+2 -2) 📝 `README_fa.md` (+2 -2) 📝 `README_fr.md` (+2 -2) ➕ `README_id.md` (+307 -0) _...and 80 more files_ </details> ### 📄 Description Selecting one keyed archive recursively reads unrelated directories before validating the selected entry. A valid standalone plist can fail because a sibling is unreadable; an invalid selected directory or an oversized selected file can also lose its useful type/limit diagnostic. This change restricts directory descent to Unicode-equivalent ancestors of the selected archive and validates matching entry type/size immediately. Default recursive inventories, raw filesystem identity, equivalent-path ambiguity checks, streaming limits, and cancellation remain covered. Required ancestors still must be readable; invalid-type/size rejection can precede ambiguity rejection. Follow-up to the selected-path feedback on superseded #1314; related to the bounded-resource work in #1065. Validation: - Independently built current main `2d99e1e3` and the integrated fix. A real 666-byte XML keyed archive with an unrelated directory at mode 000 reproduces the failure through both the public CLI and an actual SDK stdio MCP client on main. Actual EACCES is asserted first on Linux as uid 1000. - The same public workflows succeed on the fix despite that confirmed EACCES. Full normalized results and Evidence IDs agree; the archive digest and raw path are preserved, text/structured output matches, the input stays unchanged, and the following MCP ping succeeds. These artifact owners are unchanged between baseline `2d99e1e3` and integrated main `9ffc6210`. - 52 tests across seven exact files pass with no skips: selected-path/permission/Unicode cases, default directory inventory and errors, file replacement/FIFO/open identity, archive encoding, and MCP numeric metadata. - Fresh runtime build, serial full typecheck, lint/module boundaries, formatting, unused-code and duplication checks, architecture guards, and generated documentation checks pass under the local resource guard. Maintainer verification establishes actual Linux public XML-artifact workflows and filesystem boundaries. It does not establish native macOS Foundation, Windows permissions, or native-engine behavior. The contributor separately reports Foundation-generated binary/XML archive CLI/MCP verification on macOS in the original submission. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
bsakaguchi 2026-10-17 21:10:52 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
morluto/rea#2839
No description provided.