Fix the C extension module to harden is_namedtuple. #284
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.
Protects against looks-a-likes such as Mocks. Also prevent dict encoding
from causing an unraised SystemError when encountering a non-Dict.
Noticed by running application tests against a CPython interpreter with C
asserts enabled (COPTS += -UNDEBUG) which crashed.
I didn't actually dive into figure out what data structure the code managed to
try to serialize that managed to get a MagicMock or StubMock instance
into
encoder_listencode_obj
where it wound up passing_is_namedtuple
leading to the assert-crash triggering problems this PR fixes.
Contributed-By: Gregory P. Smith [Google]