Skip to content

Reject oversized bytearray resize requests - #9815

Merged
youknowone merged 1 commit into
RustPython:mainfrom
youknowdot:fix/bytearray-resize-size-limit-20261112
Nov 12, 2026
Merged

youknowone merged 1 commit into
RustPython:mainfrom
youknowdot:fix/bytearray-resize-size-limit-20261112

Conversation

@youknowdot

Copy link
Copy Markdown
Contributor

Summary

Reject bytearray resize requests above CPython 3.15's normal GIL-build bytes allocation limit before allocating. Keep same-size no-ops and exported-buffer errors ahead of the allocation check.

The failure appeared after #9807 enabled test_bytes.test_resize. On 32-bit WASI, the existing Vec-backed implementation can successfully allocate sys.maxsize bytes. I reproduced that on a pre-#9813 build; the bytearray source is identical on current main and the failing #9813 CI merge.

The fix is seven Rust lines. The snippet covers the first forbidden length on either pointer width, preservation of contents, and BufferError precedence. No Lib tests or workflow settings change.

Reference: CPython 3.15 bytearray size ceiling and resize ordering, resize implementation.

Validation

  • Exact CI WASI profile/features build with Rust 1.99.0 and Wasmer 7.5.0.
  • WASI test_bytes: 332 tests, 18 skipped, success. Focused resize selection: 2 tests passed.
  • WASI boundary probe: six allocation-limit checks and eighteen error-precedence checks passed, including the first forbidden 32-bit length, 2147483631.
  • CPython 3.15.1: full modified bytearray snippet and the same boundary/error-precedence probe passed.
  • Independent source review, formatting, diff checks, and repository pre-commit hooks passed.
  • Native workspace tests, C-API tests, strict Clippy, native test_bytes, and snippet harness are queued behind existing shared builds. This remains a draft until those checks and CI finish.

AI assistance: OpenAI Codex investigated, implemented, reviewed, and tested this change. The runtime did not expose an exact model version.

Match CPython 3.15's normal bytes-allocation ceiling before allocating a resized bytearray. Preserve the same-size and exported-buffer checks, and cover the first excluded length, contents preservation, and export precedence on either pointer width.

Assisted-by: Codex:unreported
@coderabbitai

coderabbitai Bot commented Nov 12, 2026 •

Copy link
Copy Markdown
Contributor

Explain Change →

Caution

Review failed

The pull request is closed.

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

@youknowone
youknowone marked this pull request as ready for review November 12, 2026 09:12
@chatgpt-codex-connector

Copy link
Copy Markdown
Codex Review Summary: ❌ Failed

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ❌ Failed 2026-11-12T09:12:18.606864Z
We couldn’t complete this review. Comment @codex review to try again.
98f5158 Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@youknowone
youknowone merged commit 586d38a into RustPython:main Nov 12, 2026
20 checks passed
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants