diff --git a/bind-dyndb-ldap-11.10-bind-9.18.9.patch b/bind-dyndb-ldap-11.10-bind-9.18.9.patch new file mode 100644 index 0000000..23cc1c4 --- /dev/null +++ b/bind-dyndb-ldap-11.10-bind-9.18.9.patch @@ -0,0 +1,206 @@ +From 818b95a37b9712c46eb64e3cfecfa1e8a2d0cade Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20Men=C5=A1=C3=ADk?= +Date: Mon, 21 Nov 2022 17:03:59 +0100 +Subject: [PATCH] Support for BIND 9.18.9+ + +Bind headers changed isc_error_fatal function. Also UNEXPECTED_ERROR +from util.h has changed function signature. Use a conditional +to provide compatibility for both new and previous versions. +--- + src/ldap_helper.c | 14 +++++--------- + src/log.h | 5 +++++ + src/settings.c | 16 ++++++++-------- + src/syncrepl.c | 7 +++---- + src/util.h | 10 +++++++++- + 5 files changed, 30 insertions(+), 22 deletions(-) + +diff --git a/src/ldap_helper.c b/src/ldap_helper.c +index 7ea3df9..593cb99 100644 +--- a/src/ldap_helper.c ++++ b/src/ldap_helper.c +@@ -1317,8 +1317,7 @@ configure_zone_acl(isc_mem_t *mctx, dns_zone_t *zone, + dns_zone_logc(zone, DNS_LOGCATEGORY_SECURITY, ISC_LOG_CRITICAL, + "cannot configure restrictive %s policy: %s", + type_txt, isc_result_totext(result2)); +- FATAL_ERROR(__FILE__, __LINE__, +- "insecure state detected"); ++ fatal_error("insecure state detected"); + } + } + acl_setter(zone, acl); +@@ -1365,8 +1364,7 @@ configure_zone_ssutable(dns_zone_t *zone, const char *update_str) + dns_zone_logc(zone, DNS_LOGCATEGORY_SECURITY, ISC_LOG_CRITICAL, + "cannot disable all updates: %s", + isc_result_totext(result2)); +- FATAL_ERROR(__FILE__, __LINE__, +- "insecure state detected"); ++ fatal_error("insecure state detected"); + } + } + +@@ -2951,9 +2949,8 @@ force_reconnect: + ldap_inst); + break; + case AUTH_INVALID: +- UNEXPECTED_ERROR(__FILE__, __LINE__, +- "invalid auth_method_enum value %u", +- auth_method_enum); ++ DYNDB_UNEXPECTED_ERROR("invalid auth_method_enum value %u", ++ auth_method_enum); + break; + + default: +@@ -3782,8 +3779,7 @@ update_zone(isc_task_t *task, isc_event_t *event) + else if (entry->class & LDAP_ENTRYCLASS_FORWARD) + CHECK(ldap_parse_fwd_zoneentry(entry, inst)); + else +- FATAL_ERROR(__FILE__, __LINE__, +- "update_zone: unexpected entry class"); ++ fatal_error("update_zone: unexpected entry class"); + } + + cleanup: +diff --git a/src/log.h b/src/log.h +index da71f8b..4207f08 100644 +--- a/src/log.h ++++ b/src/log.h +@@ -17,8 +17,13 @@ + #define GET_LOG_LEVEL(level) (level) + #endif + ++#if LIBDNS_VERSION_MAJOR < 1809 + #define fatal_error(...) \ + isc_error_fatal(__FILE__, __LINE__, __VA_ARGS__) ++#else ++#define fatal_error(...) \ ++ isc_error_fatal(__FILE__, __LINE__, __func__, __VA_ARGS__) ++#endif + + #define log_bug(fmt, ...) \ + log_error("bug in %s(): " fmt, __func__,##__VA_ARGS__) +diff --git a/src/settings.c b/src/settings.c +index def60d7..0ae08a4 100644 +--- a/src/settings.c ++++ b/src/settings.c +@@ -17,6 +17,7 @@ + #include + #include + ++#include "dyndb-config.h" + #include "log.h" + #include "settings.h" + #include "str.h" +@@ -24,7 +25,6 @@ + #include "types.h" + #include "ldap_helper.h" + #include "zone_register.h" +-#include "dyndb-config.h" + + #if LIBDNS_VERSION_MAJOR < 1600 + #define cfg_parse_buffer cfg_parse_buffer4 +@@ -178,7 +178,7 @@ setting_get(const char *const name, const setting_type_t type, + *(bool *)target = setting->value.value_boolean; + break; + default: +- UNEXPECTED_ERROR(__FILE__, __LINE__, ++ DYNDB_UNEXPECTED_ERROR( + "invalid setting_type_t value %u", type); + break; + } +@@ -278,8 +278,8 @@ set_value(isc_mem_t *mctx, const settings_set_t *set, setting_t *setting, + CLEANUP_WITH(ISC_R_IGNORE); + break; + default: +- UNEXPECTED_ERROR(__FILE__, __LINE__, +- "invalid setting_type_t value %u", setting->type); ++ DYNDB_UNEXPECTED_ERROR("invalid setting_type_t value %u", ++ setting->type); + break; + } + +@@ -304,8 +304,8 @@ set_value(isc_mem_t *mctx, const settings_set_t *set, setting_t *setting, + setting->value.value_boolean = numeric_value; + break; + default: +- UNEXPECTED_ERROR(__FILE__, __LINE__, +- "invalid setting_type_t value %u", setting->type); ++ DYNDB_UNEXPECTED_ERROR("invalid setting_type_t value %u", ++ setting->type); + break; + } + setting->filled = 1; +@@ -389,8 +389,8 @@ setting_unset(const char *const name, const settings_set_t *set) + case ST_BOOLEAN: + break; + default: +- UNEXPECTED_ERROR(__FILE__, __LINE__, +- "invalid setting_type_t value %u", setting->type); ++ DYNDB_UNEXPECTED_ERROR("invalid setting_type_t value %u", ++ setting->type); + break; + } + setting->filled = 0; +diff --git a/src/syncrepl.c b/src/syncrepl.c +index 0bee09a..9be17bf 100644 +--- a/src/syncrepl.c ++++ b/src/syncrepl.c +@@ -13,6 +13,7 @@ + + #include "dyndb-config.h" + #include "ldap_helper.h" ++#include "log.h" + #include "util.h" + #include "semaphore.h" + #include "syncrepl.h" +@@ -148,8 +149,7 @@ finish(isc_task_t *task, isc_event_t *event) { + case sync_datainit: + case sync_finished: + default: +- FATAL_ERROR(__FILE__, __LINE__, +- "sync_barrier_wait(): invalid state " ++ fatal_error("sync_barrier_wait(): invalid state " + "%u", bev->sctx->state); + } + sync_state_change(bev->sctx, new_state, false); +@@ -518,8 +518,7 @@ sync_barrier_wait(sync_ctx_t *sctx, ldap_instance_t *inst) { + case sync_databarrier: + case sync_finished: + default: +- FATAL_ERROR(__FILE__, __LINE__, +- "sync_barrier_wait(): invalid state " ++ fatal_error("sync_barrier_wait(): invalid state " + "%u", sctx->state); + } + +diff --git a/src/util.h b/src/util.h +index 5088ff3..4fff21a 100644 +--- a/src/util.h ++++ b/src/util.h +@@ -14,8 +14,8 @@ + #include + #include + +-#include "log.h" + #include "dyndb-config.h" ++#include "log.h" + + extern bool verbose_checks; /* from settings.c */ + +@@ -29,6 +29,14 @@ extern bool verbose_checks; /* from settings.c */ + #define dns_name_copynf(src, dst) dns_name_copy((src), (dst)) + #endif + ++#if LIBDNS_VERSION_MAJOR < 1809 ++# define DYNDB_UNEXPECTED_ERROR(...) \ ++ isc_error_unexpected(__FILE__, __LINE__, __VA_ARGS__) ++#else ++# define DYNDB_UNEXPECTED_ERROR(...) \ ++ isc_error_unexpected(__FILE__, __LINE__, __func__, __VA_ARGS__) ++#endif ++ + #define CLEANUP_WITH(result_code) \ + do { \ + result = (result_code); \ +-- +2.38.1 + diff --git a/bind-dyndb-ldap.spec b/bind-dyndb-ldap.spec index f2f563e..0c9a750 100644 --- a/bind-dyndb-ldap.spec +++ b/bind-dyndb-ldap.spec @@ -12,7 +12,7 @@ Name: bind-dyndb-ldap Version: 11.10 -Release: 7%{?dist} +Release: 8%{?dist} Summary: LDAP back-end plug-in for BIND License: GPLv2+ @@ -20,6 +20,8 @@ URL: https://releases.pagure.org/bind-dyndb-ldap Source0: https://releases.pagure.org/%{name}/%{name}-%{VERSION}.tar.bz2 Source1: https://releases.pagure.org/%{name}/%{name}-%{VERSION}.tar.bz2.asc +Patch1: bind-dyndb-ldap-11.10-bind-9.18.9.patch + BuildRequires: bind-devel >= %{bind_version}, bind-lite-devel >= %{bind_version} BuildRequires: krb5-devel BuildRequires: openldap-devel @@ -114,6 +116,10 @@ sed -i.bak -e "$SEDSCRIPT" /etc/named.conf %changelog +* Mon Nov 21 2022 Petr Menšík - 11.10-8 +- Rebuilt for BIND 9.18.9 (#2143258) +- Support error header change + * Sat Oct 22 2022 Petr Menšík - 11.10-7 - Rebuilt for BIND 9.18.8 (#2136100)