- build with -D_GNU_SOURCE (#431734)

- improved fix for #253537, posttrans script is now used
- improved fix for #400461
- 9.5.0b2
- bind-9.3.2b1-PIE.patch replaced by bind-9.5-PIE.patch
- only named, named-sdb and lwresd are PIE
- bind-9.5-sdb.patch has been updated
- bind-9.5-libidn.patch has been updated
- bind-9.4.0-sdb-sqlite-bld.patch replaced by bind-9.5-sdb-sqlite-bld.patch
- removed bind-9.5-gssapi-header.patch (upstream)
- removed bind-9.5-CVE-2008-0122.patch (upstream)
- removed bind-9.2.2-nsl.patch
This commit is contained in:
Adam Tkac 2008-02-11 17:11:26 +00:00
parent e31eda425b
commit bbeea42ab3
12 changed files with 155 additions and 639 deletions

View File

@ -1,4 +1,4 @@
bind-9.5.0b1.tar.gz
bind-9.5.0b2.tar.gz
bind-chroot.tar.bz2
config-2.tar
libbind-man.tar.gz

View File

@ -1,313 +0,0 @@
--- bind-9.4.0/make/rules.in.PIE 2007-01-30 00:57:21.000000000 +0100
+++ bind-9.4.0/make/rules.in 2007-03-06 12:53:37.000000000 +0100
@@ -124,6 +124,9 @@
.c.@O@:
${LIBTOOL_MODE_COMPILE} ${CC} ${ALL_CFLAGS} -c $<
+.c.o:
+ ${CC} ${ALL_CFLAGS} -c $<
+
SHELL = @SHELL@
LIBTOOL = @LIBTOOL@
LIBTOOL_MODE_COMPILE = ${LIBTOOL} @LIBTOOL_MODE_COMPILE@
--- bind-9.4.0/bin/rndc/Makefile.in.PIE 2007-01-19 01:55:49.000000000 +0100
+++ bind-9.4.0/bin/rndc/Makefile.in 2007-03-06 12:53:37.000000000 +0100
@@ -59,28 +59,34 @@
MANOBJS = ${MANPAGES} ${HTMLPAGES}
-UOBJS = unix/os.@O@
+UOBJS = unix/os.o
+
+EXT_CFLAGS = -fPIE
@BIND9_MAKE_RULES@
-rndc.@O@: rndc.c
- ${LIBTOOL_MODE_COMPILE} ${CC} ${ALL_CFLAGS} \
+LDFLAGS += -pie -Wl,-z,relro,-z,now,-z,nodlopen,-z,noexecstack
+
+.SUFFIXES: .c .o
+
+rndc.o: rndc.c
+ ${CC} ${ALL_CFLAGS} \
-DVERSION=\"${VERSION}\" \
-DRNDC_CONFFILE=\"${sysconfdir}/rndc.conf\" \
-DRNDC_KEYFILE=\"${sysconfdir}/rndc.key\" \
-c ${srcdir}/rndc.c
-rndc-confgen.@O@: rndc-confgen.c
- ${LIBTOOL_MODE_COMPILE} ${CC} ${ALL_CFLAGS} \
+rndc-confgen.o: rndc-confgen.c
+ ${CC} ${ALL_CFLAGS} \
-DRNDC_KEYFILE=\"${sysconfdir}/rndc.key\" \
-c ${srcdir}/rndc-confgen.c
-rndc@EXEEXT@: rndc.@O@ util.@O@ ${RNDCDEPLIBS}
- ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} -o $@ rndc.@O@ util.@O@ \
+rndc@EXEEXT@: rndc.o util.o ${RNDCDEPLIBS}
+ ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} -o $@ rndc.o util.o \
${RNDCLIBS}
-rndc-confgen@EXEEXT@: rndc-confgen.@O@ util.@O@ ${UOBJS} ${CONFDEPLIBS}
- ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} -o $@ rndc-confgen.@O@ util.@O@ \
+rndc-confgen@EXEEXT@: rndc-confgen.o util.o ${UOBJS} ${CONFDEPLIBS}
+ ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} -o $@ rndc-confgen.o util.o \
${UOBJS} ${CONFLIBS}
doc man:: ${MANOBJS}
--- bind-9.4.0/bin/rndc/unix/Makefile.in.PIE 2004-03-05 05:58:29.000000000 +0100
+++ bind-9.4.0/bin/rndc/unix/Makefile.in 2007-03-06 12:53:37.000000000 +0100
@@ -27,10 +27,16 @@
CDEFINES =
CWARNINGS =
-OBJS = os.@O@
+OBJS = os.o
SRCS = os.c
TARGETS = ${OBJS}
+EXT_CFLAGS = -fPIE
+
@BIND9_MAKE_RULES@
+
+LDFLAGS += -pie -Wl,-z,relro,-z,now,-z,nodlopen,-z,noexecstack
+
+.SUFFIXES: .c .o
--- bind-9.4.0/bin/check/Makefile.in.PIE 2006-06-09 02:54:08.000000000 +0200
+++ bind-9.4.0/bin/check/Makefile.in 2007-03-06 12:57:46.000000000 +0100
@@ -55,27 +55,33 @@
MANOBJS = ${MANPAGES} ${HTMLPAGES}
+EXT_CFLAGS = -fPIE
+
@BIND9_MAKE_RULES@
-named-checkconf.@O@: named-checkconf.c
- ${LIBTOOL_MODE_COMPILE} ${CC} ${ALL_CFLAGS} \
+LDFLAGS += -pie -Wl,-z,relro,-z,now,-z,nodlopen,-z,noexecstack
+
+.SUFFIXES: .c .o
+
+named-checkconf.o: named-checkconf.c
+ ${CC} ${ALL_CFLAGS} \
-DVERSION=\"${VERSION}\" \
-c ${srcdir}/named-checkconf.c
-named-checkzone.@O@: named-checkzone.c
- ${LIBTOOL_MODE_COMPILE} ${CC} ${ALL_CFLAGS} \
+named-checkzone.o: named-checkzone.c
+ ${CC} ${ALL_CFLAGS} \
-DVERSION=\"${VERSION}\" \
-c ${srcdir}/named-checkzone.c
-named-checkconf@EXEEXT@: named-checkconf.@O@ check-tool.@O@ ${ISCDEPLIBS} \
+named-checkconf@EXEEXT@: named-checkconf.o check-tool.o ${ISCDEPLIBS} \
${ISCCFGDEPLIBS} ${BIND9DEPLIBS}
${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} -o $@ \
- named-checkconf.@O@ check-tool.@O@ ${BIND9LIBS} ${ISCCFGLIBS} \
+ named-checkconf.o check-tool.o ${BIND9LIBS} ${ISCCFGLIBS} \
${DNSLIBS} ${ISCLIBS} ${LIBS}
-named-checkzone@EXEEXT@: named-checkzone.@O@ check-tool.@O@ ${ISCDEPLIBS} ${DNSDEPLIBS}
+named-checkzone@EXEEXT@: named-checkzone.o check-tool.o ${ISCDEPLIBS} ${DNSDEPLIBS}
${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} -o $@ \
- named-checkzone.@O@ check-tool.@O@ ${ISCCFGLIBS} ${DNSLIBS} \
+ named-checkzone.o check-tool.o ${ISCCFGLIBS} ${DNSLIBS} \
${ISCLIBS} ${LIBS}
doc man:: ${MANOBJS}
--- bind-9.4.0/bin/dnssec/Makefile.in.PIE 2005-05-02 02:26:11.000000000 +0200
+++ bind-9.4.0/bin/dnssec/Makefile.in 2007-03-06 12:53:37.000000000 +0100
@@ -41,7 +41,7 @@
# Alphabetically
TARGETS = dnssec-keygen@EXEEXT@ dnssec-signzone@EXEEXT@
-OBJS = dnssectool.@O@
+OBJS = dnssectool.o
SRCS = dnssec-keygen.c dnssec-signzone.c dnssectool.c
@@ -51,19 +51,25 @@
MANOBJS = ${MANPAGES} ${HTMLPAGES}
+EXT_CFLAGS = -fPIE
+
@BIND9_MAKE_RULES@
-dnssec-keygen@EXEEXT@: dnssec-keygen.@O@ ${OBJS} ${DEPLIBS}
+LDFLAGS += -pie -Wl,-z,relro,-z,now,-z,nodlopen,-z,noexecstack
+
+.SUFFIXES: .c .o
+
+dnssec-keygen@EXEEXT@: dnssec-keygen.o ${OBJS} ${DEPLIBS}
${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} -o $@ \
- dnssec-keygen.@O@ ${OBJS} ${LIBS}
+ dnssec-keygen.o ${OBJS} ${LIBS}
-dnssec-signzone.@O@: dnssec-signzone.c
- ${LIBTOOL_MODE_COMPILE} ${CC} ${ALL_CFLAGS} -DVERSION=\"${VERSION}\" \
+dnssec-signzone.o: dnssec-signzone.c
+ ${CC} ${ALL_CFLAGS} -DVERSION=\"${VERSION}\" \
-c ${srcdir}/dnssec-signzone.c
-dnssec-signzone@EXEEXT@: dnssec-signzone.@O@ ${OBJS} ${DEPLIBS}
+dnssec-signzone@EXEEXT@: dnssec-signzone.o ${OBJS} ${DEPLIBS}
${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} -o $@ \
- dnssec-signzone.@O@ ${OBJS} ${LIBS}
+ dnssec-signzone.o ${OBJS} ${LIBS}
doc man:: ${MANOBJS}
--- bind-9.4.0/bin/dig/Makefile.in.PIE 2005-09-09 16:11:04.000000000 +0200
+++ bind-9.4.0/bin/dig/Makefile.in 2007-03-06 12:53:37.000000000 +0100
@@ -51,7 +51,7 @@
TARGETS = dig@EXEEXT@ host@EXEEXT@ nslookup@EXEEXT@
-OBJS = dig.@O@ dighost.@O@ host.@O@ nslookup.@O@
+OBJS = dig.o dighost.o host.o nslookup.o
UOBJS =
@@ -63,19 +63,25 @@
MANOBJS = ${MANPAGES} ${HTMLPAGES}
+EXT_CFLAGS = -fPIE
+
@BIND9_MAKE_RULES@
-dig@EXEEXT@: dig.@O@ dighost.@O@ ${UOBJS} ${DEPLIBS}
+LDFLAGS += -pie -Wl,-z,relro,-z,now,-z,nodlopen,-z,noexecstack
+
+.SUFFIXES: .c .o
+
+dig@EXEEXT@: dig.o dighost.o ${UOBJS} ${DEPLIBS}
${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} -o $@ \
- dig.@O@ dighost.@O@ ${UOBJS} ${LIBS}
+ dig.o dighost.o ${UOBJS} ${LIBS}
-host@EXEEXT@: host.@O@ dighost.@O@ ${UOBJS} ${DEPLIBS}
+host@EXEEXT@: host.o dighost.o ${UOBJS} ${DEPLIBS}
${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} -o $@ \
- host.@O@ dighost.@O@ ${UOBJS} ${LIBS}
+ host.o dighost.o ${UOBJS} ${LIBS}
-nslookup@EXEEXT@: nslookup.@O@ dighost.@O@ ${UOBJS} ${DEPLIBS}
+nslookup@EXEEXT@: nslookup.o dighost.o ${UOBJS} ${DEPLIBS}
${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} -o $@ \
- nslookup.@O@ dighost.@O@ ${UOBJS} ${LIBS}
+ nslookup.o dighost.o ${UOBJS} ${LIBS}
doc man:: ${MANOBJS}
--- bind-9.4.0/bin/named/Makefile.in.PIE 2005-09-05 02:18:10.000000000 +0200
+++ bind-9.4.0/bin/named/Makefile.in 2007-03-06 12:59:02.000000000 +0100
@@ -72,17 +72,17 @@
TARGETS = named@EXEEXT@ lwresd@EXEEXT@
-OBJS = builtin.@O@ client.@O@ config.@O@ control.@O@ \
- controlconf.@O@ interfacemgr.@O@ \
- listenlist.@O@ log.@O@ logconf.@O@ main.@O@ notify.@O@ \
- query.@O@ server.@O@ sortlist.@O@ \
- tkeyconf.@O@ tsigconf.@O@ update.@O@ xfrout.@O@ \
- zoneconf.@O@ \
- lwaddr.@O@ lwresd.@O@ lwdclient.@O@ lwderror.@O@ lwdgabn.@O@ \
- lwdgnba.@O@ lwdgrbn.@O@ lwdnoop.@O@ lwsearch.@O@ \
+OBJS = builtin.o client.o config.o control.o \
+ controlconf.o interfacemgr.o \
+ listenlist.o log.o logconf.o main.o notify.o \
+ query.o server.o sortlist.o \
+ tkeyconf.o tsigconf.o update.o xfrout.o \
+ zoneconf.o \
+ lwaddr.o lwresd.o lwdclient.o lwderror.o lwdgabn.o \
+ lwdgnba.o lwdgrbn.o lwdnoop.o lwsearch.o \
${DLZDRIVER_OBJS} ${DBDRIVER_OBJS}
-UOBJS = unix/os.@O@
+UOBJS = unix/os.o
SRCS = builtin.c client.c config.c control.c \
controlconf.c interfacemgr.c \
@@ -100,16 +100,22 @@
MANOBJS = ${MANPAGES} ${HTMLPAGES}
+EXT_CFLAGS = -fPIE
+
@BIND9_MAKE_RULES@
-main.@O@: main.c
- ${LIBTOOL_MODE_COMPILE} ${CC} ${ALL_CFLAGS} \
+LDFLAGS += -pie -Wl,-z,relro,-z,now,-z,nodlopen,-z,noexecstack
+
+.SUFFIXES: .c .o
+
+main.o: main.c
+ ${CC} ${ALL_CFLAGS} \
-DVERSION=\"${VERSION}\" \
-DNS_LOCALSTATEDIR=\"${localstatedir}\" \
-DNS_SYSCONFDIR=\"${sysconfdir}\" -c ${srcdir}/main.c
-config.@O@: config.c
- ${LIBTOOL_MODE_COMPILE} ${CC} ${ALL_CFLAGS} \
+config.o: config.c
+ ${CC} ${ALL_CFLAGS} \
-DVERSION=\"${VERSION}\" \
-DNS_LOCALSTATEDIR=\"${localstatedir}\" \
-c ${srcdir}/config.c
--- bind-9.4.0/bin/named/unix/Makefile.in.PIE 2004-03-05 05:58:01.000000000 +0100
+++ bind-9.4.0/bin/named/unix/Makefile.in 2007-03-06 12:53:37.000000000 +0100
@@ -27,10 +27,14 @@
CDEFINES =
CWARNINGS =
-OBJS = os.@O@
+OBJS = os.o
SRCS = os.c
TARGETS = ${OBJS}
+EXT_CFLAGS = -fPIE
+
@BIND9_MAKE_RULES@
+
+.SUFFIXES: .c .o
\ Chybí znak konce řádku na konci souboru
--- bind-9.4.0/bin/nsupdate/Makefile.in.PIE 2004-07-20 09:03:20.000000000 +0200
+++ bind-9.4.0/bin/nsupdate/Makefile.in 2007-03-06 12:53:37.000000000 +0100
@@ -49,7 +49,7 @@
TARGETS = nsupdate@EXEEXT@
-OBJS = nsupdate.@O@
+OBJS = nsupdate.o
UOBJS =
@@ -61,10 +61,16 @@
MANOBJS = ${MANPAGES} ${HTMLPAGES}
+EXT_CFLAGS = -fPIE
+
@BIND9_MAKE_RULES@
-nsupdate@EXEEXT@: nsupdate.@O@ ${UOBJS} ${DEPLIBS}
- ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} -o $@ nsupdate.@O@ ${UOBJS} ${LIBS}
+LDFLAGS += -pie -Wl,-z,relro,-z,now,-z,nodlopen,-z,noexecstack
+
+.SUFFIXES: .c .o
+
+nsupdate@EXEEXT@: nsupdate.o ${UOBJS} ${DEPLIBS}
+ ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} -o $@ nsupdate.o ${UOBJS} ${LIBS}
doc man:: ${MANOBJS}

View File

@ -4,8 +4,8 @@
MANOBJS = ${MANPAGES} ${HTMLPAGES}
-EXT_CFLAGS = -fPIE
+EXT_CFLAGS = -fPIE -DLDAP_DEPRECATED
-EXT_CFLAGS = -fpie
+EXT_CFLAGS = -fpie -DLDAP_DEPRECATED
@BIND9_MAKE_RULES@

View File

@ -1,20 +0,0 @@
Index: lib/bind/inet/inet_network.c
===================================================================
RCS file: /var/snap/bind9/lib/bind/inet/inet_network.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- lib/bind/inet/inet_network.c 27 Apr 2005 04:56:21 -0000 1.5
+++ lib/bind/inet/inet_network.c 15 Jan 2008 04:02:01 -0000 1.6
@@ -84,9 +84,9 @@
}
if (!digit)
return (INADDR_NONE);
+ if (pp >= parts + 4 || val > 0xffU)
+ return (INADDR_NONE);
if (*cp == '.') {
- if (pp >= parts + 4 || val > 0xffU)
- return (INADDR_NONE);
*pp++ = val, cp++;
goto again;
}

27
bind-9.5-PIE.patch Normal file
View File

@ -0,0 +1,27 @@
--- bind-9.5.0b2/bin/named/Makefile.in.pie 2008-02-11 17:21:47.000000000 +0100
+++ bind-9.5.0b2/bin/named/Makefile.in 2008-02-11 17:22:10.000000000 +0100
@@ -100,8 +100,12 @@ HTMLPAGES = named.html lwresd.html named
MANOBJS = ${MANPAGES} ${HTMLPAGES}
+EXT_CFLAGS = -fpie
+
@BIND9_MAKE_RULES@
+LDFLAGS += -pie -Wl,-z,relro,-z,now,-z,nodlopen,-z,noexecstack
+
main.@O@: main.c
${LIBTOOL_MODE_COMPILE} ${CC} ${ALL_CFLAGS} \
-DVERSION=\"${VERSION}\" \
diff -up bind-9.5.0b2/bin/named/unix/Makefile.in.pie bind-9.5.0b2/bin/named/unix/Makefile.in
--- bind-9.5.0b2/bin/named/unix/Makefile.in.pie 2008-02-11 17:22:21.000000000 +0100
+++ bind-9.5.0b2/bin/named/unix/Makefile.in 2008-02-11 17:23:00.000000000 +0100
@@ -19,6 +19,8 @@ srcdir = @srcdir@
VPATH = @srcdir@
top_srcdir = @top_srcdir@
+EXT_CFLAGS = -fpie
+
@BIND9_MAKE_INCLUDES@
CINCLUDES = -I${srcdir}/include -I${srcdir}/../include \

View File

@ -1,12 +0,0 @@
diff -up bind-9.5.0b1/lib/dns/include/dst/Makefile.in.gssapi-header bind-9.5.0b1/lib/dns/include/dst/Makefile.in
--- bind-9.5.0b1/lib/dns/include/dst/Makefile.in.gssapi-header 2007-12-11 15:50:55.000000000 +0100
+++ bind-9.5.0b1/lib/dns/include/dst/Makefile.in 2007-12-11 15:51:15.000000000 +0100
@@ -21,7 +21,7 @@ top_srcdir = @top_srcdir@
@BIND9_VERSION@
-HEADERS = dst.h lib.h result.h
+HEADERS = dst.h gssapi.h lib.h result.h
SUBDIRS =
TARGETS =

View File

@ -1,6 +1,6 @@
diff -up bind-9.5.0a6/bin/dig/Makefile.in.libidn bind-9.5.0a6/bin/dig/Makefile.in
--- bind-9.5.0a6/bin/dig/Makefile.in.libidn 2007-07-29 13:17:00.000000000 +0200
+++ bind-9.5.0a6/bin/dig/Makefile.in 2007-07-29 13:17:01.000000000 +0200
diff -up bind-9.5.0b2/bin/dig/Makefile.in.libidn bind-9.5.0b2/bin/dig/Makefile.in
--- bind-9.5.0b2/bin/dig/Makefile.in.libidn 2007-06-20 01:46:59.000000000 +0200
+++ bind-9.5.0b2/bin/dig/Makefile.in 2008-02-11 17:50:08.000000000 +0100
@@ -45,7 +45,7 @@ DEPLIBS = ${DNSDEPLIBS} ${BIND9DEPLIBS}
${LWRESDEPLIBS}
@ -10,18 +10,18 @@ diff -up bind-9.5.0a6/bin/dig/Makefile.in.libidn bind-9.5.0a6/bin/dig/Makefile.i
SUBDIRS =
@@ -63,7 +63,7 @@ HTMLPAGES = dig.html host.html nslookup.
@@ -63,6 +63,8 @@ HTMLPAGES = dig.html host.html nslookup.
MANOBJS = ${MANPAGES} ${HTMLPAGES}
-EXT_CFLAGS = -fPIE
+EXT_CFLAGS = -fPIE -DWITH_LIBIDN
+EXT_CFLAGS = -DWITH_LIBIDN
+
@BIND9_MAKE_RULES@
diff -up bind-9.5.0a6/bin/dig/dighost.c.libidn bind-9.5.0a6/bin/dig/dighost.c
--- bind-9.5.0a6/bin/dig/dighost.c.libidn 2007-06-19 01:47:17.000000000 +0200
+++ bind-9.5.0a6/bin/dig/dighost.c 2007-07-30 14:58:19.000000000 +0200
dig@EXEEXT@: dig.@O@ dighost.@O@ ${UOBJS} ${DEPLIBS}
diff -up bind-9.5.0b2/bin/dig/dighost.c.libidn bind-9.5.0b2/bin/dig/dighost.c
--- bind-9.5.0b2/bin/dig/dighost.c.libidn 2008-01-18 00:46:35.000000000 +0100
+++ bind-9.5.0b2/bin/dig/dighost.c 2008-02-11 17:49:03.000000000 +0100
@@ -44,6 +44,11 @@
#include <idn/api.h>
#endif
@ -49,7 +49,7 @@ diff -up bind-9.5.0a6/bin/dig/dighost.c.libidn bind-9.5.0a6/bin/dig/dighost.c
/*%
* Exit Codes:
*
@@ -1002,6 +1015,9 @@ void
@@ -1004,6 +1017,9 @@ void
setup_system(void) {
dig_searchlist_t *domain = NULL;
lwres_result_t lwresult;
@ -59,7 +59,7 @@ diff -up bind-9.5.0a6/bin/dig/dighost.c.libidn bind-9.5.0a6/bin/dig/dighost.c
debug("setup_system()");
@@ -1050,8 +1066,15 @@ setup_system(void) {
@@ -1052,8 +1068,15 @@ setup_system(void) {
#ifdef WITH_IDN
initialize_idn();
@ -76,7 +76,7 @@ diff -up bind-9.5.0a6/bin/dig/dighost.c.libidn bind-9.5.0a6/bin/dig/dighost.c
if (keyfile[0] != 0)
setup_file_key();
else if (keysecret[0] != 0)
@@ -1740,12 +1763,18 @@ setup_lookup(dig_lookup_t *lookup) {
@@ -1743,12 +1766,18 @@ setup_lookup(dig_lookup_t *lookup) {
idn_result_t mr;
char utf8_textname[MXNAME], utf8_origin[MXNAME], idn_textname[MXNAME];
#endif
@ -96,7 +96,7 @@ diff -up bind-9.5.0a6/bin/dig/dighost.c.libidn bind-9.5.0a6/bin/dig/dighost.c
REQUIRE(lookup != NULL);
INSIST(!free_now);
@@ -1782,6 +1811,16 @@ setup_lookup(dig_lookup_t *lookup) {
@@ -1785,6 +1814,16 @@ setup_lookup(dig_lookup_t *lookup) {
mr = idn_encodename(IDN_LOCALCONV | IDN_DELIMMAP, lookup->textname,
utf8_textname, sizeof(utf8_textname));
idn_check_result(mr, "convert textname to UTF-8");
@ -113,7 +113,7 @@ diff -up bind-9.5.0a6/bin/dig/dighost.c.libidn bind-9.5.0a6/bin/dig/dighost.c
#endif
/*
@@ -1801,6 +1840,15 @@ setup_lookup(dig_lookup_t *lookup) {
@@ -1804,6 +1843,15 @@ setup_lookup(dig_lookup_t *lookup) {
lookup->origin = ISC_LIST_HEAD(search_list);
lookup->need_search = ISC_FALSE;
}
@ -129,7 +129,7 @@ diff -up bind-9.5.0a6/bin/dig/dighost.c.libidn bind-9.5.0a6/bin/dig/dighost.c
#else
if ((count_dots(lookup->textname) >= ndots) || !usesearch) {
lookup->origin = NULL; /* Force abs lookup */
@@ -1827,6 +1875,20 @@ setup_lookup(dig_lookup_t *lookup) {
@@ -1830,6 +1878,20 @@ setup_lookup(dig_lookup_t *lookup) {
IDN_IDNCONV | IDN_LENCHECK, utf8_textname,
idn_textname, sizeof(idn_textname));
idn_check_result(mr, "convert UTF-8 textname to IDN encoding");
@ -150,7 +150,7 @@ diff -up bind-9.5.0a6/bin/dig/dighost.c.libidn bind-9.5.0a6/bin/dig/dighost.c
#else
if (lookup->origin != NULL) {
debug("trying origin %s", lookup->origin->origin);
@@ -1883,6 +1945,14 @@ setup_lookup(dig_lookup_t *lookup) {
@@ -1886,6 +1948,14 @@ setup_lookup(dig_lookup_t *lookup) {
dns_rootname,
ISC_FALSE,
&lookup->namebuf);
@ -165,7 +165,7 @@ diff -up bind-9.5.0a6/bin/dig/dighost.c.libidn bind-9.5.0a6/bin/dig/dighost.c
#else
len = strlen(lookup->textname);
isc_buffer_init(&b, lookup->textname, len);
@@ -3310,7 +3380,7 @@ destroy_libs(void) {
@@ -3317,7 +3387,7 @@ destroy_libs(void) {
void * ptr;
dig_message_t *chase_msg;
#endif
@ -174,9 +174,9 @@ diff -up bind-9.5.0a6/bin/dig/dighost.c.libidn bind-9.5.0a6/bin/dig/dighost.c
isc_result_t result;
#endif
@@ -3349,6 +3419,10 @@ destroy_libs(void) {
result = dns_name_settotextfilter(NULL);
check_result(result, "dns_name_settotextfilter");
@@ -3356,6 +3426,10 @@ destroy_libs(void) {
result = dns_name_settotextfilter(NULL);
check_result(result, "dns_name_settotextfilter");
#endif
+#ifdef WITH_LIBIDN
+ result = dns_name_settotextfilter (NULL);
@ -185,7 +185,7 @@ diff -up bind-9.5.0a6/bin/dig/dighost.c.libidn bind-9.5.0a6/bin/dig/dighost.c
dns_name_destroy();
if (commctx != NULL) {
@@ -3525,6 +3599,79 @@ idn_check_result(idn_result_t r, const c
@@ -3532,6 +3606,79 @@ idn_check_result(idn_result_t r, const c
}
}
#endif /* WITH_IDN */

View File

@ -1,5 +1,23 @@
--- bind-9.4.0/bin/named/main-sdb.c.sdb-sqlite-bld 2007-03-12 14:00:05.000000000 +0100
+++ bind-9.4.0/bin/named/main-sdb.c 2007-03-12 14:02:34.000000000 +0100
diff -up bind-9.5.0b2/bin/named/Makefile.in.sdb-sqlite-bld bind-9.5.0b2/bin/named/Makefile.in
--- bind-9.5.0b2/bin/named/Makefile.in.sdb-sqlite-bld 2008-02-11 17:44:32.000000000 +0100
+++ bind-9.5.0b2/bin/named/Makefile.in 2008-02-11 17:46:00.000000000 +0100
@@ -26,10 +26,10 @@ top_srcdir = @top_srcdir@
#
# Add database drivers here.
#
-DBDRIVER_OBJS = ldapdb.@O@ pgsqldb.@O@ dirdb.@O@
-DBDRIVER_SRCS = ldapdb.c pgsqldb.c dirdb.c
+DBDRIVER_OBJS = ldapdb.@O@ pgsqldb.@O@ sqlitedb.@O@ dirdb.@O@
+DBDRIVER_SRCS = ldapdb.c pgsqldb.c sqlitedb.c dirdb.c
DBDRIVER_INCLUDES =
-DBDRIVER_LIBS = -lldap -llber -lpq
+DBDRIVER_LIBS = -lldap -llber -lpq -lsqlite3
DLZ_DRIVER_DIR = ${top_srcdir}/contrib/dlz/drivers
diff -up bind-9.5.0b2/bin/named/main-sdb.c.sdb-sqlite-bld bind-9.5.0b2/bin/named/main-sdb.c
--- bind-9.5.0b2/bin/named/main-sdb.c.sdb-sqlite-bld 2008-02-11 17:44:32.000000000 +0100
+++ bind-9.5.0b2/bin/named/main-sdb.c 2008-02-11 17:44:33.000000000 +0100
@@ -74,6 +74,7 @@
/* #include "xxdb.h" */
#include "ldapdb.h"
@ -8,7 +26,7 @@
#include "dirdb.h"
/*
@@ -648,6 +649,7 @@
@@ -646,6 +647,7 @@ setup(void) {
ldapdb_clear();
pgsqldb_clear();
@ -16,7 +34,7 @@
dirdb_clear();
isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_MAIN,
@@ -737,6 +739,23 @@
@@ -743,6 +745,23 @@ setup(void) {
ISC_LOG_NOTICE, "SDB postgreSQL DB zone database module loaded."
);
@ -40,7 +58,7 @@
result = dirdb_init();
if (result != ISC_R_SUCCESS)
{
@@ -781,6 +800,7 @@
@@ -787,6 +806,7 @@ cleanup(void) {
ldapdb_clear();
pgsqldb_clear();
@ -48,25 +66,10 @@
dirdb_clear();
isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_MAIN,
--- bind-9.4.0/bin/named/Makefile.in.sdb-sqlite-bld 2007-03-12 14:00:05.000000000 +0100
+++ bind-9.4.0/bin/named/Makefile.in 2007-03-12 14:00:05.000000000 +0100
@@ -26,10 +26,10 @@
#
# Add database drivers here.
#
-DBDRIVER_OBJS = ldapdb.o pgsqldb.o dirdb.o
-DBDRIVER_SRCS = ldapdb.c pgsqldb.c dirdb.c
+DBDRIVER_OBJS = ldapdb.o pgsqldb.o sqlitedb.o dirdb.o
+DBDRIVER_SRCS = ldapdb.c pgsqldb.c sqlitedb.c dirdb.c
DBDRIVER_INCLUDES =
-DBDRIVER_LIBS = -lldap -llber -lpq
+DBDRIVER_LIBS = -lldap -llber -lpq -lsqlite3
DLZ_DRIVER_DIR = ${top_srcdir}/contrib/dlz/drivers
--- bind-9.4.0/bin/sdb_tools/Makefile.in.sdb-sqlite-bld 2007-03-12 14:00:05.000000000 +0100
+++ bind-9.4.0/bin/sdb_tools/Makefile.in 2007-03-12 14:00:05.000000000 +0100
@@ -30,11 +30,11 @@
diff -up bind-9.5.0b2/bin/sdb_tools/Makefile.in.sdb-sqlite-bld bind-9.5.0b2/bin/sdb_tools/Makefile.in
--- bind-9.5.0b2/bin/sdb_tools/Makefile.in.sdb-sqlite-bld 2008-02-11 17:44:33.000000000 +0100
+++ bind-9.5.0b2/bin/sdb_tools/Makefile.in 2008-02-11 17:44:33.000000000 +0100
@@ -30,11 +30,11 @@ DEPLIBS = ${LWRESDEPLIBS} ${DNSDEPLIBS}
LIBS = ${LWRESLIBS} ${DNSLIBS} ${BIND9LIBS} \
${ISCCFGLIBS} ${ISCCCLIBS} ${ISCLIBS} ${DBDRIVER_LIBS} @LIBS@
@ -81,7 +84,7 @@
MANPAGES = zone2ldap.1
@@ -54,6 +54,9 @@
@@ -54,6 +54,9 @@ zone2ldap: zone2ldap.o ${DEPLIBS}
zonetodb: zonetodb.o ${DEPLIBS}
${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} -o $@ zonetodb.o -lpq ${LIBS}
@ -91,7 +94,7 @@
ldap2zone: ldap2zone.o ${DEPLIBS}
${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} -o $@ ldap2zone.o -lldap -llber ${LIBS}
@@ -68,4 +71,5 @@
@@ -68,4 +71,5 @@ install:: ${TARGETS} installdirs
${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} zone2ldap ${DESTDIR}${sbindir}
${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} ldap2zone ${DESTDIR}${sbindir}
${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} zonetodb ${DESTDIR}${sbindir}

View File

@ -1,7 +1,7 @@
diff -up bind-9.5.0a6/configure.in.sdb bind-9.5.0a6/configure.in
--- bind-9.5.0a6/configure.in.sdb 2007-06-19 01:47:16.000000000 +0200
+++ bind-9.5.0a6/configure.in 2007-11-15 10:10:06.000000000 +0100
@@ -2735,6 +2735,7 @@ AC_CONFIG_FILES([
diff -up bind-9.5.0b2/configure.in.sdb bind-9.5.0b2/configure.in
--- bind-9.5.0b2/configure.in.sdb 2008-01-24 03:29:56.000000000 +0100
+++ bind-9.5.0b2/configure.in 2008-02-11 17:32:43.000000000 +0100
@@ -2782,6 +2782,7 @@ AC_CONFIG_FILES([
bin/tests/system/tkey/Makefile
bin/tests/headerdep_test.sh
bin/dnssec/Makefile
@ -9,9 +9,9 @@ diff -up bind-9.5.0a6/configure.in.sdb bind-9.5.0a6/configure.in
doc/Makefile
doc/arm/Makefile
doc/misc/Makefile
diff -up bind-9.5.0a6/bin/Makefile.in.sdb bind-9.5.0a6/bin/Makefile.in
--- bind-9.5.0a6/bin/Makefile.in.sdb 2007-06-20 01:46:59.000000000 +0200
+++ bind-9.5.0a6/bin/Makefile.in 2007-11-15 10:10:06.000000000 +0100
diff -up bind-9.5.0b2/bin/Makefile.in.sdb bind-9.5.0b2/bin/Makefile.in
--- bind-9.5.0b2/bin/Makefile.in.sdb 2007-06-20 01:46:59.000000000 +0200
+++ bind-9.5.0b2/bin/Makefile.in 2008-02-11 17:32:43.000000000 +0100
@@ -19,7 +19,7 @@ srcdir = @srcdir@
VPATH = @srcdir@
top_srcdir = @top_srcdir@
@ -21,16 +21,16 @@ diff -up bind-9.5.0a6/bin/Makefile.in.sdb bind-9.5.0a6/bin/Makefile.in
TARGETS =
@BIND9_MAKE_RULES@
diff -up bind-9.5.0a6/bin/named/Makefile.in.sdb bind-9.5.0a6/bin/named/Makefile.in
--- bind-9.5.0a6/bin/named/Makefile.in.sdb 2007-11-15 10:10:06.000000000 +0100
+++ bind-9.5.0a6/bin/named/Makefile.in 2007-11-15 10:11:56.000000000 +0100
diff -up bind-9.5.0b2/bin/named/Makefile.in.sdb bind-9.5.0b2/bin/named/Makefile.in
--- bind-9.5.0b2/bin/named/Makefile.in.sdb 2008-02-11 17:32:43.000000000 +0100
+++ bind-9.5.0b2/bin/named/Makefile.in 2008-02-11 17:43:50.000000000 +0100
@@ -26,10 +26,10 @@ top_srcdir = @top_srcdir@
#
# Add database drivers here.
#
-DBDRIVER_OBJS =
-DBDRIVER_SRCS =
+DBDRIVER_OBJS = ldapdb.o pgsqldb.o dirdb.o
+DBDRIVER_OBJS = ldapdb.@O@ pgsqldb.@O@ dirdb.@O@
+DBDRIVER_SRCS = ldapdb.c pgsqldb.c dirdb.c
DBDRIVER_INCLUDES =
-DBDRIVER_LIBS =
@ -47,7 +47,7 @@ diff -up bind-9.5.0a6/bin/named/Makefile.in.sdb bind-9.5.0a6/bin/named/Makefile.
CWARNINGS =
@@ -66,21 +66,20 @@ DEPLIBS = ${LWRESDEPLIBS} ${DNSDEPLIBS}
@@ -66,27 +66,26 @@ DEPLIBS = ${LWRESDEPLIBS} ${DNSDEPLIBS}
LIBS = ${LWRESLIBS} ${DNSLIBS} ${BIND9LIBS} \
${ISCCFGLIBS} ${ISCCCLIBS} ${ISCLIBS} \
@ -59,50 +59,48 @@ diff -up bind-9.5.0a6/bin/named/Makefile.in.sdb bind-9.5.0a6/bin/named/Makefile.
-TARGETS = named@EXEEXT@ lwresd@EXEEXT@
+TARGETS = named@EXEEXT@ named-sdb@EXEEXT@ lwresd@EXEEXT@
OBJS = builtin.o client.o config.o control.o \
controlconf.o interfacemgr.o \
- listenlist.o log.o logconf.o main.o notify.o \
+ listenlist.o log.o logconf.o notify.o \
query.o server.o sortlist.o \
tkeyconf.o tsigconf.o update.o xfrout.o \
zoneconf.o \
lwaddr.o lwresd.o lwdclient.o lwderror.o lwdgabn.o \
lwdgnba.o lwdgrbn.o lwdnoop.o lwsearch.o \
OBJS = builtin.@O@ client.@O@ config.@O@ control.@O@ \
controlconf.@O@ interfacemgr.@O@ \
- listenlist.@O@ log.@O@ logconf.@O@ main.@O@ notify.@O@ \
+ listenlist.@O@ log.@O@ logconf.@O@ notify.@O@ \
query.@O@ server.@O@ sortlist.@O@ statschannel.@O@ \
tkeyconf.@O@ tsigconf.@O@ update.@O@ xfrout.@O@ \
zoneconf.@O@ \
lwaddr.@O@ lwresd.@O@ lwdclient.@O@ lwderror.@O@ lwdgabn.@O@ \
lwdgnba.@O@ lwdgrbn.@O@ lwdnoop.@O@ lwsearch.@O@ \
- ${DLZDRIVER_OBJS} ${DBDRIVER_OBJS}
UOBJS = unix/os.o
@@ -88,7 +87,7 @@ GENERATED = bind9.xsl.h
UOBJS = unix/os.@O@
SRCS = builtin.c client.c config.c control.c \
controlconf.c interfacemgr.c \
- listenlist.c log.c logconf.c main.c notify.c \
+ listenlist.c log.c logconf.c main.c main-sdb.c notify.c \
query.c server.c sortlist.c \
query.c server.c sortlist.c statschannel.c \
tkeyconf.c tsigconf.c update.c xfrout.c \
zoneconf.c \
@@ -116,15 +115,26 @@ main.o: main.c
@@ -112,15 +111,26 @@ main.@O@: main.c
-DNS_LOCALSTATEDIR=\"${localstatedir}\" \
-DNS_SYSCONFDIR=\"${sysconfdir}\" -c ${srcdir}/main.c
+main-sdb.o : main-sdb.c
+ ${CC} ${ALL_CFLAGS} @USE_DLZ@ \
+main-sdb.@O@: main-sdb.c
+ ${LIBTOOL_MODE_COMPILE} ${CC} ${ALL_CFLAGS} @USE_DLZ@ \
+ -DVERSION=\"${VERSION}\" \
+ -DNS_LOCALSTATEDIR=\"${localstatedir}\" \
+ -DNS_SYSCONFDIR=\"${sysconfdir}\" -c ${srcdir}/main-sdb.c
+
config.o: config.c
${CC} ${ALL_CFLAGS} \
config.@O@: config.c
${LIBTOOL_MODE_COMPILE} ${CC} ${ALL_CFLAGS} \
-DVERSION=\"${VERSION}\" \
-DNS_LOCALSTATEDIR=\"${localstatedir}\" \
-c ${srcdir}/config.c
-named@EXEEXT@: ${OBJS} ${UOBJS} ${DEPLIBS}
+named@EXEEXT@: ${OBJS} ${UOBJS} ${DEPLIBS} main.o
+named@EXEEXT@: ${OBJS} ${UOBJS} ${DEPLIBS} main.@O@
+ ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} -o $@ \
+ ${OBJS} main.o ${UOBJS} ${LIBS}
+ ${OBJS} main.@O@ ${UOBJS} ${LIBS}
+
+named-sdb@EXEEXT@: ${OBJS} ${UOBJS} ${DEPLIBS} main-sdb.o ${DLZDRIVER_OBJS} ${DBDRIVER_OBJS}
+named-sdb@EXEEXT@: ${OBJS} ${UOBJS} ${DEPLIBS} main-sdb.@O@ ${DLZDRIVER_OBJS} ${DBDRIVER_OBJS}
${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} -o $@ \
- ${OBJS} ${UOBJS} ${LIBS}
+ ${OBJS} main-sdb.o ${DLZDRIVER_OBJS} ${DBDRIVER_OBJS} ${UOBJS} ${LIBS} \
@ -110,7 +108,7 @@ diff -up bind-9.5.0a6/bin/named/Makefile.in.sdb bind-9.5.0a6/bin/named/Makefile.
lwresd@EXEEXT@: named@EXEEXT@
rm -f lwresd@EXEEXT@
@@ -149,8 +159,9 @@ installdirs:
@@ -145,8 +155,9 @@ installdirs:
$(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${mandir}/man5
$(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${mandir}/man8
@ -121,9 +119,9 @@ diff -up bind-9.5.0a6/bin/named/Makefile.in.sdb bind-9.5.0a6/bin/named/Makefile.
(cd ${DESTDIR}${sbindir}; rm -f lwresd@EXEEXT@; @LN@ named@EXEEXT@ lwresd@EXEEXT@)
${INSTALL_DATA} ${srcdir}/named.8 ${DESTDIR}${mandir}/man8
${INSTALL_DATA} ${srcdir}/lwresd.8 ${DESTDIR}${mandir}/man8
diff -up bind-9.5.0a6/bin/named/main-sdb.c.sdb bind-9.5.0a6/bin/named/main-sdb.c
--- bind-9.5.0a6/bin/named/main-sdb.c.sdb 2007-11-15 10:10:06.000000000 +0100
+++ bind-9.5.0a6/bin/named/main-sdb.c 2007-11-15 10:10:06.000000000 +0100
diff -up bind-9.5.0b2/bin/named/main-sdb.c.sdb bind-9.5.0b2/bin/named/main-sdb.c
--- bind-9.5.0b2/bin/named/main-sdb.c.sdb 2008-02-11 17:32:43.000000000 +0100
+++ bind-9.5.0b2/bin/named/main-sdb.c 2008-02-11 17:32:43.000000000 +0100
@@ -72,6 +72,9 @@
* Include header files for database drivers here.
*/

View File

@ -1,197 +1,13 @@
diff -up bind-9.5.0b1/lib/dns/rbtdb.c.segv bind-9.5.0b1/lib/dns/rbtdb.c
--- bind-9.5.0b1/lib/dns/rbtdb.c.segv 2008-02-04 12:30:36.000000000 +0100
+++ bind-9.5.0b1/lib/dns/rbtdb.c 2008-02-04 13:46:48.000000000 +0100
@@ -763,23 +763,17 @@ free_rbtdb(dns_rbtdb_t *rbtdb, isc_boole
isc_mem_put(rbtdb->common.mctx, rbtdb->current_version,
sizeof(rbtdb_version_t));
--- bind-9.5.0b1/lib/dns/rbtdb.c.segv 2008-02-11 14:52:12.000000000 +0100
+++ bind-9.5.0b1/lib/dns/rbtdb.c 2008-02-11 14:55:58.000000000 +0100
@@ -1633,7 +1633,8 @@ decrement_reference(dns_rbtdb_t *rbtdb,
"decrement_reference: "
"dns_rbt_deletenode: %s",
isc_result_totext(result));
- } else if (dns_rbtnode_refcurrent(node) == 0) {
+ } else if (rbtdb->deadnodes != NULL &&
+ dns_rbtnode_refcurrent(node) == 0) {
INSIST(!ISC_LINK_LINKED(node, deadlink));
ISC_LIST_APPEND(rbtdb->deadnodes[bucket], node, deadlink);
}
- if (IS_CACHE(rbtdb)) {
- /*
- * We assume the number of remaining dead nodes is reasonably
- * small; the overhead of unlinking all nodes here should be
- * negligible.
- */
- for (i = 0; i < rbtdb->node_lock_count; i++) {
- dns_rbtnode_t *node;
-
- node = ISC_LIST_HEAD(rbtdb->deadnodes[i]);
- while (node != NULL) {
- ISC_LIST_UNLINK(rbtdb->deadnodes[i], node,
- deadlink);
- node = ISC_LIST_HEAD(rbtdb->deadnodes[i]);
- }
+
+ for (i = 0; i < rbtdb->node_lock_count; i++) {
+ dns_rbtnode_t *node;
+
+ node = ISC_LIST_HEAD(rbtdb->deadnodes[i]);
+ while (node != NULL) {
+ ISC_LIST_UNLINK(rbtdb->deadnodes[i], node, deadlink);
+ node = ISC_LIST_HEAD(rbtdb->deadnodes[i]);
}
}
+
if (event == NULL)
rbtdb->quantum = (rbtdb->task != NULL) ? 100 : 0;
again:
@@ -1912,6 +1906,7 @@ closeversion(dns_db_t *db, dns_dbversion
}
if (!EMPTY(cleanup_list)) {
+ RWLOCK(&rbtdb->tree_lock, isc_rwlocktype_write);
for (changed = HEAD(cleanup_list);
changed != NULL;
changed = next_changed) {
@@ -1922,16 +1917,18 @@ closeversion(dns_db_t *db, dns_dbversion
lock = &rbtdb->node_locks[rbtnode->locknum].lock;
NODE_LOCK(lock, isc_rwlocktype_write);
+ cleanup_dead_nodes(rbtdb, rbtnode->locknum);
if (rollback)
rollback_node(rbtnode, serial);
decrement_reference(rbtdb, rbtnode, least_serial,
isc_rwlocktype_write,
- isc_rwlocktype_none);
+ isc_rwlocktype_write);
NODE_UNLOCK(lock, isc_rwlocktype_write);
isc_mem_put(rbtdb->common.mctx, changed,
sizeof(*changed));
}
+ RWUNLOCK(&rbtdb->tree_lock, isc_rwlocktype_write);
}
end:
@@ -2009,6 +2006,7 @@ findnode(dns_db_t *db, dns_name_t *name,
dns_name_t nodename;
isc_result_t result;
isc_rwlocktype_t locktype = isc_rwlocktype_read;
+ isc_boolean_t need_relock;
REQUIRE(VALID_RBTDB(rbtdb));
@@ -2064,29 +2062,27 @@ findnode(dns_db_t *db, dns_name_t *name,
* happen to hold a write lock on the tree, it's a good chance to purge
* dead nodes.
*/
- if (IS_CACHE(rbtdb)) {
- isc_boolean_t need_relock = ISC_FALSE;
+ need_relock = ISC_FALSE;
+ NODE_WEAKLOCK(&rbtdb->node_locks[node->locknum].lock,
+ isc_rwlocktype_read);
+ if (ISC_LINK_LINKED(node, deadlink) && isc_rwlocktype_write)
+ need_relock = ISC_TRUE;
+ else if (!ISC_LIST_EMPTY(rbtdb->deadnodes[node->locknum]) &&
+ locktype == isc_rwlocktype_write)
+ need_relock = ISC_TRUE;
+ NODE_WEAKUNLOCK(&rbtdb->node_locks[node->locknum].lock,
+ isc_rwlocktype_read);
+ if (need_relock) {
NODE_WEAKLOCK(&rbtdb->node_locks[node->locknum].lock,
- isc_rwlocktype_read);
- if (ISC_LINK_LINKED(node, deadlink) && isc_rwlocktype_write)
- need_relock = ISC_TRUE;
- else if (!ISC_LIST_EMPTY(rbtdb->deadnodes[node->locknum]) &&
- locktype == isc_rwlocktype_write)
- need_relock = ISC_TRUE;
+ isc_rwlocktype_write);
+ if (ISC_LINK_LINKED(node, deadlink))
+ ISC_LIST_UNLINK(rbtdb->deadnodes[node->locknum],
+ node, deadlink);
+ if (locktype == isc_rwlocktype_write)
+ cleanup_dead_nodes(rbtdb, node->locknum);
NODE_WEAKUNLOCK(&rbtdb->node_locks[node->locknum].lock,
- isc_rwlocktype_read);
- if (need_relock) {
- NODE_WEAKLOCK(&rbtdb->node_locks[node->locknum].lock,
- isc_rwlocktype_write);
- if (ISC_LINK_LINKED(node, deadlink))
- ISC_LIST_UNLINK(rbtdb->deadnodes[node->locknum],
- node, deadlink);
- if (locktype == isc_rwlocktype_write)
- cleanup_dead_nodes(rbtdb, node->locknum);
- NODE_WEAKUNLOCK(&rbtdb->node_locks[node->locknum].lock,
- isc_rwlocktype_write);
- }
+ isc_rwlocktype_write);
}
NODE_STRONGUNLOCK(&rbtdb->node_locks[node->locknum].lock);
@@ -6149,15 +6145,6 @@ dns_rbtdb_create
for (i = 0; i < (int)rbtdb->node_lock_count; i++)
ISC_LIST_INIT(rbtdb->rdatasets[i]);
- rbtdb->deadnodes = isc_mem_get(mctx, rbtdb->node_lock_count *
- sizeof(rbtnodelist_t));
- if (rbtdb->deadnodes == NULL) {
- result = ISC_R_NOMEMORY;
- goto cleanup_rdatasets;
- }
- for (i = 0; i < (int)rbtdb->node_lock_count; i++)
- ISC_LIST_INIT(rbtdb->deadnodes[i]);
-
/*
* Create the heaps.
*/
@@ -6165,7 +6152,7 @@ dns_rbtdb_create
sizeof(isc_heap_t *));
if (rbtdb->heaps == NULL) {
result = ISC_R_NOMEMORY;
- goto cleanup_deadnodes;
+ goto cleanup_rdatasets;
}
for (i = 0; i < (int)rbtdb->node_lock_count; i++)
rbtdb->heaps[i] = NULL;
@@ -6178,10 +6165,18 @@ dns_rbtdb_create
}
} else {
rbtdb->rdatasets = NULL;
- rbtdb->deadnodes = NULL;
rbtdb->heaps = NULL;
}
+ rbtdb->deadnodes = isc_mem_get(mctx, rbtdb->node_lock_count *
+ sizeof(rbtnodelist_t));
+ if (rbtdb->deadnodes == NULL) {
+ result = ISC_R_NOMEMORY;
+ goto cleanup_heaps;
+ }
+ for (i = 0; i < (int)rbtdb->node_lock_count; i++)
+ ISC_LIST_INIT(rbtdb->deadnodes[i]);
+
rbtdb->active = rbtdb->node_lock_count;
for (i = 0; i < (int)(rbtdb->node_lock_count); i++) {
@@ -6197,7 +6192,7 @@ dns_rbtdb_create
isc_refcount_decrement(&rbtdb->node_locks[i].references, NULL);
isc_refcount_destroy(&rbtdb->node_locks[i].references);
}
- goto cleanup_heaps;
+ goto cleanup_deadnodes;
}
rbtdb->node_locks[i].exiting = ISC_FALSE;
}
@@ -6310,6 +6305,10 @@ dns_rbtdb_create
return (ISC_R_SUCCESS);
+ cleanup_deadnodes:
+ isc_mem_put(mctx, rbtdb->deadnodes,
+ rbtdb->node_lock_count * sizeof(rbtnodelist_t));
+
cleanup_heaps:
if (rbtdb->heaps != NULL) {
for (i = 0 ; i < (int)rbtdb->node_lock_count ; i++)
@@ -6319,11 +6318,6 @@ dns_rbtdb_create
rbtdb->node_lock_count * sizeof(isc_heap_t *));
}
- cleanup_deadnodes:
- if (rbtdb->deadnodes != NULL)
- isc_mem_put(mctx, rbtdb->deadnodes,
- rbtdb->node_lock_count * sizeof(rbtnodelist_t));
-
cleanup_rdatasets:
if (rbtdb->rdatasets != NULL)
isc_mem_put(mctx, rbtdb->rdatasets, rbtdb->node_lock_count *

View File

@ -2,7 +2,7 @@
# Red Hat BIND package .spec file
#
%define RELEASEVER b1
%define RELEASEVER b2
%{?!SDB: %define SDB 1}
%{?!LIBBIND: %define LIBBIND 1}
@ -20,7 +20,7 @@ Summary: The Berkeley Internet Name Domain (BIND) DNS (Domain Name System) serv
Name: bind
License: ISC
Version: 9.5.0
Release: 25.%{RELEASEVER}%{?dist}
Release: 26.%{RELEASEVER}%{?dist}
Epoch: 32
Url: http://www.isc.org/products/BIND/
Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
@ -52,23 +52,20 @@ Source30: ldap2zone.c
Patch0: bind-9.2.0rc3-varrun.patch
Patch1: bind-9.3.3rc2-rndckey.patch
Patch5: bind-nonexec.patch
Patch6: bind-9.2.2-nsl.patch
Patch10: bind-9.3.2b1-PIE.patch
Patch10: bind-9.5-PIE.patch
Patch13: bind-9.3.1rc1-fix_libbind_includedir.patch
Patch16: bind-9.3.2-redhat_doc.patch
Patch63: bind-9.4.0-dnssec-directory.patch
Patch69: bind-9.5.0-generate-xml.patch
Patch71: bind-9.5-overflow.patch
Patch72: bind-9.5-dlz-64bit.patch
Patch84: bind-9.5-gssapi-header.patch
Patch86: bind-9.5-CVE-2008-0122.patch
Patch87: bind-9.5-parallel-build.patch
Patch88: bind-9.5-transfer-segv.patch
# SDB patches
Patch11: bind-9.3.2b2-sdbsrc.patch
Patch12: bind-9.5-sdb.patch
Patch62: bind-9.4.0-sdb-sqlite-bld.patch
Patch62: bind-9.5-sdb-sqlite-bld.patch
Patch68: bind-9.4.1-ldap-api.patch
# needs inpection
@ -192,7 +189,6 @@ Based on the code from Jan "Yenya" Kasprzak <kas@fi.muni.cz>
%patch -p1 -b .varrun
%patch1 -p1 -b .key
%patch5 -p1 -b .nonexec
%patch6 -p1 -b .nsl
%patch10 -p1 -b .PIE
%patch69 -p1 -b .generate-xml
%if %{SDB}
@ -249,9 +245,7 @@ cp -fp contrib/dbus/{dbus_mgr.h,dbus_service.h} bin/named/include/named
%endif
%patch73 -p1 -b .libidn
%patch83 -p1 -b .libidn2
%patch84 -p1 -b .gssapi-header
%patch85 -p1 -b .libidn3
%patch86 -p0 -b .CVE-2008-0122
%patch87 -p1 -b .parallel
%patch88 -p1 -b .transfer-segv
:;
@ -259,6 +253,8 @@ cp -fp contrib/dbus/{dbus_mgr.h,dbus_service.h} bin/named/include/named
%build
export CFLAGS="$CFLAGS $RPM_OPT_FLAGS -O0"
export CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE"
export STD_CDEFINES="$CPPFLAGS $STD_CDEFINES"
libtoolize --copy --force; aclocal; autoconf
cp -f /usr/share/libtool/config.{guess,sub} .
@ -490,6 +486,13 @@ if [ "$1" -gt 0 ]; then
fi;
:;
%posttrans chroot
if [ -x /usr/sbin/selinuxenabled ] && /usr/sbin/selinuxenabled && \
[ -x /sbin/restorecon ]; then
/sbin/restorecon %{chroot_prefix}/dev/* > /dev/null 2>&1;
fi;
:;
%preun chroot
if [ "$1" -eq 0 ]; then
/usr/sbin/bind-chroot-admin --disable > /dev/null 2>&1;
@ -654,6 +657,20 @@ rm -rf ${RPM_BUILD_ROOT}
%{_sbindir}/bind-chroot-admin
%changelog
* Mon Feb 11 2008 Adam Tkac <atkac redhat com> 32:9.5.0-26.b2
- build with -D_GNU_SOURCE (#431734)
- improved fix for #253537, posttrans script is now used
- improved fix for #400461
- 9.5.0b2
- bind-9.3.2b1-PIE.patch replaced by bind-9.5-PIE.patch
- only named, named-sdb and lwresd are PIE
- bind-9.5-sdb.patch has been updated
- bind-9.5-libidn.patch has been updated
- bind-9.4.0-sdb-sqlite-bld.patch replaced by bind-9.5-sdb-sqlite-bld.patch
- removed bind-9.5-gssapi-header.patch (upstream)
- removed bind-9.5-CVE-2008-0122.patch (upstream)
- removed bind-9.2.2-nsl.patch
* Mon Feb 04 2008 Adam Tkac <atkac redhat com> 32:9.5.0-25.b1
- fixed segfault during sending notifies (#400461)
- rebuild with gcc 4.3 series

View File

@ -1,4 +1,4 @@
0dcc5331641362447552cb6016c8a9f1 bind-9.5.0b1.tar.gz
d64e5ac8b5d98508b450bf999c33e7df bind-9.5.0b2.tar.gz
4faa4395b955e5f8a3d50f308b9fabc8 bind-chroot.tar.bz2
9c3905b6aece5b4aa0deba6029437483 config-2.tar
13fef79f99fcefebb51d84b08805de51 libbind-man.tar.gz