summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Tkac <atkac@fedoraproject.org>2007-05-24 14:31:50 +0000
committerAdam Tkac <atkac@fedoraproject.org>2007-05-24 14:31:50 +0000
commitb82deb2ea785a00c5508d480608eecab15bbb298 (patch)
treeb06a1c2c14f46198f34f4c33b4a4fe10a3a6d45c
parentaf78c8d4b9f7feb322a228bbfb8fb983e57a651d (diff)
downloadbind-b82deb2ea785a00c5508d480608eecab15bbb298.tar.gz
bind-b82deb2ea785a00c5508d480608eecab15bbb298.tar.xz
bind-b82deb2ea785a00c5508d480608eecab15bbb298.zip
- start using deprecated ldap API because new-api patch didn't work (lackbind-9_4_1-4_fc8
of documentation) - fix minor bug in bind-chroot-admin script (#241103)
-rw-r--r--bind-9.4.1-ldap-api.patch11
-rw-r--r--bind-9.4.1-ldap-new-api.patch358
-rw-r--r--bind-chroot-admin.in2
-rw-r--r--bind.spec10
4 files changed, 19 insertions, 362 deletions
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 <atkac redhat com> 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 <atkac redhat com> 31:9.4.1-3.fc8
- fixed bind-chroot-admin dynamic DNS handling (#239149)
- updated zone-freeze patch to latest upstream