The read() method on ssl objects can take a buffer as a parameter, but the method is buggy in this case: - it only accepts bytearrays, while it should accept any object supporting the buffer protocol in write mode - when the object is not a bytearray, it returns NULL without setting the current exception - since it doesn't attempt to get a buffer export from the object, there is no protection and the buffer could be resized while the method releases the GIL, leading to a likely crash This patch solves all three issues. Note that I'm not able to write an unit test for it, because test_ssl.py is too high-level (it looks more like functional tests than unit tests). Also, the only reason I discovered this is that it made some tests fail on the io-in-C branch (which uses readinto() a lot). I'm a complete SSL newbie.
No, and since I don't how to test it out of running the io-c branch on test_ssl and test_poplib, I'd recommend not backporting it unless an SSL expert takes a look.