[Pkg-freeipa-devel] [Git][freeipa-team/bind-dyndb-ldap][upstream] 5 commits: Fix FTBFS when building with OpenLDAP 2.5

Timo Aaltonen (@tjaalton) gitlab at salsa.debian.org
Mon Aug 16 07:39:34 BST 2021



Timo Aaltonen pushed to branch upstream at FreeIPA packaging / bind-dyndb-ldap


Commits:
859f3399 by Sergio Durigan Junior at 2021-05-11T17:33:03-04:00
Fix FTBFS when building with OpenLDAP 2.5

The new version of OpenLDAP (2.5) exports the 'ldap_connect' symbol,
which conflicts with the function with the same name that is being
defined and used in src/ldap_helper.c:

libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I../../src -I.. -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -Wextra -Werror -std=gnu99 -O2 -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -flto=auto -ffat-lto-objects -fstack-protector-strong -Wformat -Werror=format-security -fvisibility=hidden -fno-delete-null-pointer-checks -c ../../src/ldap_entry.c  -fPIC -DPIC -o .libs/ldap_la-ldap_entry.o
../../src/ldap_helper.c:343:21: error: conflicting types for ‘ldap_connect’
  343 | static isc_result_t ldap_connect(ldap_instance_t *ldap_inst,
      |                     ^~~~~~~~~~~~
In file included from ../../src/ldap_helper.c:52:
/usr/include/ldap.h:1554:1: note: previous declaration of ‘ldap_connect’ was here
 1554 | ldap_connect( LDAP *ld );
      | ^~~~~~~~~~~~

This commit fixes this FTBFS by renaming the 'ldap_connect' function
to 'bdl_ldap_connect'.  While at it, it also renames the
'ldap_reconnect' function to 'bdl_ldap_reconnect'.

Signed-off-by: Sergio Durigan Junior <sergiodj at sergiodj.net>

- - - - -
afdabc71 by Alexander Bokovoy at 2021-05-14T11:38:47+03:00
Fix zone and forwarder registers to include dyndb-config.h

They kept includes for BIND's config.h which is not needed.

Signed-off-by: Alexander Bokovoy <abokovoy at redhat.com>

- - - - -
55ea24d6 by Petr Menšík at 2021-05-21T11:40:57+02:00
Remove ISCAPI_TASK_VALID checks

Recent BIND 9.16.16 has hidden task structure and public checks. It
still checks task validity in each isc_task_* function, which we use for
working with tasks. No lesser checking would be done.

isc_mem_t still has them, but they were removed in 9.17. Remove those
checks as well, work with them just structure undefined pointers. Rely
on bind9 library to check them.

- - - - -
956f1f76 by Petr Menšík at 2021-05-21T11:40:59+02:00
Reduce passing tasks in zones activation

They are never used from passed parameters, so do not forward them into
multiple functions. Ignore them on task endpoint where they always have
to be.

- - - - -
63df41c8 by Alexander Bokovoy at 2021-05-25T17:18:53+03:00
Release 11.9: support bind 9.16.16+

Signed-off-by: Alexander Bokovoy <abokovoy at redhat.com>

- - - - -


8 changed files:

- configure.ac
- contrib/bind-dyndb-ldap.spec
- src/fwd_register.c
- src/ldap_driver.c
- src/ldap_helper.c
- src/ldap_helper.h
- src/syncrepl.c
- src/zone_register.c


Changes:

=====================================
configure.ac
=====================================
@@ -1,5 +1,5 @@
 AC_PREREQ([2.59])
-AC_INIT([bind-dyndb-ldap], [11.8], [freeipa-devel at redhat.com])
+AC_INIT([bind-dyndb-ldap], [11.9], [freeipa-devel at redhat.com])
 
 AM_INIT_AUTOMAKE([-Wall foreign dist-bzip2])
 


=====================================
contrib/bind-dyndb-ldap.spec
=====================================
@@ -3,7 +3,7 @@
 %define bind_version 32:9.11.17-1
 
 Name:           bind-dyndb-ldap
-Version:        11.8
+Version:        11.9
 Release:        0%{?dist}
 Summary:        LDAP back-end plug-in for BIND
 
@@ -116,6 +116,10 @@ rm -rf %{buildroot}
 
 
 %changelog
+* Tue May 25 2021 Alexander Bokovoy <abokovoy at redhat.com>
+- Release 11.9
+- Support 9.16.16+
+
 * Tue May 04 2021 Alexander Bokovoy <abokovoy at redhat.com>
 - Release 11.8
 - Support 9.16.13+


=====================================
src/fwd_register.c
=====================================
@@ -6,7 +6,7 @@
 #include <isc/util.h>
 #include <dns/name.h>
 
-#include "config.h"
+#include "dyndb-config.h"
 #include "rbt_helper.h"
 #include "fwd_register.h"
 #include "util.h"


=====================================
src/ldap_driver.c
=====================================
@@ -1026,7 +1026,7 @@ ldapdb_associate(isc_mem_t *mctx, node_name_t *name, dns_dbtype_t type,
 	ldap_instance_t *ldap_inst = driverarg;
 	zone_register_t *zr = NULL;
 
-	REQUIRE(ISCAPI_MCTX_VALID(mctx));
+	UNUSED(mctx);
 	REQUIRE(type == LDAP_DB_TYPE);
 	REQUIRE(rdclass == LDAP_DB_RDATACLASS);
 	REQUIRE(argc == 0);


=====================================
src/ldap_helper.c
=====================================
@@ -340,9 +340,9 @@ ldap_parse_rrentry(isc_mem_t *mctx, ldap_entry_t *entry, dns_name_t *origin,
 		   const settings_set_t * const settings,
 		   ldapdb_rdatalist_t *rdatalist) ATTR_NONNULLS ATTR_CHECKRESULT;
 
-static isc_result_t ldap_connect(ldap_instance_t *ldap_inst,
+static isc_result_t bdl_ldap_connect(ldap_instance_t *ldap_inst,
 		ldap_connection_t *ldap_conn, bool force) ATTR_NONNULLS ATTR_CHECKRESULT;
-static isc_result_t ldap_reconnect(ldap_instance_t *ldap_inst,
+static isc_result_t bdl_ldap_reconnect(ldap_instance_t *ldap_inst,
 		ldap_connection_t *ldap_conn, bool force) ATTR_NONNULLS ATTR_CHECKRESULT;
 static isc_result_t handle_connection_error(ldap_instance_t *ldap_inst,
 		ldap_connection_t *ldap_conn, bool force) ATTR_NONNULLS;
@@ -1135,7 +1135,7 @@ cleanup:
  * Add zone to the view defined in inst->view.
  */
 static isc_result_t ATTR_NONNULLS ATTR_CHECKRESULT
-publish_zone(isc_task_t *task, ldap_instance_t *inst, dns_zone_t *zone)
+publish_zone(ldap_instance_t *inst, dns_zone_t *zone)
 {
 	isc_result_t result;
 	bool freeze = false;
@@ -1143,7 +1143,6 @@ publish_zone(isc_task_t *task, ldap_instance_t *inst, dns_zone_t *zone)
 	dns_view_t *view_in_zone = NULL;
 	isc_result_t lock_state = ISC_R_IGNORE;
 
-	REQUIRE(ISCAPI_TASK_VALID(task));
 	REQUIRE(inst != NULL);
 	REQUIRE(zone != NULL);
 
@@ -1199,7 +1198,7 @@ cleanup:
  * Add zone to view and call dns_zone_load().
  */
 static isc_result_t ATTR_NONNULLS ATTR_CHECKRESULT
-activate_zone(isc_task_t *task, ldap_instance_t *inst, dns_name_t *name) {
+activate_zone(ldap_instance_t *inst, dns_name_t *name) {
 	isc_result_t result;
 	dns_zone_t *raw = NULL;
 	dns_zone_t *secure = NULL;
@@ -1218,7 +1217,7 @@ activate_zone(isc_task_t *task, ldap_instance_t *inst, dns_name_t *name) {
 	 * otherwise it will race with zone->view != NULL check
 	 * in zone_maintenance() in zone.c.
 	 */
-	result = publish_zone(task, inst, toview);
+	result = publish_zone(inst, toview);
 	if (result != ISC_R_SUCCESS) {
 		dns_zone_log(toview, ISC_LOG_ERROR,
 			     "cannot add zone to view: %s",
@@ -1247,7 +1246,7 @@ cleanup:
  * and load zones.
  */
 isc_result_t
-activate_zones(isc_task_t *task, ldap_instance_t *inst) {
+activate_zones(ldap_instance_t *inst) {
 	isc_result_t result;
 	rbt_iterator_t *iter = NULL;
 	DECLARE_BUFFERED_NAME(name);
@@ -1270,7 +1269,7 @@ activate_zones(isc_task_t *task, ldap_instance_t *inst) {
 		++total_cnt;
 		if (active == true) {
 			++active_cnt;
-			result = activate_zone(task, inst, &name);
+			result = activate_zone(inst, &name);
 			if (result == ISC_R_SUCCESS)
 				++published_cnt;
 			result = fwd_configure_zone(settings, inst, &name);
@@ -2243,7 +2242,7 @@ ldap_parse_master_zoneentry(ldap_entry_t * const entry, dns_db_t * const olddb,
 	toview = (want_secure == true) ? secure : raw;
 	if (isactive == true) {
 		if (new_zone == true || activity_changed == true)
-			CHECK(publish_zone(task, inst, toview));
+			CHECK(publish_zone(inst, toview));
 		CHECK(load_zone(toview, false));
 		CHECK(fwd_configure_zone(zone_settings, inst, &entry->fqdn));
 	} else if (activity_changed == true) { /* Zone was deactivated */
@@ -2797,8 +2796,8 @@ cleanup:
  * credentials and settings are available from the ldap_inst.
  */
 static isc_result_t ATTR_NONNULLS ATTR_CHECKRESULT
-ldap_connect(ldap_instance_t *ldap_inst, ldap_connection_t *ldap_conn,
-	     bool force)
+bdl_ldap_connect(ldap_instance_t *ldap_inst, ldap_connection_t *ldap_conn,
+		 bool force)
 {
 	LDAP *ld = NULL;
 	int ret;
@@ -2842,9 +2841,9 @@ ldap_connect(ldap_instance_t *ldap_inst, ldap_connection_t *ldap_conn,
 	if (ldap_conn->handle != NULL)
 		ldap_unbind_ext_s(ldap_conn->handle, NULL, NULL);
 	ldap_conn->handle = ld;
-	ld = NULL; /* prevent double-unbind from ldap_reconnect() and cleanup: */
+	ld = NULL; /* prevent double-unbind from bdl_ldap_reconnect() and cleanup: */
 
-	CHECK(ldap_reconnect(ldap_inst, ldap_conn, force));
+	CHECK(bdl_ldap_reconnect(ldap_inst, ldap_conn, force));
 	return result;
 
 cleanup:
@@ -2861,8 +2860,8 @@ cleanup:
 }
 
 static isc_result_t ATTR_NONNULLS ATTR_CHECKRESULT
-ldap_reconnect(ldap_instance_t *ldap_inst, ldap_connection_t *ldap_conn,
-	       bool force)
+bdl_ldap_reconnect(ldap_instance_t *ldap_inst, ldap_connection_t *ldap_conn,
+		   bool force)
 {
 	isc_result_t result;
 	int ret = 0;
@@ -3036,7 +3035,7 @@ handle_connection_error(ldap_instance_t *ldap_inst, ldap_connection_t *ldap_conn
 reconnect:
 		if (ldap_conn->handle == NULL && force == false)
 			log_error("connection to the LDAP server was lost");
-		result = ldap_connect(ldap_inst, ldap_conn, force);
+		result = bdl_ldap_connect(ldap_inst, ldap_conn, force);
 		if (result == ISC_R_SUCCESS)
 			log_info("successfully reconnected to LDAP server");
 		break;
@@ -3581,7 +3580,7 @@ remove_entry_from_ldap(dns_name_t *owner, dns_name_t *zone, ldap_instance_t *lda
 		 * successful
 		 * TODO: handle this case inside ldap_pool_getconnection()?
 		 */
-		CHECK(ldap_connect(ldap_inst, ldap_conn, false));
+		CHECK(bdl_ldap_connect(ldap_inst, ldap_conn, false));
 	}
 	ret = ldap_delete_ext_s(ldap_conn->handle, str_buf(dn), NULL, NULL);
 	result = (ret == LDAP_SUCCESS) ? ISC_R_SUCCESS : ISC_R_FAILURE;
@@ -3717,7 +3716,7 @@ ldap_pool_connect(ldap_pool_t *pool, ldap_instance_t *ldap_inst)
 	for (i = 0; i < pool->connections; i++) {
 		ldap_conn = NULL;
 		CHECK(new_ldap_connection(pool, &ldap_conn));
-		result = ldap_connect(ldap_inst, ldap_conn, false);
+		result = bdl_ldap_connect(ldap_inst, ldap_conn, false);
 		/* Continue even if LDAP server is down */
 		if (result != ISC_R_NOTCONNECTED && result != ISC_R_TIMEDOUT &&
 		    result != ISC_R_SUCCESS) {
@@ -4769,7 +4768,7 @@ ldap_syncrepl_watcher(isc_threadarg_t arg)
 			goto retry;
 		}
 
-		result = ldap_connect(inst, conn, true);
+		result = bdl_ldap_connect(inst, conn, true);
 		if (result != ISC_R_SUCCESS) {
 			log_error_r("reconnection to LDAP failed");
 			goto retry;


=====================================
src/ldap_helper.h
=====================================
@@ -84,7 +84,7 @@ const char * ldap_instance_getdbname(ldap_instance_t *ldap_inst) ATTR_NONNULLS;
 
 zone_register_t * ldap_instance_getzr(ldap_instance_t *ldap_inst) ATTR_NONNULLS;
 
-isc_result_t activate_zones(isc_task_t *task, ldap_instance_t *inst) ATTR_NONNULLS;
+isc_result_t activate_zones(ldap_instance_t *inst) ATTR_NONNULLS;
 
 isc_task_t * ldap_instance_gettask(ldap_instance_t *ldap_inst);
 


=====================================
src/syncrepl.c
=====================================
@@ -131,8 +131,8 @@ finish(isc_task_t *task, isc_event_t *event) {
 	sync_barrierev_t *bev = NULL;
 	sync_state_t new_state;
 
-	REQUIRE(ISCAPI_TASK_VALID(task));
 	REQUIRE(event != NULL);
+	UNUSED(task);
 
 	bev = (sync_barrierev_t *)event;
 	log_debug(1, "sync_barrier_wait(): finish reached");
@@ -156,7 +156,7 @@ finish(isc_task_t *task, isc_event_t *event) {
 	BROADCAST(&bev->sctx->cond);
 	UNLOCK(&bev->sctx->mutex);
 	if (new_state == sync_finished)
-		activate_zones(task, bev->inst);
+		activate_zones(bev->inst);
 
 	if (result != ISC_R_SUCCESS)
 		log_error_r("syncrepl finish() failed");
@@ -206,8 +206,8 @@ barrier_decrement(isc_task_t *task, isc_event_t *event) {
 	sync_barrierev_t *bev = NULL;
 	uint32_t cnt;
 
-	REQUIRE(ISCAPI_TASK_VALID(task));
 	REQUIRE(event != NULL);
+	UNUSED(task);
 
 	bev = (sync_barrierev_t *)event;
 #if LIBDNS_VERSION_MAJOR < 1600
@@ -458,7 +458,6 @@ sync_task_add(sync_ctx_t *sctx, isc_task_t *task) {
 	uint32_t cnt;
 
 	REQUIRE(sctx != NULL);
-	REQUIRE(ISCAPI_TASK_VALID(task));
 
 	newel = isc_mem_get(sctx->mctx, sizeof(*(newel)));
 	ZERO_PTR(newel);


=====================================
src/zone_register.c
=====================================
@@ -12,7 +12,7 @@
 #include <dns/result.h>
 #include <dns/zone.h>
 
-#include "config.h"
+#include "dyndb-config.h"
 #include "fs.h"
 #include "ldap_driver.h"
 #include "log.h"



View it on GitLab: https://salsa.debian.org/freeipa-team/bind-dyndb-ldap/-/compare/194b6e9f26a87069d1b505491e675136bd0fdb03...63df41c8bc73154000c960fe4e402a5775c2fe45

-- 
View it on GitLab: https://salsa.debian.org/freeipa-team/bind-dyndb-ldap/-/compare/194b6e9f26a87069d1b505491e675136bd0fdb03...63df41c8bc73154000c960fe4e402a5775c2fe45
You're receiving this email because of your account on salsa.debian.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/pkg-freeipa-devel/attachments/20210816/52dd894a/attachment-0001.htm>


More information about the Pkg-freeipa-devel mailing list