Convert to getattro some more; also swap PyBytes_AsString for _PyUnicode_AsString when we know the input is unicode, not bytes
diff --git a/OpenSSL/crypto/x509.c b/OpenSSL/crypto/x509.c
index 915a3b7..73f5e08 100644
--- a/OpenSSL/crypto/x509.c
+++ b/OpenSSL/crypto/x509.c
@@ -93,8 +93,6 @@
long small_serial;
PyObject *serial = NULL;
PyObject *hex = NULL;
- PyObject *format = NULL;
- PyObject *format_args = NULL;
ASN1_INTEGER *asn1_i = NULL;
BIGNUM *bignum = NULL;
@@ -117,12 +115,8 @@
* it. If bignum is still NULL after this call, then the return value
* is actually the result. I hope. -exarkun
*/
- small_serial = BN_hex2bn(&bignum, PyBytes_AsString(hex));
+ small_serial = BN_hex2bn(&bignum, _PyUnicode_AsString(hex));
- Py_DECREF(format_args);
- format_args = NULL;
- Py_DECREF(format);
- format = NULL;
Py_DECREF(hex);
hex = NULL;
@@ -151,12 +145,6 @@
return Py_None;
err:
- if (format_args) {
- Py_DECREF(format_args);
- }
- if (format) {
- Py_DECREF(format);
- }
if (hex) {
Py_DECREF(hex);
}
diff --git a/OpenSSL/crypto/x509name.c b/OpenSSL/crypto/x509name.c
index c288180..83f3c21 100644
--- a/OpenSSL/crypto/x509name.c
+++ b/OpenSSL/crypto/x509name.c
@@ -148,10 +148,11 @@
* wrong
*/
static PyObject *
-crypto_X509Name_getattr(crypto_X509NameObj *self, char *name)
+crypto_X509Name_getattro(crypto_X509NameObj *self, PyObject *nameobj)
{
int nid, len;
char *utf8string;
+ char *name = _PyUnicode_AsString(nameobj);
if ((nid = OBJ_txt2nid(name)) == NID_undef) {
/*
@@ -162,7 +163,7 @@
* See lp#314814.
*/
flush_error_queue();
- return crypto_X509Name_Type.tp_getattr((PyObject*)self, name);
+ return PyObject_GenericGetAttr((PyObject*)self, nameobj);
}
len = get_name_by_nid(self->x509_name, nid, &utf8string);
@@ -461,7 +462,7 @@
0,
(destructor)crypto_X509Name_dealloc,
NULL, /* print */
- (getattrfunc)crypto_X509Name_getattr,
+ NULL, /* getattr */
(setattrfunc)crypto_X509Name_setattr,
NULL, /* reserved */
(reprfunc)crypto_X509Name_repr,
@@ -471,7 +472,7 @@
NULL, /* hash */
NULL, /* call */
NULL, /* str */
- NULL, /* getattro */
+ (getattrofunc)crypto_X509Name_getattro, /* getattro */
NULL, /* setattro */
NULL, /* as_buffer */
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, /* tp_flags */
diff --git a/OpenSSL/ssl/context.c b/OpenSSL/ssl/context.c
index bfd8ffe..902d1e4 100644
--- a/OpenSSL/ssl/context.c
+++ b/OpenSSL/ssl/context.c
@@ -368,8 +368,8 @@
Py_DECREF(type);
return NULL;
}
- right_name = (PyString_CheckExact(name_attr) &&
- strcmp(name, PyString_AsString(name_attr)) == 0);
+ right_name = (PyUnicode_CheckExact(name_attr) &&
+ strcmp(name, _PyUnicode_AsString(name_attr)) == 0);
Py_DECREF(name_attr);
res = (PyTypeObject *)type;
if (!right_name || res->tp_basicsize != objsize) {