You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
_ssl: support surrogates in filenames, and bytes/bytearray filenames #52723
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
assignee=Noneclosed_at=<Date2010-05-16.21:26:17.320>created_at=<Date2010-04-20.23:38:37.526>labels= ['library', 'expert-unicode']
title='_ssl: support surrogates in filenames, and bytes/bytearray filenames'updated_at=<Date2010-05-16.21:38:32.630>user='https://github.com/vstinner'
your ssl_convert_filename() function has a strange signature
using PyByteArray_AsString() is wrong, we release the GIL later and the buffer could be reallocated, leading to a crash; the right approach is to use PyObject_GetBuffer() and later PyBuffer_Release()
as such, your function could simply return the bytes/bytearray PyObject *, and not fill the char * pointer
adding tests for both the bytes and unicode cases would be nice
key_file and cert_file are mandatory (see newPySSLObject()) and bytearray are now more accepted by PyUnicode_FSConverter() (see bpo-8485). New version of the patch is simpler and shorter.
Support bytearray is a little bit to much complex for me (because of the GIL and bytearray lock), I prefer to leave 3.1 unchanged (I will not backport this patch).
Most of this should be solved if the patch in bpo-8550 gets accepted. As for test_decode_certificate, it seems it isn't used anywhere, and could therefore be deleted.
I commited the fix on _ssl._test_decode_cert() as r81237 (py3k, blocked in 3.1: r81238). Issue bpo-8550 got accepted and uses PyUnicode_FSConverter for the filenames (except _ssl._test_decode_cert() which is now fixed).
Activity
vstinner commentedon Apr 20, 2010
_ssl.sslwrap() has 3 filename arguments: key_file, cert_file and cacerts_file. It uses "z" format to parse them.
Attached patch uses PyUnicode_FSConverter() to support surrogates, bytes and bytearray. It fixes also test_decode_certificate() function.
pitrou commentedon Apr 20, 2010
Some comments:
vstinner commentedon Apr 23, 2010
key_file and cert_file are mandatory (see newPySSLObject()) and bytearray are now more accepted by PyUnicode_FSConverter() (see bpo-8485). New version of the patch is simpler and shorter.
Support bytearray is a little bit to much complex for me (because of the GIL and bytearray lock), I prefer to leave 3.1 unchanged (I will not backport this patch).
pitrou commentedon Apr 23, 2010
No, they are not. Not for a client connection, at least.
Also, please add at least a simple test.
pitrou commentedon May 4, 2010
Most of this should be solved if the patch in bpo-8550 gets accepted. As for test_decode_certificate, it seems it isn't used anywhere, and could therefore be deleted.
vstinner commentedon May 16, 2010
I commited the fix on _ssl._test_decode_cert() as r81237 (py3k, blocked in 3.1: r81238). Issue bpo-8550 got accepted and uses PyUnicode_FSConverter for the filenames (except _ssl._test_decode_cert() which is now fixed).
vstinner commentedon May 16, 2010
Oh, I forgot to patch RAND_egd()! Fixed: r81239 (py3k, blocked in 3.1: r81240).
The whole ssl module should now be fully "str+surrogates/bytes filenames" compliant :-)