Skip to content

Backport SOL-2025-1 through SOL-2026-3 fixes to release_0.8.30#141

Closed
yanghang8612 wants to merge 17 commits into
tronprotocol:release_0.8.30from
yanghang8612:agent/backport-sol-2025-1-to-sol-2026-3-0830
Closed

Backport SOL-2025-1 through SOL-2026-3 fixes to release_0.8.30#141
yanghang8612 wants to merge 17 commits into
tronprotocol:release_0.8.30from
yanghang8612:agent/backport-sol-2025-1-to-sol-2026-3-0830

Conversation

@yanghang8612

Copy link
Copy Markdown

Summary

Backports the upstream security fixes corresponding to SOL-2025-1 through SOL-2026-3 to release_0.8.30, following the already merged release_0.8.31 backport in #135.

  • fixes storage array cleanup and copy operations at the 2^256 storage boundary in both the legacy and via-IR pipelines
  • separates persistent and transient storage zeroing helpers to prevent generated-function name collisions
  • replaces recursive-cycle handling in the Yul call graph with Tarjan SCC analysis, including intersecting-cycle cases
  • prevents storage-layout diagnostics from mutating the linearized base-contract order
  • includes the upstream regression coverage and TRON compatibility adjustments

Backport notes

  • cherry-picked the 17 commits from Backport SOL-2025-1 through SOL-2026-3 fixes to release_0.8.31 #135 in their original order with source commit references
  • resolved the docs/bugs_by_version.json conflict by retaining the vulnerability version matrix introduced by the source fix
  • renamed the final test-adaptation commit from TRON 0.8.31 to TRON 0.8.30; its source commit remains recorded
  • no unrelated 0.8.31 release or CI changes are included

Validation

  • Release build passed locally with USE_Z3=OFF
  • 39 targeted Tarjan SCC, Yul call graph, function-side-effect, function-specializer, and stack-limit-evader tests passed
  • 4 targeted syntax tests passed
  • 3 targeted command-line regressions passed:
    • standard_via_ir_intersecting_recursive_cycles_stack_too_deep
    • storage_layout_specifier_with_inheritance
    • storage_transient_storage_collision_ir_output
  • docs/bugs.json and docs/bugs_by_version.json passed JSON validation

Semantic execution and SolidityOptimizer tests were attempted locally but require the TRON test-only EVMC shim for no-token CALLTOKENID/CALLTOKENVALUE behavior. A stock evmone VM rejects deployment, so those results are not reported as passing here. The same fixes passed the full semantic and optimizer validation documented in #135 on release_0.8.31; this PR should be rerun in the shim-enabled 0.8.30 test environment before release.

Impact

This makes the 0.8.30 release candidate include the same critical compiler correctness and security fixes already accepted for 0.8.31, without merging unrelated 0.8.31 changes.

r0qs and others added 17 commits July 23, 2026 18:30
…and copy)

Co-authored-by: Daniel Kirchner <daniel@ekpyron.org>
Co-authored-by: clonker <1685266+clonker@users.noreply.github.com>
Co-authored-by: Kamil Śliwak <kamil.sliwak@codepoets.it>
(cherry picked from commit 2ab47bd)
Co-authored-by: Daniel Kirchner <daniel@ekpyron.org>
Co-authored-by: Kamil Śliwak <kamil.sliwak@codepoets.it>
(cherry picked from commit 44cdd8d)
…cy and via-ir on deletion, partial assigments and copy

Co-authored-by: Daniel Kirchner <daniel@ekpyron.org>
Co-authored-by: Kamil Śliwak <kamil.sliwak@codepoets.it>
(cherry picked from commit 0495910)
(cherry picked from commit d38b746)
Use Tarjan's strongly-connected-components algorithm: a function is recursive iff it lies
in a non-trivial SCC or has a self-edge.

Also add intersection recursive cycles regression test to function specializer tests.

(cherry picked from commit 5025618)
These are tests to demonstrate incorrect processing of inheritance
hierarchy in the presence of custom storage layout close to the storage
end.

(cherry picked from commit 2ac7929)
When the compiler emits a warning about storage base location being
too close to storage end, it calls a helper function to determine the
last storage variable. This helper function previously unintentionally
reversed the linearized based contracts annotation. The function only
needs to take reversed **view**. It should not modify the underlying
data.

(cherry picked from commit 9fb715d)
…nHandle` to utilities

(cherry picked from commit 47e36a3)
@github-actions

Copy link
Copy Markdown

Thank you for your contribution to the Solidity compiler! A team member will follow up shortly.

If you haven't read our contributing guidelines and our review checklist before, please do it now, this makes the reviewing process and accepting your contribution smoother.

If you have any questions or need our help, feel free to post them in the PR or talk to us directly on the #solidity-dev channel on Matrix.

@yanghang8612
yanghang8612 deleted the agent/backport-sol-2025-1-to-sol-2026-3-0830 branch July 23, 2026 10:48
@yanghang8612

Copy link
Copy Markdown
Author

Superseded by #142 after renaming the fork branch to backport/sol-2025-1-to-sol-2026-3-0830 to align with the existing backport naming convention.

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants