diff --git a/.gitignore b/.gitignore index c4008df..90cbaae 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/python-ldap-3.3.1.tar.gz +SOURCES/python-ldap-3.4.3.tar.gz diff --git a/.python-ldap.metadata b/.python-ldap.metadata index 53966a7..2ae46c2 100644 --- a/.python-ldap.metadata +++ b/.python-ldap.metadata @@ -1 +1 @@ -324f671225f10005b34e9cce2c0e307a96fa8ac3 SOURCES/python-ldap-3.3.1.tar.gz +f1e73d6dfcd97aabf379c8a77b697cbec70bec80 SOURCES/python-ldap-3.4.3.tar.gz diff --git a/SOURCES/0001-Disable-openldap-servers-tests.patch b/SOURCES/0001-Disable-openldap-servers-tests.patch index e72818a..50abd63 100644 --- a/SOURCES/0001-Disable-openldap-servers-tests.patch +++ b/SOURCES/0001-Disable-openldap-servers-tests.patch @@ -1,6 +1,6 @@ -From a2da2c274e1164b069cf3f306a5c2c664d2faf20 Mon Sep 17 00:00:00 2001 +From eba004c1992ca7e21abb8af55ecd913f5ae0bdc6 Mon Sep 17 00:00:00 2001 From: Simon Pichugin -Date: Fri, 29 Jul 2022 18:02:30 -0700 +Date: Wed, 4 Jan 2023 15:30:15 -0800 Subject: [PATCH] Disable openldap-servers tests --- @@ -16,10 +16,10 @@ Subject: [PATCH] Disable openldap-servers tests 9 files changed, 10 insertions(+) diff --git a/Tests/t_bind.py b/Tests/t_bind.py -index 3e2b67f..32689f7 100644 +index ba90c4c..653b871 100644 --- a/Tests/t_bind.py +++ b/Tests/t_bind.py -@@ -20,6 +20,7 @@ from ldap.ldapobject import LDAPObject +@@ -9,6 +9,7 @@ from ldap.ldapobject import LDAPObject from slapdtest import SlapdTestCase @@ -28,10 +28,10 @@ index 3e2b67f..32689f7 100644 unicode_val = "abc\U0001f498def" unicode_val_bytes = unicode_val.encode('utf-8') diff --git a/Tests/t_cext.py b/Tests/t_cext.py -index 1e27588..c8d2498 100644 +index 33fbf29..8035354 100644 --- a/Tests/t_cext.py +++ b/Tests/t_cext.py -@@ -21,6 +21,7 @@ import _ldap +@@ -17,6 +17,7 @@ import _ldap from slapdtest import SlapdTestCase, requires_tls, requires_init_fd @@ -40,10 +40,10 @@ index 1e27588..c8d2498 100644 """ These tests apply only to the _ldap module and therefore bypass the diff --git a/Tests/t_edit.py b/Tests/t_edit.py -index a5b3f65..fa47e32 100644 +index 5d8b3f0..757de9d 100644 --- a/Tests/t_edit.py +++ b/Tests/t_edit.py -@@ -20,6 +20,7 @@ from ldap.ldapobject import LDAPObject +@@ -9,6 +9,7 @@ from ldap.ldapobject import LDAPObject from slapdtest import SlapdTestCase @@ -52,7 +52,7 @@ index a5b3f65..fa47e32 100644 @classmethod diff --git a/Tests/t_ldap_options.py b/Tests/t_ldap_options.py -index 684fdf7..e014176 100644 +index e9bef59..2fea7a3 100644 --- a/Tests/t_ldap_options.py +++ b/Tests/t_ldap_options.py @@ -135,6 +135,7 @@ class TestGlobalOptions(BaseTestOptions, unittest.TestCase): @@ -64,10 +64,10 @@ index 684fdf7..e014176 100644 """Test setting/getting connection-specific options """ diff --git a/Tests/t_ldap_sasl.py b/Tests/t_ldap_sasl.py -index 9cf675a..b9f1366 100644 +index 40ab27e..ef6aec0 100644 --- a/Tests/t_ldap_sasl.py +++ b/Tests/t_ldap_sasl.py -@@ -38,6 +38,7 @@ cn: {certuser} +@@ -37,6 +37,7 @@ cn: {certuser} """ @@ -76,10 +76,10 @@ index 9cf675a..b9f1366 100644 class TestSasl(SlapdTestCase): ldap_object_class = SimpleLDAPObject diff --git a/Tests/t_ldap_schema_subentry.py b/Tests/t_ldap_schema_subentry.py -index e05c957..b12ad6e 100644 +index 60a584d..691fc5b 100644 --- a/Tests/t_ldap_schema_subentry.py +++ b/Tests/t_ldap_schema_subentry.py -@@ -237,6 +237,7 @@ class TestAttributes(unittest.TestCase): +@@ -236,6 +236,7 @@ class TestAttributes(unittest.TestCase): self.assertEqual(cls.x_origin, ('RFC 4519',)) @@ -88,31 +88,31 @@ index e05c957..b12ad6e 100644 ldap_object_class = SimpleLDAPObject diff --git a/Tests/t_ldap_syncrepl.py b/Tests/t_ldap_syncrepl.py -index b8a6ab6..663515e 100644 +index 6acc82c..7e54830 100644 --- a/Tests/t_ldap_syncrepl.py +++ b/Tests/t_ldap_syncrepl.py -@@ -257,6 +257,7 @@ class SyncreplClient(SimpleLDAPObject, SyncreplConsumer): +@@ -265,6 +265,7 @@ class SyncreplClient(SimpleLDAPObject, SyncreplConsumer): pass +@unittest.skip("openldap-server package is absent") - class BaseSyncreplTests(object): + class BaseSyncreplTests: """ This is a test of all the basic Syncrepl operations. It covers starting a -@@ -422,6 +423,7 @@ class BaseSyncreplTests(object): +@@ -430,6 +431,7 @@ class BaseSyncreplTests: # should pick it up during the persist phase. +@unittest.skip("openldap-server package is absent") class TestSyncrepl(BaseSyncreplTests, SlapdTestCase): def setUp(self): - super(TestSyncrepl, self).setUp() + super().setUp() diff --git a/Tests/t_ldapobject.py b/Tests/t_ldapobject.py -index 6f1f2d2..8af6ef4 100644 +index ccc7d21..dc7a4b8 100644 --- a/Tests/t_ldapobject.py +++ b/Tests/t_ldapobject.py -@@ -77,6 +77,7 @@ cn: Foo4 - """ +@@ -88,6 +88,7 @@ olcObjectClasses: ( 1.3.6.1.4.1.56207.1.2.2 NAME 'myClass' + X-ORIGIN 'foobar' )""" +@unittest.skip("openldap-server package is absent") @@ -132,5 +132,5 @@ index e1cc971..c9b693d 100644 def test_context_manager(self): with slapdtest.SlapdObject() as server: -- -2.35.3 +2.38.1 diff --git a/SOURCES/0001-Fix-SASL-get-set-options-on-big-endian-platforms.patch b/SOURCES/0001-Fix-SASL-get-set-options-on-big-endian-platforms.patch deleted file mode 100644 index a3f215f..0000000 --- a/SOURCES/0001-Fix-SASL-get-set-options-on-big-endian-platforms.patch +++ /dev/null @@ -1,169 +0,0 @@ -From 30fb0a8bda8fbedc22de87b21b8b1b64de310a6b Mon Sep 17 00:00:00 2001 -From: Christian Heimes -Date: Mon, 28 Jun 2021 11:03:02 +0200 -Subject: [PATCH] Fix SASL get/set options on big endian platforms - -The options OPT_X_SASL_SSF_MIN, OPT_X_SASL_SSF_MAX, and OPT_X_SASL_SSF -take *ber_len_t as input and output arguments. ber_len_t is defined as -unsigned long: - -``` - /* LBER lengths (32 bits or larger) */ - #define LBER_LEN_T long - - typedef unsigned LBER_LEN_T ber_len_t; -``` - -Wrong type handling is causing issues on big endian platforms. - -Signed-off-by: Christian Heimes ---- - Modules/options.c | 41 ++++++++++++++++++++++++++++++----------- - Tests/t_ldapobject.py | 23 ++++++++++++++++++++++- - 2 files changed, 52 insertions(+), 12 deletions(-) - -diff --git a/Modules/options.c b/Modules/options.c -index 549a672..67511e8 100644 ---- a/Modules/options.c -+++ b/Modules/options.c -@@ -43,6 +43,10 @@ LDAP_set_option(LDAPObject *self, int option, PyObject *value) - double doubleval; - char *strval; - struct timeval tv; -+#if HAVE_SASL -+ /* unsigned long */ -+ ber_len_t blen; -+#endif - void *ptr; - LDAP *ld; - LDAPControl **controls = NULL; -@@ -89,10 +93,6 @@ LDAP_set_option(LDAPObject *self, int option, PyObject *value) - case LDAP_OPT_X_TLS_PROTOCOL_MIN: - #endif - #endif --#ifdef HAVE_SASL -- case LDAP_OPT_X_SASL_SSF_MIN: -- case LDAP_OPT_X_SASL_SSF_MAX: --#endif - #ifdef LDAP_OPT_X_KEEPALIVE_IDLE - case LDAP_OPT_X_KEEPALIVE_IDLE: - #endif -@@ -108,6 +108,16 @@ LDAP_set_option(LDAPObject *self, int option, PyObject *value) - return 0; - ptr = &intval; - break; -+ -+#ifdef HAVE_SASL -+ case LDAP_OPT_X_SASL_SSF_MIN: -+ case LDAP_OPT_X_SASL_SSF_MAX: -+ if (!PyArg_Parse(value, "k:set_option", &blen)) -+ return 0; -+ ptr = &blen; -+ break; -+#endif -+ - case LDAP_OPT_HOST_NAME: - case LDAP_OPT_URI: - #ifdef LDAP_OPT_DEFBASE -@@ -135,6 +145,7 @@ LDAP_set_option(LDAPObject *self, int option, PyObject *value) - return 0; - ptr = strval; - break; -+ - case LDAP_OPT_TIMEOUT: - case LDAP_OPT_NETWORK_TIMEOUT: - /* Float valued timeval options */ -@@ -239,6 +250,10 @@ LDAP_get_option(LDAPObject *self, int option) - LDAPAPIInfo apiinfo; - LDAPControl **lcs; - char *strval; -+#if HAVE_SASL -+ /* unsigned long */ -+ ber_len_t blen; -+#endif - PyObject *extensions, *v; - Py_ssize_t i, num_extensions; - -@@ -277,9 +292,6 @@ LDAP_get_option(LDAPObject *self, int option) - - return v; - --#ifdef HAVE_SASL -- case LDAP_OPT_X_SASL_SSF: --#endif - case LDAP_OPT_REFERRALS: - case LDAP_OPT_RESTART: - case LDAP_OPT_DEREF: -@@ -299,10 +311,6 @@ LDAP_get_option(LDAPObject *self, int option) - case LDAP_OPT_X_TLS_PROTOCOL_MIN: - #endif - #endif --#ifdef HAVE_SASL -- case LDAP_OPT_X_SASL_SSF_MIN: -- case LDAP_OPT_X_SASL_SSF_MAX: --#endif - #ifdef LDAP_OPT_X_SASL_NOCANON - case LDAP_OPT_X_SASL_NOCANON: - #endif -@@ -324,6 +332,17 @@ LDAP_get_option(LDAPObject *self, int option) - return option_error(res, "ldap_get_option"); - return PyInt_FromLong(intval); - -+#ifdef HAVE_SASL -+ case LDAP_OPT_X_SASL_SSF: -+ case LDAP_OPT_X_SASL_SSF_MIN: -+ case LDAP_OPT_X_SASL_SSF_MAX: -+#endif -+ /* ber_len_t options (unsigned long)*/ -+ res = LDAP_int_get_option(self, option, &blen); -+ if (res != LDAP_OPT_SUCCESS) -+ return option_error(res, "ldap_get_option"); -+ return PyLong_FromUnsignedLong(blen); -+ - case LDAP_OPT_HOST_NAME: - case LDAP_OPT_URI: - #ifdef LDAP_OPT_DEFBASE -diff --git a/Tests/t_ldapobject.py b/Tests/t_ldapobject.py -index e54bbfd..0a089c9 100644 ---- a/Tests/t_ldapobject.py -+++ b/Tests/t_ldapobject.py -@@ -334,7 +334,7 @@ class Test00_SimpleLDAPObject(SlapdTestCase): - - @requires_sasl() - @requires_ldapi() -- def test006_sasl_extenal_bind_s(self): -+ def test006_sasl_external_bind_s(self): - l = self.ldap_object_class(self.server.ldapi_uri) - l.sasl_external_bind_s() - self.assertEqual(l.whoami_s(), 'dn:'+self.server.root_dn.lower()) -@@ -343,6 +343,27 @@ class Test00_SimpleLDAPObject(SlapdTestCase): - l.sasl_external_bind_s(authz_id=authz_id) - self.assertEqual(l.whoami_s(), authz_id.lower()) - -+ @requires_sasl() -+ @requires_ldapi() -+ def test006_sasl_options(self): -+ l = self.ldap_object_class(self.server.ldapi_uri) -+ -+ minssf = l.get_option(ldap.OPT_X_SASL_SSF_MIN) -+ self.assertGreaterEqual(minssf, 0) -+ self.assertLessEqual(minssf, 256) -+ maxssf = l.get_option(ldap.OPT_X_SASL_SSF_MAX) -+ self.assertGreaterEqual(maxssf, 0) -+ # libldap sets SSF_MAX to INT_MAX -+ self.assertLessEqual(maxssf, 2**31 - 1) -+ -+ l.set_option(ldap.OPT_X_SASL_SSF_MIN, 56) -+ l.set_option(ldap.OPT_X_SASL_SSF_MAX, 256) -+ self.assertEqual(l.get_option(ldap.OPT_X_SASL_SSF_MIN), 56) -+ self.assertEqual(l.get_option(ldap.OPT_X_SASL_SSF_MAX), 256) -+ -+ l.sasl_external_bind_s() -+ self.assertEqual(l.whoami_s(), 'dn:' + self.server.root_dn.lower()) -+ - def test007_timeout(self): - l = self.ldap_object_class(self.server.ldap_uri) - m = l.search_ext(self.server.suffix, ldap.SCOPE_SUBTREE, '(objectClass=*)') --- -2.31.1 - diff --git a/SPECS/python-ldap.spec b/SPECS/python-ldap.spec index 854b79e..456f8a5 100644 --- a/SPECS/python-ldap.spec +++ b/SPECS/python-ldap.spec @@ -4,15 +4,14 @@ %global openldap_version 2.4.45-4 Name: python-ldap -Version: 3.3.1 -Release: 9%{?dist} +Version: 3.4.3 +Release: 2%{?dist} License: Python Summary: An object-oriented API to access LDAP directory servers URL: https://python-ldap.org/ Source0: https://files.pythonhosted.org/packages/source/p/%{name}/%{name}-%{version}%{?prerelease}.tar.gz -Patch0001: 0001-Fix-SASL-get-set-options-on-big-endian-platforms.patch -Patch0002: 0001-Disable-openldap-servers-tests.patch +Patch0001: 0001-Disable-openldap-servers-tests.patch ### Build Dependencies ### BuildRequires: gcc @@ -79,6 +78,14 @@ PYTHONPATH=%{buildroot}%{python3_sitearch} %{__python3} -m unittest discover -v %{python3_sitearch}/python_ldap-%{version}%{?prerelease}-py%{python3_version}.egg-info/ %changelog +* Thu Jan 12 2023 Simon Pichugin - 3.4.3-2 +- Fix changelog date typo + Related: rhbz#2158289 + +* Wed Jan 11 2023 Simon Pichugin - 3.4.3-1 +- New upstream release 3.4.3 + Resolves: rhbz#2158289 + * Fri Jul 29 2022 Simon Pichugin - 3.3.1-9 - Disable openldap-servers tests as the package is fully deprecated Resolves: rhbz#2102940