fix: preserve spaces in Makefile roots#25
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Preserve absolute iHeartRating Makefile roots that contain spaces and fail closed when untrusted Makefile inputs could replace verification recipes.
Baseline
Master
4d13bc857c3fe32c12cb37e268d913ad2f70cb63passed the normal static iOS baseline, while absolute Makefile paths containing spaces failed under GNU Make 4.2 and 4.4 before the checker ran. The repository already documented location-independent Make gates and protectedROOTfrom command-line overrides, but the baseline only asserted the vulnerable expression and did not reject preloaded, overridden, additional, or later replacement Makefiles.Improvements
overridesemantics.MAKEFILES, command-lineMAKEFILE_LIST, multiple loaded Makefiles, and later recipes that attempt to replacecheckorxcode-test.xcode-testbehavior and leave Swift, tests, Xcode projects, podspecs, build script, package boundary, and workflow unchanged.Validation
git diff --checkcheck,lint,test, andbuild; each recursively passed from a copied space-containing checkout.ROOT=/tmp/hostile-rootchecks passed under both Make versions.MAKEFILES, overriddenMAKEFILE_LIST, repository Makefile ordering in both directions, and latercheck/xcode-testrecipe replacements failed closed under both Make versions.make checkandmake xcode-testplus CodeQL are required at exact headc464302ff306bc8f7916fb7de2e234e801816a51.Risk
Low. This changes verification path resolution and Make authority contracts only. The recursive regression adds a small amount of gate runtime. Executable Apple-platform behavior remains covered by the unchanged hosted Xcode gate.
Follow-Ups
No code follow-up is required. Revert commits
c464302ff306bc8f7916fb7de2e234e801816a51anda07451cb7fcd369d4941f4e91398c0208f79e73fif the Make authority hardening needs to be rolled back.