go-python3
go-python3 copied to clipboard
Add PyBytes_FromStringAndSize to allow strings with NUL characters to be processed
What does this PR do?
It adds a wrapper function for C.PyBytes_FromStringAndSize that explicitly uses the Go string's length. This allows to correctly turn Go strings into Python bytes objects even when they contain NUL characters.
Motivation
I wrote code that receives binary protobuf messages and hands them over to python code that in turn parses it into a python object and then processes the message. I noticed that when I used python3.PyBytes_FromString to turn the binary message into a python bytes object, it got truncated at NUL characters, which caused failures when decoding. Upon closer inspection, I noticed that this was inherent in how PyBytes_FromString worked, so I created this PR to fix this shortcoming.
Additional Notes
None.
as this project will be archived soon, feel free to submit your PR to our new community fork go-python/cpy3 and we'll review it.