Skip to content

fix: propagate ownPropertyOnly into Context.spawn() for {% render %}#893

Merged
harttle merged 1 commit into
masterfrom
fix/context-spawn-own-property-only
May 3, 2026
Merged

fix: propagate ownPropertyOnly into Context.spawn() for {% render %}#893
harttle merged 1 commit into
masterfrom
fix/context-spawn-own-property-only

Conversation

@harttle
Copy link
Copy Markdown
Owner

@harttle harttle commented May 3, 2026

Child contexts from spawn() re-derived ownPropertyOnly from Liquid opts only, dropping per-render RenderOptions overrides. That broke the contract that parseAndRender(..., { ownPropertyOnly: true }) locks down a single render, including partials loaded via {% render %}.

Add regression test matching prototype-chain leak PoC.

Child contexts from spawn() re-derived ownPropertyOnly from Liquid opts
only, dropping per-render RenderOptions overrides. That broke the contract
that parseAndRender(..., { ownPropertyOnly: true }) locks down a single
render, including partials loaded via {% render %}.

Add regression test matching prototype-chain leak PoC.

Co-authored-by: Cursor <cursoragent@cursor.com>
@coveralls
Copy link
Copy Markdown

Coverage Report for CI Build 25281894642

Coverage remained the same at 99.564%

Details

  • Coverage remained the same as the base build.
  • Patch coverage: No coverable lines changed in this PR.
  • No coverage regressions found.

Uncovered Changes

No uncovered changes found.

Coverage Regressions

No coverage regressions found.


Coverage Stats

Coverage Status
Relevant Lines: 2990
Covered Lines: 2983
Line Coverage: 99.77%
Relevant Branches: 1135
Covered Branches: 1124
Branch Coverage: 99.03%
Branches in Coverage %: Yes
Coverage Strength: 19896.28 hits per line

💛 - Coveralls

@harttle harttle merged commit dbbf628 into master May 3, 2026
14 checks passed
github-actions Bot pushed a commit that referenced this pull request May 14, 2026
# [10.26.0](v10.25.7...v10.26.0) (2026-05-14)

### Bug Fixes

* **date:** cap strftime widths and account padding in memoryLimit ([#895](#895)) ([3129d46](3129d46))
* enforce renderLimit for empty renderTemplates calls ([#894](#894)) ([5b9c346](5b9c346))
* propagate ownPropertyOnly into Context.spawn() for {% render %} ([#893](#893)) ([dbbf628](dbbf628))
* **security:** block Object.prototype filter/tag lookups (RCE) ([#897](#897)) ([457fae0](457fae0))
* strip html newline tags ([#892](#892)) ([26ea285](26ea285))
* **strip_html:** rewrite as linear single-pass scan to avoid ReDoS ([#896](#896)) ([3616a74](3616a74))

### Features

* add sha256 and hmac_sha256 filters for cryptographic operations ([#889](#889)) ([1c816d4](1c816d4))
@github-actions
Copy link
Copy Markdown

🎉 This PR is included in version 10.26.0 🎉

The release is available on:

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants