From 76d0f9091c43676957ae8f62f1c84fb3c25ce563 Mon Sep 17 00:00:00 2001 From: Lukas Slebodnik Date: Sep 13 2017 07:42:56 +0000 Subject: pysss_nss_idmap: return same type as it is in module constants The python module pysss_nss_idmap contains few module constants which should be used (based on python documentation) for checking type of results. e.g. getsidbyid(...) getsidbyid(id or list/tuple of id) -> dict(id => dict(results)) Returns a dictionary with a dictionary of results for each given POSIX ID. The result dictionary contains the SID and the type of the object which can be accessed with the key constants SID_KEY and TYPE_KEY, respectively. However, type of module constant and type of returned key had different type with python3 due to different handling of strings. This patch unifies it to string. The same as it is in python2. Resolves: https://pagure.io/SSSD/sssd/issue/3491 Reviewed-by: Sumit Bose (cherry picked from commit cc4d6435ef49738a02ddfc6072f1197d7f8f7319) --- diff --git a/src/python/pysss_nss_idmap.c b/src/python/pysss_nss_idmap.c index a88ef77..c9e90ee 100644 --- a/src/python/pysss_nss_idmap.c +++ b/src/python/pysss_nss_idmap.c @@ -54,7 +54,7 @@ static int add_dict(PyObject *py_result, PyObject *key, PyObject *res_type, return ret; } - ret = PyDict_SetItem(py_dict, PyBytes_FromString(SSS_TYPE_KEY), id_type); + ret = PyDict_SetItem(py_dict, PyUnicode_FromString(SSS_TYPE_KEY), id_type); if (ret != 0) { Py_XDECREF(py_dict); return ret; @@ -95,7 +95,7 @@ static int do_getsidbyname(PyObject *py_result, PyObject *py_name) ret = sss_nss_getsidbyname(name, &sid, &id_type); if (ret == 0) { - ret = add_dict(py_result, py_name, PyBytes_FromString(SSS_SID_KEY), + ret = add_dict(py_result, py_name, PyUnicode_FromString(SSS_SID_KEY), PyUnicode_FromString(sid), PYNUMBER_FROMLONG(id_type)); } free(sid); @@ -117,7 +117,7 @@ static int do_getnamebysid(PyObject *py_result, PyObject *py_sid) ret = sss_nss_getnamebysid(sid, &name, &id_type); if (ret == 0) { - ret = add_dict(py_result, py_sid, PyBytes_FromString(SSS_NAME_KEY), + ret = add_dict(py_result, py_sid, PyUnicode_FromString(SSS_NAME_KEY), PyUnicode_FromString(name), PYNUMBER_FROMLONG(id_type)); } free(name); @@ -159,7 +159,7 @@ static int do_getsidbyid(PyObject *py_result, PyObject *py_id) ret = sss_nss_getsidbyid((uint32_t) id, &sid, &id_type); if (ret == 0) { - ret = add_dict(py_result, py_id, PyBytes_FromString(SSS_SID_KEY), + ret = add_dict(py_result, py_id, PyUnicode_FromString(SSS_SID_KEY), PyUnicode_FromString(sid), PYNUMBER_FROMLONG(id_type)); } free(sid); @@ -181,7 +181,7 @@ static int do_getnamebycert(PyObject *py_result, PyObject *py_cert) ret = sss_nss_getnamebycert(cert, &name, &id_type); if (ret == 0) { - ret = add_dict(py_result, py_cert, PyBytes_FromString(SSS_NAME_KEY), + ret = add_dict(py_result, py_cert, PyUnicode_FromString(SSS_NAME_KEY), PyUnicode_FromString(name), PYNUMBER_FROMLONG(id_type)); } free(name); @@ -203,7 +203,7 @@ static int do_getidbysid(PyObject *py_result, PyObject *py_sid) ret = sss_nss_getidbysid(sid, &id, &id_type); if (ret == 0) { - ret = add_dict(py_result, py_sid, PyBytes_FromString(SSS_ID_KEY), + ret = add_dict(py_result, py_sid, PyUnicode_FromString(SSS_ID_KEY), PYNUMBER_FROMLONG(id), PYNUMBER_FROMLONG(id_type)); }