summaryrefslogtreecommitdiff
path: root/OpenSSL/crypto
diff options
context:
space:
mode:
authorJean-Paul Calderone <exarkun@divmod.com>2011-04-22 18:38:16 -0400
committerJean-Paul Calderone <exarkun@divmod.com>2011-04-22 18:38:16 -0400
commit5163f57e6cb413787b4eda62eb338e3fe471d11d (patch)
treea3d3148d4ed62b2a878aceb93e01097c8c02336e /OpenSSL/crypto
parent9ce9afb4ca1a0f4a763e2a8f677e469e2815f320 (diff)
downloadpyopenssl-5163f57e6cb413787b4eda62eb338e3fe471d11d.tar.gz
Compatibility with CPython 2.5 though CPython 3.2
Diffstat (limited to 'OpenSSL/crypto')
-rw-r--r--OpenSSL/crypto/x509name.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/OpenSSL/crypto/x509name.c b/OpenSSL/crypto/x509name.c
index 4ff2c34..a62c957 100644
--- a/OpenSSL/crypto/x509name.c
+++ b/OpenSSL/crypto/x509name.c
@@ -202,13 +202,19 @@ crypto_X509Name_setattro(crypto_X509NameObj *self, PyObject *nameobj, PyObject *
char *buffer;
char *name;
- if (!PyString_CheckExact(nameobj) || !(name = PyString_AsString(nameobj))) {
+ if (!PyBytes_CheckExact(nameobj) && !PyUnicode_CheckExact(nameobj)) {
PyErr_Format(PyExc_TypeError,
"attribute name must be string, not '%.200s'",
Py_TYPE(nameobj)->tp_name);
return -1;
}
+#ifdef PY3
+ name = PyBytes_AsString(PyUnicode_AsASCIIString(nameobj));
+#else
+ name = PyBytes_AsString(nameobj);
+#endif
+
if ((nid = OBJ_txt2nid(name)) == NID_undef)
{
/* Just like the case in the getattr function */