Skip to content

gh-133590: ensure that TableEntry.linenumber_borrow is initialized #133681

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 6 commits into from
May 11, 2025

Conversation

ljfp
Copy link
Contributor

@ljfp ljfp commented May 8, 2025

Since the author decided to initialize filename_borrow to NULL, I think that linenumber_borrow should also be initialized (likely to 0).

In its current state it could become an issue in the report_leak() function if for some reason entry->linenumber_borrow = linenumber; fails to be executed and then linenumber_borrow is accessed when filename_borrow is non-NULL. I'm not sure if this code path is possible at all, but initializing linenumber_borrow shouldn't have any side-effects.

If this was left intentionally uninitialized for some reason, it would be a good idea to close this PR and open another one documenting the motive behind leaving it like this.

Also, stackrefs.c had a blank line at the beginning of the file (!!); I took the liberty to remove it.

@python-cla-bot
Copy link

python-cla-bot bot commented May 8, 2025

All commit authors signed the Contributor License Agreement.

CLA signed

@bedevere-app
Copy link

bedevere-app bot commented May 8, 2025

Most changes to Python require a NEWS entry. Add one using the blurb_it web app or the blurb command-line tool.

If this change has little impact on Python users, wait for a maintainer to apply the skip news label instead.

@bedevere-app
Copy link

bedevere-app bot commented May 8, 2025

Most changes to Python require a NEWS entry. Add one using the blurb_it web app or the blurb command-line tool.

If this change has little impact on Python users, wait for a maintainer to apply the skip news label instead.

@ljfp ljfp changed the title gh-133590: Initialize TableEntry.linenumber_borrow to 0. gh-133590: Initialize TableEntry.linenumber_borrow. May 8, 2025
Copy link
Member

@picnixz picnixz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One could argue that it's not an undefined behavior as linenumber_borrow will always be set to something before it's read but accessing it while uninitialized is indeed UB.

@picnixz picnixz changed the title gh-133590: Initialize TableEntry.linenumber_borrow. gh-133590: ensure that TableEntry.linenumber_borrow is initialized May 9, 2025
@picnixz picnixz self-assigned this May 9, 2025
@picnixz
Copy link
Member

picnixz commented May 11, 2025

CI seems stuck. I'll close/reopen your PR.

@picnixz picnixz closed this May 11, 2025
@picnixz picnixz reopened this May 11, 2025
@picnixz picnixz merged commit c838e21 into python:main May 11, 2025
41 checks passed
@picnixz picnixz added the needs backport to 3.14 bugs and security fixes label May 11, 2025
@miss-islington-app
Copy link

Thanks @ljfp for the PR, and @picnixz for merging it 🌮🎉.. I'm working now to backport this PR to: 3.14.
🐍🍒⛏🤖

miss-islington pushed a commit to miss-islington/cpython that referenced this pull request May 11, 2025
@bedevere-app
Copy link

bedevere-app bot commented May 11, 2025

GH-133872 is a backport of this pull request to the 3.14 branch.

@bedevere-app bedevere-app bot removed the needs backport to 3.14 bugs and security fixes label May 11, 2025
picnixz pushed a commit that referenced this pull request May 11, 2025
…alized (GH-133681) (#133872)

gh-133590: ensure that `TableEntry.linenumber_borrow` is initialized (GH-133681)
(cherry picked from commit c838e21)

Co-authored-by: Lauta <[email protected]>
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.

2 participants