diff --git a/bind-9.4.1-ldap-api.patch b/bind-9.4.1-ldap-api.patch new file mode 100644 index 0000000..e469c35 --- /dev/null +++ b/bind-9.4.1-ldap-api.patch @@ -0,0 +1,11 @@ +--- bind-9.3.4/bin/named_sdb/Makefile.in.ldap-api 2007-05-18 16:21:21.000000000 +0200 ++++ bind-9.3.4/bin/named_sdb/Makefile.in 2007-05-18 16:22:16.000000000 +0200 +@@ -96,7 +96,7 @@ HTMLPAGES = named.html lwresd.html named + + MANOBJS = ${MANPAGES} ${HTMLPAGES} + +-EXT_CFLAGS = -fPIE ++EXT_CFLAGS = -fPIE -DLDAP_DEPRECATED + + @BIND9_MAKE_RULES@ + diff --git a/bind-9.4.1-ldap-new-api.patch b/bind-9.4.1-ldap-new-api.patch deleted file mode 100644 index 9db186a..0000000 --- a/bind-9.4.1-ldap-new-api.patch +++ /dev/null @@ -1,358 +0,0 @@ ---- bind-9.4.1/contrib/sdb/ldap/ldapdb.c.new-api 2004-08-27 02:10:25.000000000 +0200 -+++ bind-9.4.1/contrib/sdb/ldap/ldapdb.c 2007-05-22 16:50:16.000000000 +0200 -@@ -58,9 +58,13 @@ - static dns_sdbimplementation_t *ldapdb = NULL; - - struct ldapdb_data { -+#if LDAP_API_VERSION >= 3001 -+ LDAPURLDesc *lud; -+#else - char *hostport; - char *hostname; - int portno; -+#endif - char *base; - int defaultttl; - char *filterall; -@@ -135,7 +139,11 @@ ldapdb_getconn(struct ldapdb_data *data) - conndata = threaddata->data; - free(conndata->index); - if (conndata->data != NULL) -+#if LDAP_API_VERSION < 3001 - ldap_unbind((LDAP *)conndata->data); -+#else -+ ldap_unbind_ext((LDAP *)conndata->data, NULL, NULL); -+#endif - threaddata->data = conndata->next; - free(conndata); - } -@@ -172,14 +180,23 @@ ldapdb_getconn(struct ldapdb_data *data) - /* threaddata points at the connection list for current thread */ - /* look for existing connection to our server */ - conndata = ldapdb_find((struct ldapdb_entry *)threaddata->data, -- data->hostport, strlen(data->hostport)); -+#if LDAP_API_VERSION < 3001 -+ data->hostport, strlen(data->hostport)); -+#else -+ data->lud->lud_host, strlen(data->lud->lud_host)); -+#endif - if (conndata == NULL) { - /* no connection data structure for this server, create one */ - conndata = malloc(sizeof(*conndata)); - if (conndata == NULL) - return (NULL); -+#if LDAP_API_VERSION < 3001 - conndata->index = data->hostport; - conndata->size = strlen(data->hostport); -+#else -+ conndata->index = data->lud->lud_host; -+ conndata->size = strlen(data->lud->lud_host); -+#endif - conndata->data = NULL; - ldapdb_insert((struct ldapdb_entry **)&threaddata->data, - conndata); -@@ -196,9 +213,15 @@ ldapdb_bind(struct ldapdb_data *data, LD - #endif - - if (*ldp != NULL) -+#if LDAP_API_VERSION < 3001 - ldap_unbind(*ldp); - *ldp = ldap_open(data->hostname, data->portno); - if (*ldp == NULL) -+#else -+ ldap_unbind_ext (*ldp, NULL, NULL); -+ int res = ldap_initialize(ldp, ldap_url_desc2str(data->lud)); -+ if (res != LDAP_SUCCESS) -+#endif - return; - - #ifndef LDAPDB_RFC1823API -@@ -211,8 +234,17 @@ ldapdb_bind(struct ldapdb_data *data, LD - } - #endif - -+#if LDAP_API_VERSION < 3001 - if (ldap_simple_bind_s(*ldp, data->bindname, data->bindpw) != LDAP_SUCCESS) { - ldap_unbind(*ldp); -+#else -+ struct berval ber; -+ ber.bv_val = data->bindpw; -+ ber.bv_len = (data->bindpw == NULL) ? 0 : strlen(data->bindpw); -+ -+ if (ldap_sasl_bind_s(*ldp, data->base, LDAP_SASL_SIMPLE, &ber, NULL, NULL, NULL) != LDAP_SUCCESS) { -+ ldap_unbind_ext(*ldp, NULL, NULL); -+#endif - *ldp = NULL; - } - } -@@ -224,14 +256,19 @@ ldapdb_search(const char *zone, const ch - isc_result_t result = ISC_R_NOTFOUND; - LDAP **ldp; - LDAPMessage *res, *e; -- char *fltr, *a, **vals = NULL, **names = NULL; -+ char *fltr, *a; -+#if LDAP_API_VERSION < 3001 -+ char **names, **vals; -+#else -+ struct berval **names, **vals; -+#endif - char type[64]; - #ifdef LDAPDB_RFC1823API - void *ptr; - #else - BerElement *ptr; - #endif -- int i, j, errno, msgid; -+ int i, j, errno, msgid, ldap_res; - - ldp = ldapdb_getconn(data); - if (ldp == NULL) -@@ -256,12 +293,21 @@ ldapdb_search(const char *zone, const ch - sprintf(data->filtername, "%s))", name); - fltr = data->filterone; - } -- -+#if LDAP_API_VERSION < 3001 - msgid = ldap_search(*ldp, data->base, LDAP_SCOPE_SUBTREE, fltr, NULL, 0); -+#else -+ ldap_res = ldap_search_ext(*ldp, data->base, LDAP_SCOPE_SUBTREE, fltr, NULL, 0, -+ NULL, NULL, NULL, 65535, &msgid); -+#endif - if (msgid == -1) { - ldapdb_bind(data, ldp); - if (*ldp != NULL) -+#if LDAP_API_VERSION < 3001 - msgid = ldap_search(*ldp, data->base, LDAP_SCOPE_SUBTREE, fltr, NULL, 0); -+#else -+ ldap_res = ldap_search_ext(*ldp, data->base, LDAP_SCOPE_SUBTREE, fltr, NULL, 0, -+ NULL, NULL, NULL, 65535, &msgid); -+#endif - } - - if (*ldp == NULL || msgid == -1) { -@@ -293,15 +339,27 @@ ldapdb_search(const char *zone, const ch - } - - if (name == NULL) { -+#if LDAP_API_VERSION < 3001 - names = ldap_get_values(ld, e, "relativeDomainName"); -+#else -+ names = ldap_get_values_len(ld, e, "relativeDomainName"); -+#endif - if (names == NULL) - continue; - } -- -+#if LDAP_API_VERSION < 3001 - vals = ldap_get_values(ld, e, "dNSTTL"); -+#else -+ vals = ldap_get_values_len(ld, e, "dNSTTL"); -+#endif - if (vals != NULL) { -+#if LDAP_API_VERSION < 3001 - ttl = atoi(vals[0]); - ldap_value_free(vals); -+#else -+ ttl = atoi(vals[0]->bv_val); -+ ldap_value_free_len(vals); -+#endif - } - - for (a = ldap_first_attribute(ld, e, &ptr); a != NULL; a = ldap_next_attribute(ld, e, ptr)) { -@@ -319,34 +377,60 @@ ldapdb_search(const char *zone, const ch - - strncpy(type, a, s - a); - type[s - a] = '\0'; -+#if LDAP_API_VERSION < 3001 - vals = ldap_get_values(ld, e, a); -+#else -+ vals = ldap_get_values_len(ld, e, a); -+#endif - if (vals != NULL) { - for (i = 0; vals[i] != NULL; i++) { - if (name != NULL) { -+#if LDAP_API_VERSION < 3001 - result = dns_sdb_putrr(retdata, type, ttl, vals[i]); -+#else -+ result = dns_sdb_putrr(retdata, type, ttl, vals[i]->bv_val); -+#endif - } else { - for (j = 0; names[j] != NULL; j++) { -+#if LDAP_API_VERSION < 3001 - result = dns_sdb_putnamedrr(retdata, names[j], type, ttl, vals[i]); -+#else -+ result = dns_sdb_putnamedrr(retdata, names[j]->bv_val, type, ttl, vals[i]->bv_val); -+#endif - if (result != ISC_R_SUCCESS) - break; - } - } --; if (result != ISC_R_SUCCESS) { -+ if (result != ISC_R_SUCCESS) { -+#if LDAP_API_VERSION < 3001 - isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_SERVER, ISC_LOG_ERROR, - "LDAP sdb zone '%s': dns_sdb_put... failed for %s", zone, vals[i]); - ldap_value_free(vals); -+#else -+ isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_SERVER, ISC_LOG_ERROR, -+ "LDAP sdb zone '%s': dns_sdb_put... failed for %s", zone, vals[i]->bv_val); -+ ldap_value_free_len(vals); -+#endif - #ifndef LDAPDB_RFC1823API - ldap_memfree(a); - if (ptr != NULL) - ber_free(ptr, 0); - #endif - if (name == NULL) -+#if LDAP_API_VERSION < 3001 - ldap_value_free(names); -+#else -+ ldap_value_free_len(names); -+#endif - ldap_msgfree(res); - return (ISC_R_FAILURE); - } - } -+#if LDAP_API_VERSION < 3001 - ldap_value_free(vals); -+#else -+ ldap_value_free_len(vals); -+#endif - } - #ifndef LDAPDB_RFC1823API - ldap_memfree(a); -@@ -357,7 +441,11 @@ ldapdb_search(const char *zone, const ch - ber_free(ptr, 0); - #endif - if (name == NULL) -+#if LDAP_API_VERSION < 3001 - ldap_value_free(names); -+#else -+ ldap_value_free_len(names); -+#endif - - /* free this result */ - ldap_msgfree(res); -@@ -460,10 +548,15 @@ parseextensions(char *extensions, struct - static void - free_data(struct ldapdb_data *data) - { -+#if LDAP_API_VERSION < 3001 - if (data->hostport != NULL) - isc_mem_free(ns_g_mctx, data->hostport); - if (data->hostname != NULL) - isc_mem_free(ns_g_mctx, data->hostname); -+#else -+ if (data->lud != NULL) -+ ldap_free_urldesc(data->lud); -+#endif - if (data->filterall != NULL) - isc_mem_put(ns_g_mctx, data->filterall, data->filteralllen); - if (data->filterone != NULL) -@@ -478,7 +571,7 @@ ldapdb_create(const char *zone, int argc - { - struct ldapdb_data *data; - char *s, *filter = NULL, *extensions = NULL; -- int defaultttl; -+ int defaultttl, i; - - UNUSED(driverdata); - -@@ -486,7 +579,10 @@ ldapdb_create(const char *zone, int argc - /* want to do this only once for all instances */ - - if ((argc < 2) -+#if LDAP_API_VERSION < 3001 -+ /* Could be ldap[is]:// */ - || (argv[0] != strstr( argv[0], "ldap://")) -+#endif - || ((defaultttl = atoi(argv[1])) < 1)) - return (ISC_R_FAILURE); - data = isc_mem_get(ns_g_mctx, sizeof(struct ldapdb_data)); -@@ -494,14 +590,15 @@ ldapdb_create(const char *zone, int argc - return (ISC_R_NOMEMORY); - - memset(data, 0, sizeof(struct ldapdb_data)); -+ -+ data->defaultttl = defaultttl; -+#if LDAP_API_VERSION < 3001 - data->hostport = isc_mem_strdup(ns_g_mctx, argv[0] + strlen("ldap://")); - if (data->hostport == NULL) { - free_data(data); - return (ISC_R_NOMEMORY); - } - -- data->defaultttl = defaultttl; -- - s = strchr(data->hostport, '/'); - if (s != NULL) { - *s++ = '\0'; -@@ -544,11 +641,26 @@ ldapdb_create(const char *zone, int argc - } - } - -+#else -+ if (ldap_url_parse (argv[0], &data->lud) != LDAP_URL_SUCCESS) { -+ free_data (data); -+ return (ISC_R_FAILURE); -+ } -+ -+ data->base = data->lud->lud_dn; -+ -+ for (i = 0; data->lud->lud_exts[i] != NULL; i++) { -+ extensions = strdup (data->lud->lud_exts[i]); -+#endif -+ - /* parse extensions */ - if (extensions != NULL) { - int err; - - err = parseextensions(extensions, data); -+#if LDAP_API_VERSION >= 3001 -+ free (extensions); -+#endif - if (err < 0) { - /* err should be -1 or -2 */ - free_data(data); -@@ -562,6 +674,14 @@ ldapdb_create(const char *zone, int argc - return (ISC_R_FAILURE); - } - } -+#if LDAP_API_VERSION >= 3001 -+ else { -+ free_data (data); -+ return (ISC_R_NOMEMORY); -+ } -+ } -+ filter = data->lud->lud_filter; -+#else - - if ((data->base != NULL && unhex(data->base) == NULL) || - (filter != NULL && unhex(filter) == NULL) || -@@ -572,6 +692,7 @@ ldapdb_create(const char *zone, int argc - "LDAP sdb zone '%s': URL: bad hex values", zone); - return (ISC_R_FAILURE); - } -+#endif - - /* compute filterall and filterone once and for all */ - if (filter == NULL) { -@@ -602,6 +723,7 @@ ldapdb_create(const char *zone, int argc - } - data->filtername = data->filterone + strlen(data->filterone); - -+#if LDAP_API_VERSION < 3001 - /* support URLs with literal IPv6 addresses */ - data->hostname = isc_mem_strdup(ns_g_mctx, data->hostport + (*data->hostport == '[' ? 1 : 0)); - if (data->hostname == NULL) { -@@ -620,8 +742,10 @@ ldapdb_create(const char *zone, int argc - data->portno = atoi(s); - } else - data->portno = LDAP_PORT; -+#endif - - *dbdata = data; -+ - return (ISC_R_SUCCESS); - } - diff --git a/bind-chroot-admin.in b/bind-chroot-admin.in index be6064d..3ff3e58 100644 --- a/bind-chroot-admin.in +++ b/bind-chroot-admin.in @@ -221,7 +221,7 @@ function master_zone_writes_enabled() fi; . /etc/sysconfig/named - if [ "$ENABLE_ZONE_WRITE" = [yY1]* ]; then + if `echo "$ENABLE_ZONE_WRITE" | grep -q '[yY1].*'`; then return 0; fi; diff --git a/bind.spec b/bind.spec index bb66c4c..1ea927b 100644 --- a/bind.spec +++ b/bind.spec @@ -17,7 +17,7 @@ Summary: The Berkeley Internet Name Domain (BIND) DNS (Domain Name System) serv Name: bind License: BSD-like Version: 9.4.1 -Release: 3%{?dist} +Release: 4%{?dist} Epoch: 31 Url: http://www.isc.org/products/BIND/ Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) @@ -83,7 +83,7 @@ Patch65: bind-9.4.0-dig-idn.patch %endif Patch66: bind-9.4.0-zone-freeze.patch Patch67: bind-9.4.0-dbus-race-condition.patch -Patch68: bind-9.4.1-ldap-new-api.patch +Patch68: bind-9.4.1-ldap-api.patch # Requires: bind-libs = %{epoch}:%{version}-%{release}, glibc >= 2.2, mktemp Requires(post): grep, chkconfig >= 1.3.26 @@ -247,7 +247,6 @@ BIND's idn implementation libraries %if %{SDB} %patch11 -p1 -b .sdbsrc %patch61 -p1 -b .sdb-sqlite-src -%patch68 -p1 -b .new-api # BUILD 'Simplified Database Backend' (SDB) version of named: named_sdb cp -rfp bin/named bin/named_sdb # SDB ldap @@ -268,6 +267,7 @@ cp -fp contrib/sdb/ldap/{zone2ldap.1,zone2ldap.c} bin/sdb_tools cp -fp contrib/sdb/pgsql/zonetodb.c bin/sdb_tools cp -fp contrib/sdb/sqlite/zone2sqlite.c bin/sdb_tools %patch12 -p1 -b .sdb +%patch68 -p1 -b .new-api %endif %if %{LIBBIND} %patch13 -p1 -b .fix_libbind_includedir @@ -810,6 +810,10 @@ rm -rf ${RPM_BUILD_ROOT} %changelog +* Wed May 24 2007 Adam Tkac 31:9.4.1-4.fc8 +- removed ldap-api patch and start using deprecated API +- fixed minor problem in bind-chroot-admin script (#241103) + * Tue May 22 2007 Adam Tkac 31:9.4.1-3.fc8 - fixed bind-chroot-admin dynamic DNS handling (#239149) - updated zone-freeze patch to latest upstream