The Wire · Showcase
CLI PATCHES MEMORY DOS AND FIXES PHANTOM BREAKING CHANGES
By RepoJournal · Filed · About Shopify
Shopify/cli shipped a critical security fix for stdin memory exhaustion and eliminated false-positive breaking change detection that was blocking legitimate PRs.
The `readStdinString` function in Shopify/cli was vulnerable to Denial of Service through unbounded memory consumption—attackers could exhaust heap by piping unlimited data to stdin [1]. This release introduces a hard 10MB limit, closing the attack surface immediately [2]. In parallel, the breaking-change detection pipeline was reporting phantom removals whenever main diverged from a PR's branch point [3]. PR #7466 shows the exact failure: the check flagged a field removal that never happened in the PR itself—main had added the field after branching [3]. That's now fixed by comparing against merge-base and scoping diffs to actual PR changes [3]. On the test side, replay.test.ts was replaced with real temporary directories instead of mocked filesystem calls, making the log discovery and sorting logic actually testable rather than testing the mocks themselves [4].
One email a day. Unsubscribe in one click.
Keep up with Shopify in about 3 minutes a day: what actually shipped — the commits, pull requests, releases, and security advisories that matter.
One email a day. Unsubscribe in one click. Read a past issue →
Action items
- → Upgrade Shopify/cli immediately — stdin DoS fix is mandatory Shopify/cli [immediate]
- → Re-run breaking-change checks on any blocked PRs — false positives are now cleared Shopify/cli [plan]
References
- [1] [Security] Limit stdin read size in readStdinString Shopify/cli
- [2] Merge pull request #7482 from Shopify/sentinel-limit-stdin-read-10535475246681127260 Shopify/cli
- [3] Fix breaking-change check: compare against merge-base, scope to PR diff ↗ Shopify/cli
- [4] [Tests] Replace filesystem mocks with real temp dir in replay.test.ts ↗ Shopify/cli