1
0
mirror of https://github.com/samba-team/samba.git synced 2025-02-28 01:58:17 +03:00

pyldb: py_ldb_dn_richcmp() uses PyErr_LDB_DN_OR_RAISE

The `if (!pyldb_Dn_Check(pydn2))` might seem redundant, but we
need it to return Py_NotImplemented before the _OR_RAISE macro
raises TypeError.

Signed-off-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
This commit is contained in:
Douglas Bagnall 2024-03-14 17:19:21 +13:00 committed by Andrew Bartlett
parent 982a87cedf
commit 8830149ef9

View File

@ -589,14 +589,19 @@ static PyObject *py_ldb_dn_check_special(PyLdbDnObject *self, PyObject *args)
return PyBool_FromLong(ldb_dn_check_special(self->dn, name));
}
static PyObject *py_ldb_dn_richcmp(PyObject *dn1, PyObject *dn2, int op)
static PyObject *py_ldb_dn_richcmp(PyObject *pydn1, PyObject *pydn2, int op)
{
int ret;
if (!pyldb_Dn_Check(dn2)) {
struct ldb_dn *dn1 = NULL;
struct ldb_dn *dn2 = NULL;
if (!pyldb_Dn_Check(pydn2)) {
Py_INCREF(Py_NotImplemented);
return Py_NotImplemented;
}
ret = ldb_dn_compare(pyldb_Dn_AS_DN(dn1), pyldb_Dn_AS_DN(dn2));
PyErr_LDB_DN_OR_RAISE(pydn1, dn1);
PyErr_LDB_DN_OR_RAISE(pydn2, dn2);
ret = ldb_dn_compare(dn1, dn2);
return richcmp(ret, op);
}