Recover from malformed file-backed Objective-C roots - #90
Conversation
|
You have reached your Codex usage limits for security reviews. Please try again later. |
|
@codex review |
|
Codex Review: Didn't find any major issues. Another round soon, please! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
|
@codex review |
|
Codex Review: Didn't find any major issues. 👍 Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
Purpose
File-backed Objective-C root tables are external metadata. The previous dependency path narrowed raw 64-bit section coordinates through existential getters and used trapping table reads, so malformed or truncated metadata could terminate the helper or disappear without a diagnostic. This change makes the file-mode root boundary structurally checked while leaving loaded RW-extension arrays, loaded image info, and referenced C strings outside this scope.
Changes
8f0ff76f02c0865422a72662177b5e687e43522d, which adds an additiveObjCFileRootReadResult, validates typed 32/64-bit section and segment coordinates, reuses the shared table budgets, preserves good/bad/good entry order, and resolves ordinary files and cache subfiles through the checked logical-offset owner. Existing root properties remain source-compatible projections of the checked reads.06ed57ab39fc24956f9079beeb407fffa30d50f4.readRoots()in PrivateHeaderKit and route their typed failures through the existing bounded Objective-C diagnostic cap, deduplication, wire report, and persistence path.Review focus
Testing
24A5390fcache probe: TrialProto's nonempty__objc_classlistwas read from subcache.01as 226 classes with zero diagnostics; the logical-to-physical subcache offset matched the existing cache owner.Closes #88