DataDog / go-python3

Go bindings to the CPython-3 API
MIT License
376 stars 140 forks source link

Add PyBytes_FromStringAndSize to allow strings with NUL characters to be processed #31

Open akrennmair opened 4 years ago

akrennmair commented 4 years ago

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.

christian-korneck commented 2 years ago

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.