go-python3 icon indicating copy to clipboard operation
go-python3 copied to clipboard

Add PyBytes_FromStringAndSize to allow strings with NUL characters to be processed

Open akrennmair opened this issue 5 years ago • 1 comments

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.

akrennmair avatar Aug 07 '20 14:08 akrennmair

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.

christian-korneck avatar Oct 25 '21 13:10 christian-korneck