fix lifetime of return value in PyClassGuardMutSuper::as_super#6181
Merged
Conversation
Member
Author
|
I'm torn whether to ship this in 0.29.1. In theory it could break builds, but it seems like anyone who would be broken by this potentially has issues anyway. (So I think my leaning is that it's better to ship it.) I don't think it's bad enough to warrant yanking 0.29.0. |
Icxolu
approved these changes
Jul 2, 2026
Icxolu
left a comment
Member
There was a problem hiding this comment.
Yeah, in hindsight this is quite clearly wrong 🙈. I agree that we should ship in 0.29.1. If this breaks someone, that code is also clearly wrong. Also we have not yet really advertised this type much and not introduced a direct way to borrow a guard, only via extract, so I doubt there will be many uses already.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
PyClassGuardMutSuper::as_superwas incorrectly returning a super-guard with lifetime'adecoupled from the&mutborrow of the guard. This allows the super-guard to exist after the.as_super()borrow ends, potentially leading to mutable aliasing issues.cc @Icxolu - we missed this in #6104
(Credit to Codex security scanning for this discovery.)