Branch data Line data Source code
1 : : #include "Python.h" 2 : : #include "../_ssl.h" 3 : : 4 : : #include "openssl/bio.h" 5 : : 6 : : /* BIO_s_mem() to PyBytes 7 : : */ 8 : : static PyObject * 9 : 1 : _PySSL_BytesFromBIO(_sslmodulestate *state, BIO *bio) 10 : : { 11 : : long size; 12 : 1 : char *data = NULL; 13 : 1 : size = BIO_get_mem_data(bio, &data); 14 [ + - - + ]: 1 : if (data == NULL || size < 0) { 15 : 0 : PyErr_SetString(PyExc_ValueError, "Not a memory BIO"); 16 : 0 : return NULL; 17 : : } 18 : 1 : return PyBytes_FromStringAndSize(data, size); 19 : : } 20 : : 21 : : /* BIO_s_mem() to PyUnicode 22 : : */ 23 : : static PyObject * 24 : 7 : _PySSL_UnicodeFromBIO(_sslmodulestate *state, BIO *bio, const char *error) 25 : : { 26 : : long size; 27 : 7 : char *data = NULL; 28 : 7 : size = BIO_get_mem_data(bio, &data); 29 [ + - - + ]: 7 : if (data == NULL || size < 0) { 30 : 0 : PyErr_SetString(PyExc_ValueError, "Not a memory BIO"); 31 : 0 : return NULL; 32 : : } 33 : 7 : return PyUnicode_DecodeUTF8(data, size, error); 34 : : }