Skip to content

[3.14] gh-145105: Fix crash in csv.reader with re-entrant iterator (GH-145106)#148404

Merged
gpshead merged 1 commit intopython:3.14from
miss-islington:backport-20994b1-3.14
Apr 11, 2026
Merged

[3.14] gh-145105: Fix crash in csv.reader with re-entrant iterator (GH-145106)#148404
gpshead merged 1 commit intopython:3.14from
miss-islington:backport-20994b1-3.14

Conversation

@miss-islington
Copy link
Copy Markdown
Contributor

@miss-islington miss-islington commented Apr 11, 2026

When a custom iterator calls next() on the same csv.reader from
within next, the inner iteration sets self->fields to NULL.
The outer iteration then crashes in parse_save_field() by passing
NULL to PyList_Append.

Add a guard after PyIter_Next() to detect that fields was set to
NULL by a re-entrant call, and raise csv.Error instead of crashing.
(cherry picked from commit 20994b1)

Co-authored-by: Ramin Farajpour Cami ramin.blackhat@gmail.com

Fixes #145105

…thonGH-145106)

When a custom iterator calls next() on the same csv.reader from
within __next__, the inner iteration sets self->fields to NULL.
The outer iteration then crashes in parse_save_field() by passing
NULL to PyList_Append.

Add a guard after PyIter_Next() to detect that fields was set to
NULL by a re-entrant call, and raise csv.Error instead of crashing.
(cherry picked from commit 20994b1809f9c162e4cae01a5af08bd492ede9f9)

Co-authored-by: Ramin Farajpour Cami <ramin.blackhat@gmail.com>
@gpshead gpshead enabled auto-merge (squash) April 11, 2026 22:18
@gpshead gpshead merged commit 4f8a77b into python:3.14 Apr 11, 2026
53 checks passed
@miss-islington miss-islington deleted the backport-20994b1-3.14 branch April 11, 2026 22:46
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.

3 participants