GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — gh-129813: Check size in PyBytesWriter_FinishWithSize() by vstinner · Pull Request #157226 · python/cpython

Conversation

@vstinner

@vstinner vstinner commented Sep 9, 2026 •
edited by bedevere-app Bot
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Member

Reject size larger than the allocated size.

Also, check negative size in PyBytesWriter_FinishWithSize() to always raise ValueError. Previously, the function raised SystemError or ValueError depending on the code path.

Replace _PyBytesWriter_GetAllocated() optimization with _PyBytesWriter_ResizeToAllocated() to update the writer size to its allocated size.

  • Issue: [C API] PEP 782: Add PyBytesWriter API #129813

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@vstinner
pythongh-129813: Check size in PyBytesWriter_FinishWithSize()
07185df
Reject size larger than the allocated size.

Also, check negative size in PyBytesWriter_FinishWithSize() to always
raise ValueError. Previously, the function raised SystemError or
ValueError depending on the code path.

Replace _PyBytesWriter_GetAllocated() optimization with
_PyBytesWriter_ResizeToAllocated() to update the writer size to its
allocated size.
@vstinner vstinner added skip news needs backport to 3.15 bugs and security fixes labels Sep 9, 2026
@bedevere-app bedevere-app Bot mentioned this pull request Sep 9, 2026
[C API] PEP 782: Add PyBytesWriter API #129813
Closed
@bedevere-app bedevere-app Bot added the awaiting core review label Sep 9, 2026
@vstinner

vstinner commented Sep 9, 2026

Copy link
Copy Markdown
Member Author

Currently, if PyBytesWriter_FinishWithSize() size is larger than the writer size, it reads uninitialized memory (which can lead to a segfault) which is bad.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

vstinner added 4 commits September 9, 2026 19:08
@vstinner
Update test_capi
b9da2ce
test_capi: only run the 3 "example" tests in BytesWriterTest. There
is no need to rerun the same tests in ByteArrayWriterTest.
@vstinner
Fix memory leak
d572dad
@vstinner
Add tests on the Pointer API
2091c90
@vstinner
Avoid redundant checks in FinishWithPointer()
c810e97
FinishWithSize() already checks the size.
@vstinner
vstinner merged commit 4e530b8 into python:main Sep 9, 2026
51 checks passed

Uh oh!

There was an error while loading. Please reload this page.

@vstinner
vstinner deleted the writer_size branch September 9, 2026 18:59
@bedevere-app bedevere-app Bot removed the awaiting core review label Sep 9, 2026
@miss-islington-app

miss-islington-app Bot commented Sep 9, 2026

Copy link
Copy Markdown

Thanks @vstinner for the PR 🌮🎉.. I'm working now to backport this PR to: 3.15.
🐍🍒⛏🤖

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@miss-islington-app

miss-islington-app Bot commented Sep 9, 2026

Copy link
Copy Markdown

Sorry, @vstinner, I could not cleanly backport this to 3.15 due to a conflict.
Please backport using cherry_picker on command line.

cherry_picker 4e530b82f37ec89e3b54bc5d0a1612c643bff1e0 3.15
All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@miss-islington-app miss-islington-app Bot assigned vstinner Sep 9, 2026
@vstinner

vstinner commented Sep 9, 2026

Copy link
Copy Markdown
Member Author

There are conflicts on the 3.15 backport. Some recent PyBytesWriter changes are not backported to 3.15 yet. I will backport this change when the 3.15 branch will be unblocked (after 3.15.0 final release).

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

clin1234 pushed a commit to clin1234/cpython that referenced this pull request Sep 12, 2026
@vstinner @clin1234
pythongh-129813: Check size in PyBytesWriter_FinishWithSize() (python…
aac317c
…#157226)

Reject size larger than the allocated size.

Check also negative size in PyBytesWriter_FinishWithSize() to always
raise ValueError. Previously, the function raised SystemError or
ValueError depending on the code path.

Replace _PyBytesWriter_GetAllocated() optimization with
_PyBytesWriter_ResizeToAllocated() to update the writer size to its
allocated size.

test_capi: only run the 3 "example" tests in BytesWriterTest. There
is no need to rerun the same tests in ByteArrayWriterTest.
johnslavik pushed a commit to johnslavik/cpython that referenced this pull request Sep 14, 2026
@vstinner @johnslavik
pythongh-129813: Check size in PyBytesWriter_FinishWithSize() (python…
3d36fb8
…#157226)

Reject size larger than the allocated size.

Check also negative size in PyBytesWriter_FinishWithSize() to always
raise ValueError. Previously, the function raised SystemError or
ValueError depending on the code path.

Replace _PyBytesWriter_GetAllocated() optimization with
_PyBytesWriter_ResizeToAllocated() to update the writer size to its
allocated size.

test_capi: only run the 3 "example" tests in BytesWriterTest. There
is no need to rerun the same tests in ByteArrayWriterTest.
@bedevere-app

bedevere-app Bot commented Oct 12, 2026

Copy link
Copy Markdown

GH-159261 is a backport of this pull request to the 3.15 branch.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@bedevere-app bedevere-app Bot removed the needs backport to 3.15 bugs and security fixes label Oct 12, 2026
vstinner added a commit that referenced this pull request Oct 12, 2026
@vstinner
[3.15] gh-129813: Check size in PyBytesWriter_FinishWithSize() (#157226…
c38a347
…) (#159261)

gh-129813: Check size in PyBytesWriter_FinishWithSize() (#157226)

Reject size larger than the allocated size.

Check also negative size in PyBytesWriter_FinishWithSize() to always
raise ValueError. Previously, the function raised SystemError or
ValueError depending on the code path.

Replace _PyBytesWriter_GetAllocated() optimization with
_PyBytesWriter_ResizeToAllocated() to update the writer size to its
allocated size.

test_capi: only run the 3 "example" tests in BytesWriterTest. There
is no need to rerun the same tests in ByteArrayWriterTest.

(cherry picked from commit 4e530b8)
This was referenced Oct 24, 2026
pycriu: fix getting RPC response size with Python 3.15.1 checkpoint-restore/criu#3268
Merged
socket.recv() and recvfrom() with MSG_TRUNC raise ValueError and lose the datagram since 3.15.1 #160622
Open
socket.recv(size, MSG_TRUNC) returns more than size bytes #69121
Open
@ViderStar ViderStar mentioned this pull request Oct 25, 2026
gh-160622: Fix socket recv() and recvfrom() with MSG_TRUNC #160677
Open
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

No reviews

Uh oh!

There was an error while loading. Please reload this page.

Assignees

@vstinner vstinner

Labels

skip news

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

1 participant

@vstinner
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.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.