Compare commits
No commits in common. "c8" and "imports/c9-beta/bind-9.16.23-4.el9" have entirely different histories.
c8
...
imports/c9
@ -1,2 +1 @@
|
|||||||
4b45d15edc1e3b7902129ce27baec58a50d76b5c SOURCES/bind-9.11.36.tar.gz
|
30cbd1f3e9d2d47d653498143334128aac1f8fc0 SOURCES/bind-9.16.23.tar.xz
|
||||||
a164fcad1d64d6b5fab5034928cb7260f1fa8fdd SOURCES/random.data
|
|
||||||
|
3
.gitignore
vendored
3
.gitignore
vendored
@ -1,2 +1 @@
|
|||||||
SOURCES/bind-9.11.36.tar.gz
|
SOURCES/bind-9.16.23.tar.xz
|
||||||
SOURCES/random.data
|
|
||||||
|
@ -1,79 +0,0 @@
|
|||||||
PGSQL BIND SDB driver
|
|
||||||
|
|
||||||
The postgresql BIND SDB driver is of experimental status and should not be
|
|
||||||
used for production systems.
|
|
||||||
|
|
||||||
Usage:
|
|
||||||
|
|
||||||
o Use the named_sdb process ( put ENABLE_SDB=yes in /etc/sysconfig/named )
|
|
||||||
|
|
||||||
o Edit your named.conf to contain a database zone, eg. :
|
|
||||||
|
|
||||||
zone "pgdb.net." IN {
|
|
||||||
type master;
|
|
||||||
database "pgsql bind pgdb localhost pguser pgpasswd";
|
|
||||||
# ^- DB name ^-Table ^-host ^-user ^-password
|
|
||||||
};
|
|
||||||
|
|
||||||
o Create the database zone table
|
|
||||||
The table must contain the columns "name", "rdtype", and "rdata", and
|
|
||||||
is expected to contain a properly constructed zone. The program "zonetodb"
|
|
||||||
creates such a table.
|
|
||||||
|
|
||||||
zonetodb usage:
|
|
||||||
|
|
||||||
zonetodb origin file dbname dbtable
|
|
||||||
|
|
||||||
where
|
|
||||||
origin : zone origin, eg "pgdb.net."
|
|
||||||
file : master zone database file, eg. pgdb.net.db
|
|
||||||
dbname : name of postgresql database
|
|
||||||
dbtable: name of table in database
|
|
||||||
|
|
||||||
Eg. to import this zone in the file 'pgdb.net.db' into the 'bind' database
|
|
||||||
'pgdb' table:
|
|
||||||
|
|
||||||
---
|
|
||||||
#pgdb.net.db:
|
|
||||||
$TTL 1H
|
|
||||||
@ SOA localhost. root.localhost. ( 1
|
|
||||||
3H
|
|
||||||
1H
|
|
||||||
1W
|
|
||||||
1H )
|
|
||||||
NS localhost.
|
|
||||||
host1 A 192.168.2.1
|
|
||||||
host2 A 192.168.2.2
|
|
||||||
host3 A 192.168.2.3
|
|
||||||
host4 A 192.168.2.4
|
|
||||||
host5 A 192.168.2.5
|
|
||||||
host6 A 192.168.2.6
|
|
||||||
host7 A 192.168.2.7
|
|
||||||
---
|
|
||||||
|
|
||||||
Issue this command as the pgsql user authorized to update the bind database:
|
|
||||||
|
|
||||||
# zonetodb pgdb.net. pgdb.net.db bind pgdb
|
|
||||||
|
|
||||||
will create / update the pgdb table in the 'bind' db:
|
|
||||||
|
|
||||||
$ psql -dbind -c 'select * from pgdb;'
|
|
||||||
name | ttl | rdtype | rdata
|
|
||||||
----------------+------+--------+-----------------------------------------------------
|
|
||||||
pgdb.net | 3600 | SOA | localhost. root.localhost. 1 10800 3600 604800 3600
|
|
||||||
pgdb.net | 3600 | NS | localhost.
|
|
||||||
host1.pgdb.net | 3600 | A | 192.168.2.1
|
|
||||||
host2.pgdb.net | 3600 | A | 192.168.2.2
|
|
||||||
host3.pgdb.net | 3600 | A | 192.168.2.3
|
|
||||||
host4.pgdb.net | 3600 | A | 192.168.2.4
|
|
||||||
host5.pgdb.net | 3600 | A | 192.168.2.5
|
|
||||||
host6.pgdb.net | 3600 | A | 192.168.2.6
|
|
||||||
host7.pgdb.net | 3600 | A | 192.168.2.7
|
|
||||||
(9 rows)
|
|
||||||
|
|
||||||
I've tested exactly the above configuration with bind-sdb-9.3.1+ and it works OK.
|
|
||||||
|
|
||||||
NOTE: If you use pgsqldb SDB, ensure the postgresql service is started before the named
|
|
||||||
service .
|
|
||||||
|
|
||||||
USE AT YOUR OWN RISK!
|
|
@ -1,68 +1,107 @@
|
|||||||
|
From 040227009453b3f0aa7914c7a6a94dc57ad5269b Mon Sep 17 00:00:00 2001
|
||||||
|
From: Petr Mensik <pemensik@redhat.com>
|
||||||
|
Date: Thu, 21 Jan 2021 10:46:20 +0100
|
||||||
|
Subject: [PATCH] Enable custom pkcs11 native build
|
||||||
|
|
||||||
|
Share common parts like libisc, libcc and others. But provide native
|
||||||
|
pkcs11 libraries as a new copy of libdns and libns.
|
||||||
|
---
|
||||||
|
bin/Makefile.in | 2 +-
|
||||||
|
bin/confgen/Makefile.in | 2 +-
|
||||||
|
bin/dnssec-pkcs11/Makefile.in | 39 +++++++++++++++++---------------
|
||||||
|
bin/named-pkcs11/Makefile.in | 33 ++++++++++++++-------------
|
||||||
|
configure.ac | 19 ++++++++++++++++
|
||||||
|
lib/Makefile.in | 2 +-
|
||||||
|
lib/dns-pkcs11/Makefile.in | 22 +++++++++---------
|
||||||
|
lib/dns-pkcs11/tests/Makefile.in | 8 +++----
|
||||||
|
lib/ns-pkcs11/Makefile.in | 26 ++++++++++-----------
|
||||||
|
lib/ns-pkcs11/tests/Makefile.in | 12 +++++-----
|
||||||
|
make/includes.in | 7 ++++++
|
||||||
|
11 files changed, 101 insertions(+), 71 deletions(-)
|
||||||
|
|
||||||
diff --git a/bin/Makefile.in b/bin/Makefile.in
|
diff --git a/bin/Makefile.in b/bin/Makefile.in
|
||||||
index a18b222..26a7e4e 100644
|
index 9ad7f62..094775a 100644
|
||||||
--- a/bin/Makefile.in
|
--- a/bin/Makefile.in
|
||||||
+++ b/bin/Makefile.in
|
+++ b/bin/Makefile.in
|
||||||
@@ -11,8 +11,8 @@ srcdir = @srcdir@
|
@@ -11,7 +11,7 @@ srcdir = @srcdir@
|
||||||
VPATH = @srcdir@
|
VPATH = @srcdir@
|
||||||
top_srcdir = @top_srcdir@
|
top_srcdir = @top_srcdir@
|
||||||
|
|
||||||
-SUBDIRS = named rndc dig delv dnssec tools nsupdate check confgen \
|
-SUBDIRS = named rndc dig delv dnssec tools nsupdate check confgen \
|
||||||
- @NZD_TOOLS@ @PYTHON_TOOLS@ @PKCS11_TOOLS@ tests
|
+SUBDIRS = named named-pkcs11 rndc dig delv dnssec dnssec-pkcs11 tools nsupdate check confgen \
|
||||||
+SUBDIRS = named named-pkcs11 rndc dig delv dnssec dnssec-pkcs11 tools nsupdate \
|
@NZD_TOOLS@ @PYTHON_TOOLS@ @PKCS11_TOOLS@ plugins tests
|
||||||
+ check confgen @NZD_TOOLS@ @PYTHON_TOOLS@ @PKCS11_TOOLS@ tests
|
|
||||||
TARGETS =
|
TARGETS =
|
||||||
|
|
||||||
@BIND9_MAKE_RULES@
|
diff --git a/bin/confgen/Makefile.in b/bin/confgen/Makefile.in
|
||||||
|
index c126bf3..1b7512d 100644
|
||||||
|
--- a/bin/confgen/Makefile.in
|
||||||
|
+++ b/bin/confgen/Makefile.in
|
||||||
|
@@ -22,7 +22,7 @@ VERSION=@BIND9_VERSION@
|
||||||
|
CINCLUDES = -I${srcdir}/include ${ISC_INCLUDES} ${ISCCC_INCLUDES} \
|
||||||
|
${ISCCFG_INCLUDES} ${DNS_INCLUDES} ${BIND9_INCLUDES}
|
||||||
|
|
||||||
|
-CDEFINES = @USE_PKCS11@
|
||||||
|
+CDEFINES =
|
||||||
|
CWARNINGS =
|
||||||
|
|
||||||
|
ISCCFGLIBS = ../../lib/isccfg/libisccfg.@A@
|
||||||
diff --git a/bin/dnssec-pkcs11/Makefile.in b/bin/dnssec-pkcs11/Makefile.in
|
diff --git a/bin/dnssec-pkcs11/Makefile.in b/bin/dnssec-pkcs11/Makefile.in
|
||||||
index 390aa0c..e59a118 100644
|
index ace0e5a..e0f6a00 100644
|
||||||
--- a/bin/dnssec-pkcs11/Makefile.in
|
--- a/bin/dnssec-pkcs11/Makefile.in
|
||||||
+++ b/bin/dnssec-pkcs11/Makefile.in
|
+++ b/bin/dnssec-pkcs11/Makefile.in
|
||||||
@@ -15,18 +15,18 @@ VERSION=@BIND9_VERSION@
|
@@ -15,18 +15,18 @@ VERSION=@BIND9_VERSION@
|
||||||
|
|
||||||
@BIND9_MAKE_INCLUDES@
|
@BIND9_MAKE_INCLUDES@
|
||||||
|
|
||||||
-CINCLUDES = ${DNS_INCLUDES} ${ISC_INCLUDES} @DST_OPENSSL_INC@
|
-CINCLUDES = ${DNS_INCLUDES} ${ISC_INCLUDES} ${ISCCFG_INCLUDES} \
|
||||||
+CINCLUDES = ${DNS_PKCS11_INCLUDES} ${ISC_PKCS11_INCLUDES}
|
+CINCLUDES = ${DNS_PKCS11_INCLUDES} ${ISC_INCLUDES} ${ISCCFG_INCLUDES} \
|
||||||
|
${OPENSSL_CFLAGS}
|
||||||
|
|
||||||
-CDEFINES = -DVERSION=\"${VERSION}\" @USE_PKCS11@ @PKCS11_ENGINE@ \
|
-CDEFINES = -DVERSION=\"${VERSION}\" -DNAMED_CONFFILE=\"${sysconfdir}/named.conf\"
|
||||||
- @CRYPTO@ -DPK11_LIB_LOCATION=\"@PKCS11_PROVIDER@\"
|
+CDEFINES = -DVERSION=\"${VERSION}\" -DNAMED_CONFFILE=\"${sysconfdir}/named.conf\" -DUSE_PKCS11=1
|
||||||
+CDEFINES = -DVERSION=\"${VERSION}\" @PKCS11_ENGINE@ \
|
|
||||||
+ @CRYPTO_PK11@ -DPK11_LIB_LOCATION=\"@PKCS11_PROVIDER@\"
|
|
||||||
CWARNINGS =
|
CWARNINGS =
|
||||||
|
|
||||||
-DNSLIBS = ../../lib/dns/libdns.@A@ ${MAXMINDDB_LIBS} @DNS_CRYPTO_LIBS@
|
-DNSLIBS = ../../lib/dns/libdns.@A@ @NO_LIBTOOL_DNSLIBS@
|
||||||
-ISCLIBS = ../../lib/isc/libisc.@A@
|
+DNSLIBS = ../../lib/dns-pkcs11/libdns-pkcs11.@A@ @NO_LIBTOOL_DNSLIBS@
|
||||||
-ISCNOSYMLIBS = ../../lib/isc/libisc-nosymtbl.@A@
|
ISCCFGLIBS = ../../lib/isccfg/libisccfg.@A@
|
||||||
+DNSLIBS = ../../lib/dns-pkcs11/libdns-pkcs11.@A@ ${MAXMINDDB_LIBS} @DNS_CRYPTO_LIBS@
|
ISCLIBS = ../../lib/isc/libisc.@A@ @NO_LIBTOOL_ISCLIBS@
|
||||||
+ISCLIBS = ../../lib/isc-pkcs11/libisc-pkcs11.@A@
|
ISCNOSYMLIBS = ../../lib/isc/libisc-nosymtbl.@A@ @NO_LIBTOOL_ISCLIBS@
|
||||||
+ISCNOSYMLIBS = ../../lib/isc-pkcs11/libisc-pkcs11-nosymtbl.@A@
|
|
||||||
|
|
||||||
-DNSDEPLIBS = ../../lib/dns/libdns.@A@
|
-DNSDEPLIBS = ../../lib/dns/libdns.@A@
|
||||||
-ISCDEPLIBS = ../../lib/isc/libisc.@A@
|
|
||||||
+DNSDEPLIBS = ../../lib/dns-pkcs11/libdns-pkcs11.@A@
|
+DNSDEPLIBS = ../../lib/dns-pkcs11/libdns-pkcs11.@A@
|
||||||
+ISCDEPLIBS = ../../lib/isc-pkcs11/libisc-pkcs11.@A@
|
ISCDEPLIBS = ../../lib/isc/libisc.@A@
|
||||||
|
ISCCFGDEPLIBS = ../../lib/isccfg/libisccfg.@A@
|
||||||
|
|
||||||
DEPLIBS = ${DNSDEPLIBS} ${ISCDEPLIBS}
|
@@ -36,12 +36,15 @@ LIBS = ${DNSLIBS} ${ISCCFGLIBS} ${ISCLIBS} @LIBS@
|
||||||
|
|
||||||
@@ -35,10 +35,10 @@ LIBS = ${DNSLIBS} ${ISCLIBS} @LIBS@
|
NOSYMLIBS = ${DNSLIBS} ${ISCCFGLIBS} ${ISCNOSYMLIBS} @LIBS@
|
||||||
NOSYMLIBS = ${DNSLIBS} ${ISCNOSYMLIBS} @LIBS@
|
|
||||||
|
|
||||||
|
+# Add suffix to all targets
|
||||||
|
+EXEEXT = -pkcs11@EXEEXT@
|
||||||
|
+
|
||||||
# Alphabetically
|
# Alphabetically
|
||||||
-TARGETS = dnssec-keygen@EXEEXT@ dnssec-signzone@EXEEXT@ \
|
-TARGETS = dnssec-cds@EXEEXT@ dnssec-dsfromkey@EXEEXT@ \
|
||||||
- dnssec-keyfromlabel@EXEEXT@ dnssec-dsfromkey@EXEEXT@ \
|
- dnssec-importkey@EXEEXT@ dnssec-keyfromlabel@EXEEXT@ \
|
||||||
- dnssec-revoke@EXEEXT@ dnssec-settime@EXEEXT@ \
|
- dnssec-keygen@EXEEXT@ dnssec-revoke@EXEEXT@ \
|
||||||
- dnssec-verify@EXEEXT@ dnssec-importkey@EXEEXT@
|
- dnssec-settime@EXEEXT@ dnssec-signzone@EXEEXT@ \
|
||||||
+TARGETS = dnssec-keygen-pkcs11@EXEEXT@ dnssec-signzone-pkcs11@EXEEXT@ \
|
- dnssec-verify@EXEEXT@
|
||||||
+ dnssec-keyfromlabel-pkcs11@EXEEXT@ dnssec-dsfromkey-pkcs11@EXEEXT@ \
|
+TARGETS = dnssec-cds${EXEEXT} dnssec-dsfromkey${EXEEXT} \
|
||||||
+ dnssec-revoke-pkcs11@EXEEXT@ dnssec-settime-pkcs11@EXEEXT@ \
|
+ dnssec-importkey${EXEEXT} dnssec-keyfromlabel${EXEEXT} \
|
||||||
+ dnssec-verify-pkcs11@EXEEXT@ dnssec-importkey-pkcs11@EXEEXT@
|
+ dnssec-keygen${EXEEXT} dnssec-revoke${EXEEXT} \
|
||||||
|
+ dnssec-settime${EXEEXT} dnssec-signzone${EXEEXT} \
|
||||||
|
+ dnssec-verify${EXEEXT}
|
||||||
|
|
||||||
OBJS = dnssectool.@O@
|
OBJS = dnssectool.@O@
|
||||||
|
|
||||||
@@ -59,15 +59,15 @@ MANOBJS = ${MANPAGES} ${HTMLPAGES}
|
@@ -52,19 +55,19 @@ SRCS = dnssec-cds.c dnssec-dsfromkey.c dnssec-importkey.c \
|
||||||
|
|
||||||
@BIND9_MAKE_RULES@
|
@BIND9_MAKE_RULES@
|
||||||
|
|
||||||
|
-dnssec-cds@EXEEXT@: dnssec-cds.@O@ ${OBJS} ${DEPLIBS}
|
||||||
|
+dnssec-cds-pkcs11@EXEEXT@: dnssec-cds.@O@ ${OBJS} ${DEPLIBS}
|
||||||
|
export BASEOBJS="dnssec-cds.@O@ ${OBJS}"; \
|
||||||
|
${FINALBUILDCMD}
|
||||||
|
|
||||||
-dnssec-dsfromkey@EXEEXT@: dnssec-dsfromkey.@O@ ${OBJS} ${DEPLIBS}
|
-dnssec-dsfromkey@EXEEXT@: dnssec-dsfromkey.@O@ ${OBJS} ${DEPLIBS}
|
||||||
+dnssec-dsfromkey-pkcs11@EXEEXT@: dnssec-dsfromkey.@O@ ${OBJS} ${DEPLIBS}
|
+dnssec-dsfromkey-pkcs11@EXEEXT@: dnssec-dsfromkey.@O@ ${OBJS} ${DEPLIBS}
|
||||||
export BASEOBJS="dnssec-dsfromkey.@O@ ${OBJS}"; \
|
export BASEOBJS="dnssec-dsfromkey.@O@ ${OBJS}"; \
|
||||||
@ -78,7 +117,7 @@ index 390aa0c..e59a118 100644
|
|||||||
export BASEOBJS="dnssec-keygen.@O@ ${OBJS}"; \
|
export BASEOBJS="dnssec-keygen.@O@ ${OBJS}"; \
|
||||||
${FINALBUILDCMD}
|
${FINALBUILDCMD}
|
||||||
|
|
||||||
@@ -75,7 +75,7 @@ dnssec-signzone.@O@: dnssec-signzone.c
|
@@ -72,7 +75,7 @@ dnssec-signzone.@O@: dnssec-signzone.c
|
||||||
${LIBTOOL_MODE_COMPILE} ${CC} ${ALL_CFLAGS} -DVERSION=\"${VERSION}\" \
|
${LIBTOOL_MODE_COMPILE} ${CC} ${ALL_CFLAGS} -DVERSION=\"${VERSION}\" \
|
||||||
-c ${srcdir}/dnssec-signzone.c
|
-c ${srcdir}/dnssec-signzone.c
|
||||||
|
|
||||||
@ -87,7 +126,7 @@ index 390aa0c..e59a118 100644
|
|||||||
export BASEOBJS="dnssec-signzone.@O@ ${OBJS}"; \
|
export BASEOBJS="dnssec-signzone.@O@ ${OBJS}"; \
|
||||||
${FINALBUILDCMD}
|
${FINALBUILDCMD}
|
||||||
|
|
||||||
@@ -83,19 +83,19 @@ dnssec-verify.@O@: dnssec-verify.c
|
@@ -80,19 +83,19 @@ dnssec-verify.@O@: dnssec-verify.c
|
||||||
${LIBTOOL_MODE_COMPILE} ${CC} ${ALL_CFLAGS} -DVERSION=\"${VERSION}\" \
|
${LIBTOOL_MODE_COMPILE} ${CC} ${ALL_CFLAGS} -DVERSION=\"${VERSION}\" \
|
||||||
-c ${srcdir}/dnssec-verify.c
|
-c ${srcdir}/dnssec-verify.c
|
||||||
|
|
||||||
@ -111,117 +150,70 @@ index 390aa0c..e59a118 100644
|
|||||||
${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} -o $@ \
|
${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} -o $@ \
|
||||||
dnssec-importkey.@O@ ${OBJS} ${LIBS}
|
dnssec-importkey.@O@ ${OBJS} ${LIBS}
|
||||||
|
|
||||||
@@ -106,16 +106,14 @@ docclean manclean maintainer-clean::
|
|
||||||
|
|
||||||
installdirs:
|
|
||||||
$(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${sbindir}
|
|
||||||
- $(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${mandir}/man8
|
|
||||||
|
|
||||||
install-man8: ${MANPAGES}
|
|
||||||
${INSTALL_DATA} $^ ${DESTDIR}${mandir}/man8
|
|
||||||
|
|
||||||
-install:: ${TARGETS} installdirs install-man8
|
|
||||||
+install:: ${TARGETS} installdirs
|
|
||||||
for t in ${TARGETS}; do ${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} $$t ${DESTDIR}${sbindir} || exit 1; done
|
|
||||||
|
|
||||||
uninstall::
|
|
||||||
- for m in ${MANPAGES}; do rm -f ${DESTDIR}${mandir}/man8/$$m || exit 1; done
|
|
||||||
for t in ${TARGETS}; do ${LIBTOOL_MODE_UNINSTALL} rm -f ${DESTDIR}${sbindir}/$$t || exit 1; done
|
|
||||||
|
|
||||||
clean distclean::
|
|
||||||
diff --git a/bin/dnssec/Makefile.in b/bin/dnssec/Makefile.in
|
|
||||||
index 390aa0c..851a008 100644
|
|
||||||
--- a/bin/dnssec/Makefile.in
|
|
||||||
+++ b/bin/dnssec/Makefile.in
|
|
||||||
@@ -17,7 +17,7 @@ VERSION=@BIND9_VERSION@
|
|
||||||
|
|
||||||
CINCLUDES = ${DNS_INCLUDES} ${ISC_INCLUDES} @DST_OPENSSL_INC@
|
|
||||||
|
|
||||||
-CDEFINES = -DVERSION=\"${VERSION}\" @USE_PKCS11@ @PKCS11_ENGINE@ \
|
|
||||||
+CDEFINES = -DVERSION=\"${VERSION}\" \
|
|
||||||
@CRYPTO@ -DPK11_LIB_LOCATION=\"@PKCS11_PROVIDER@\"
|
|
||||||
CWARNINGS =
|
|
||||||
|
|
||||||
diff --git a/bin/named-pkcs11/Makefile.in b/bin/named-pkcs11/Makefile.in
|
diff --git a/bin/named-pkcs11/Makefile.in b/bin/named-pkcs11/Makefile.in
|
||||||
index 277a0f5..52a6375 100644
|
index 98125dd..518a75f 100644
|
||||||
--- a/bin/named-pkcs11/Makefile.in
|
--- a/bin/named-pkcs11/Makefile.in
|
||||||
+++ b/bin/named-pkcs11/Makefile.in
|
+++ b/bin/named-pkcs11/Makefile.in
|
||||||
@@ -43,27 +43,27 @@ DLZDRIVER_INCLUDES = @DLZ_DRIVER_INCLUDES@
|
@@ -37,13 +37,14 @@ DBDRIVER_LIBS =
|
||||||
DLZDRIVER_LIBS = @DLZ_DRIVER_LIBS@
|
|
||||||
|
DLZ_DRIVER_DIR = ${top_srcdir}/contrib/dlz/drivers
|
||||||
|
|
||||||
|
-DLZDRIVER_OBJS = @DLZ_DRIVER_OBJS@
|
||||||
|
-DLZDRIVER_SRCS = @DLZ_DRIVER_SRCS@
|
||||||
|
-DLZDRIVER_INCLUDES = @DLZ_DRIVER_INCLUDES@
|
||||||
|
-DLZDRIVER_LIBS = @DLZ_DRIVER_LIBS@
|
||||||
|
+# Skip building on PKCS11 variant
|
||||||
|
+DLZDRIVER_OBJS =
|
||||||
|
+DLZDRIVER_SRCS =
|
||||||
|
+DLZDRIVER_INCLUDES =
|
||||||
|
+DLZDRIVER_LIBS =
|
||||||
|
|
||||||
CINCLUDES = -I${srcdir}/include -I${srcdir}/unix/include -I. \
|
CINCLUDES = -I${srcdir}/include -I${srcdir}/unix/include -I. \
|
||||||
- ${LWRES_INCLUDES} ${DNS_INCLUDES} ${BIND9_INCLUDES} \
|
- ${NS_INCLUDES} ${DNS_INCLUDES} \
|
||||||
- ${ISCCFG_INCLUDES} ${ISCCC_INCLUDES} ${ISC_INCLUDES} \
|
+ ${NS_PKCS11_INCLUDES} ${DNS_PKCS11_INCLUDES} \
|
||||||
+ ${LWRES_INCLUDES} ${DNS_PKCS11_INCLUDES} ${BIND9_INCLUDES} \
|
${BIND9_INCLUDES} ${ISCCFG_INCLUDES} ${ISCCC_INCLUDES} \
|
||||||
+ ${ISCCFG_INCLUDES} ${ISCCC_INCLUDES} ${ISC_PKCS11_INCLUDES} \
|
${ISC_INCLUDES} ${DLZDRIVER_INCLUDES} \
|
||||||
${DLZDRIVER_INCLUDES} ${DBDRIVER_INCLUDES} ${MAXMINDDB_CFLAGS} \
|
${DBDRIVER_INCLUDES} \
|
||||||
@DST_OPENSSL_INC@
|
@@ -56,24 +57,24 @@ CINCLUDES = -I${srcdir}/include -I${srcdir}/unix/include -I. \
|
||||||
|
${LIBXML2_CFLAGS} \
|
||||||
|
${MAXMINDDB_CFLAGS}
|
||||||
|
|
||||||
-CDEFINES = @CONTRIB_DLZ@ @USE_PKCS11@ @PKCS11_ENGINE@ @CRYPTO@
|
-CDEFINES = @CONTRIB_DLZ@
|
||||||
+CDEFINES = @USE_PKCS11@ @PKCS11_ENGINE@ @CRYPTO_PK11@ @USE_GSSAPI@
|
+CDEFINES =
|
||||||
|
|
||||||
CWARNINGS =
|
CWARNINGS =
|
||||||
|
|
||||||
-DNSLIBS = ../../lib/dns/libdns.@A@ ${MAXMINDDB_LIBS} @DNS_CRYPTO_LIBS@
|
-DNSLIBS = ../../lib/dns/libdns.@A@ @NO_LIBTOOL_DNSLIBS@
|
||||||
+DNSLIBS = ../../lib/dns-pkcs11/libdns-pkcs11.@A@ ${MAXMINDDB_LIBS} @DNS_CRYPTO_LIBS@
|
+DNSLIBS = ../../lib/dns-pkcs11/libdns-pkcs11.@A@ @NO_LIBTOOL_DNSLIBS@
|
||||||
ISCCFGLIBS = ../../lib/isccfg/libisccfg.@A@
|
ISCCFGLIBS = ../../lib/isccfg/libisccfg.@A@
|
||||||
ISCCCLIBS = ../../lib/isccc/libisccc.@A@
|
ISCCCLIBS = ../../lib/isccc/libisccc.@A@
|
||||||
-ISCLIBS = ../../lib/isc/libisc.@A@
|
ISCLIBS = ../../lib/isc/libisc.@A@ @NO_LIBTOOL_ISCLIBS@
|
||||||
-ISCNOSYMLIBS = ../../lib/isc/libisc-nosymtbl.@A@
|
ISCNOSYMLIBS = ../../lib/isc/libisc-nosymtbl.@A@ @NO_LIBTOOL_ISCLIBS@
|
||||||
+ISCLIBS = ../../lib/isc-pkcs11/libisc-pkcs11.@A@
|
|
||||||
+ISCNOSYMLIBS = ../../lib/isc-pkcs11/libisc-pkcs11-nosymtbl.@A@
|
|
||||||
LWRESLIBS = ../../lib/lwres/liblwres.@A@
|
|
||||||
BIND9LIBS = ../../lib/bind9/libbind9.@A@
|
BIND9LIBS = ../../lib/bind9/libbind9.@A@
|
||||||
|
-NSLIBS = ../../lib/ns/libns.@A@
|
||||||
|
+NSLIBS = ../../lib/ns-pkcs11/libns-pkcs11.@A@
|
||||||
|
|
||||||
-DNSDEPLIBS = ../../lib/dns/libdns.@A@
|
-DNSDEPLIBS = ../../lib/dns/libdns.@A@
|
||||||
+DNSDEPLIBS = ../../lib/dns-pkcs11/libdns-pkcs11.@A@
|
+DNSDEPLIBS = ../../lib/dns-pkcs11/libdns-pkcs11.@A@
|
||||||
ISCCFGDEPLIBS = ../../lib/isccfg/libisccfg.@A@
|
ISCCFGDEPLIBS = ../../lib/isccfg/libisccfg.@A@
|
||||||
ISCCCDEPLIBS = ../../lib/isccc/libisccc.@A@
|
ISCCCDEPLIBS = ../../lib/isccc/libisccc.@A@
|
||||||
-ISCDEPLIBS = ../../lib/isc/libisc.@A@
|
ISCDEPLIBS = ../../lib/isc/libisc.@A@
|
||||||
+ISCDEPLIBS = ../../lib/isc-pkcs11/libisc-pkcs11.@A@
|
|
||||||
LWRESDEPLIBS = ../../lib/lwres/liblwres.@A@
|
|
||||||
BIND9DEPLIBS = ../../lib/bind9/libbind9.@A@
|
BIND9DEPLIBS = ../../lib/bind9/libbind9.@A@
|
||||||
|
-NSDEPLIBS = ../../lib/ns/libns.@A@
|
||||||
|
+NSDEPLIBS = ../../lib/ns-pkcs11/libns-pkcs11.@A@
|
||||||
|
|
||||||
@@ -72,15 +72,15 @@ DEPLIBS = ${LWRESDEPLIBS} ${DNSDEPLIBS} ${BIND9DEPLIBS} \
|
DEPLIBS = ${NSDEPLIBS} ${DNSDEPLIBS} ${BIND9DEPLIBS} \
|
||||||
|
${ISCCFGDEPLIBS} ${ISCCCDEPLIBS} ${ISCDEPLIBS}
|
||||||
LIBS = ${LWRESLIBS} ${DNSLIBS} ${BIND9LIBS} \
|
@@ -93,7 +94,7 @@ NOSYMLIBS = ${NSLIBS} ${DNSLIBS} ${BIND9LIBS} \
|
||||||
${ISCCFGLIBS} ${ISCCCLIBS} ${ISCLIBS} \
|
|
||||||
- ${DLZDRIVER_LIBS} ${DBDRIVER_LIBS} @LIBS@
|
|
||||||
+ @LIBS@
|
|
||||||
|
|
||||||
NOSYMLIBS = ${LWRESLIBS} ${DNSLIBS} ${BIND9LIBS} \
|
|
||||||
${ISCCFGLIBS} ${ISCCCLIBS} ${ISCNOSYMLIBS} \
|
|
||||||
- ${DLZDRIVER_LIBS} ${DBDRIVER_LIBS} @LIBS@
|
|
||||||
+ @LIBS@
|
|
||||||
|
|
||||||
SUBDIRS = unix
|
SUBDIRS = unix
|
||||||
|
|
||||||
-TARGETS = named@EXEEXT@ lwresd@EXEEXT@
|
-TARGETS = named@EXEEXT@ feature-test@EXEEXT@
|
||||||
+TARGETS = named-pkcs11@EXEEXT@
|
+TARGETS = named-pkcs11@EXEEXT@ feature-test-pkcs11@EXEEXT@
|
||||||
|
|
||||||
GEOIPLINKOBJS = geoip.@O@
|
|
||||||
GEOIP2LINKOBJS = geoip.@O@
|
GEOIP2LINKOBJS = geoip.@O@
|
||||||
@@ -94,8 +94,7 @@ OBJS = builtin.@O@ client.@O@ config.@O@ control.@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}
|
|
||||||
+ lwdgnba.@O@ lwdgrbn.@O@ lwdnoop.@O@ lwsearch.@O@
|
|
||||||
|
|
||||||
UOBJS = unix/os.@O@ unix/dlz_dlopen_driver.@O@
|
@@ -151,7 +152,7 @@ server.@O@: server.c
|
||||||
|
|
||||||
@@ -113,8 +112,7 @@ SRCS = builtin.c client.c config.c control.c \
|
|
||||||
tkeyconf.c tsigconf.c update.c xfrout.c \
|
|
||||||
zoneconf.c \
|
|
||||||
lwaddr.c lwresd.c lwdclient.c lwderror.c lwdgabn.c \
|
|
||||||
- lwdgnba.c lwdgrbn.c lwdnoop.c lwsearch.c \
|
|
||||||
- ${DLZDRIVER_SRCS} ${DBDRIVER_SRCS}
|
|
||||||
+ lwdgnba.c lwdgrbn.c lwdnoop.c lwsearch.c
|
|
||||||
|
|
||||||
MANPAGES = named.8 lwresd.8 named.conf.5
|
|
||||||
|
|
||||||
@@ -154,14 +152,14 @@ server.@O@: server.c
|
|
||||||
-DPRODUCT=\"${PRODUCT}\" \
|
-DPRODUCT=\"${PRODUCT}\" \
|
||||||
-DVERSION=\"${VERSION}\" -c ${srcdir}/server.c
|
-DVERSION=\"${VERSION}\" -c ${srcdir}/server.c
|
||||||
|
|
||||||
@ -230,77 +222,38 @@ index 277a0f5..52a6375 100644
|
|||||||
export MAKE_SYMTABLE="yes"; \
|
export MAKE_SYMTABLE="yes"; \
|
||||||
export BASEOBJS="${OBJS} ${UOBJS}"; \
|
export BASEOBJS="${OBJS} ${UOBJS}"; \
|
||||||
${FINALBUILDCMD}
|
${FINALBUILDCMD}
|
||||||
|
@@ -161,7 +162,7 @@ feature-test.@O@: ${top_srcdir}/bin/tests/system/feature-test.c
|
||||||
|
${LIBTOOL_MODE_COMPILE} ${CC} ${ALL_CFLAGS} \
|
||||||
|
-c ${top_srcdir}/bin/tests/system/feature-test.c
|
||||||
|
|
||||||
-lwresd@EXEEXT@: named@EXEEXT@
|
-feature-test@EXEEXT@: feature-test.@O@
|
||||||
+lwresd@EXEEXT@: named-pkcs11@EXEEXT@
|
+feature-test-pkcs11@EXEEXT@: feature-test.@O@
|
||||||
rm -f lwresd@EXEEXT@
|
${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} \
|
||||||
- @LN@ named@EXEEXT@ lwresd@EXEEXT@
|
-o $@ feature-test.@O@ ${ISCLIBS} ${LIBS}
|
||||||
+ @LN@ named-pkcs11@EXEEXT@ lwresd@EXEEXT@
|
|
||||||
|
|
||||||
doc man:: ${MANOBJS}
|
@@ -180,11 +181,11 @@ statschannel.@O@: bind9.xsl.h
|
||||||
|
installdirs:
|
||||||
|
$(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${sbindir}
|
||||||
|
|
||||||
@@ -192,16 +190,11 @@ install-man8: named.8 lwresd.8
|
-install:: named@EXEEXT@ installdirs
|
||||||
|
|
||||||
install-man: install-man5 install-man8
|
|
||||||
|
|
||||||
-install:: named@EXEEXT@ lwresd@EXEEXT@ installdirs install-man
|
|
||||||
- ${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} named@EXEEXT@ ${DESTDIR}${sbindir}
|
- ${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} named@EXEEXT@ ${DESTDIR}${sbindir}
|
||||||
- (cd ${DESTDIR}${sbindir}; rm -f lwresd@EXEEXT@; @LN@ named@EXEEXT@ lwresd@EXEEXT@)
|
|
||||||
+install:: named-pkcs11@EXEEXT@ installdirs
|
+install:: named-pkcs11@EXEEXT@ installdirs
|
||||||
+ ${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} named-pkcs11@EXEEXT@ ${DESTDIR}${sbindir}
|
+ ${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} named-pkcs11@EXEEXT@ ${DESTDIR}${sbindir}
|
||||||
|
|
||||||
uninstall::
|
uninstall::
|
||||||
- rm -f ${DESTDIR}${mandir}/man5/named.conf.5
|
|
||||||
- rm -f ${DESTDIR}${mandir}/man8/lwresd.8
|
|
||||||
- rm -f ${DESTDIR}${mandir}/man8/named.8
|
|
||||||
- rm -f ${DESTDIR}${sbindir}/lwresd@EXEEXT@
|
|
||||||
- ${LIBTOOL_MODE_UNINSTALL} rm -f ${DESTDIR}${sbindir}/named@EXEEXT@
|
- ${LIBTOOL_MODE_UNINSTALL} rm -f ${DESTDIR}${sbindir}/named@EXEEXT@
|
||||||
+ ${LIBTOOL_MODE_UNINSTALL} rm -f ${DESTDIR}${sbindir}/named-pkcs11@EXEEXT@
|
+ ${LIBTOOL_MODE_UNINSTALL} rm -f ${DESTDIR}${sbindir}/named-pkcs11@EXEEXT@
|
||||||
|
|
||||||
@DLZ_DRIVER_RULES@
|
@DLZ_DRIVER_RULES@
|
||||||
|
|
||||||
diff --git a/bin/named/Makefile.in b/bin/named/Makefile.in
|
|
||||||
index 277a0f5..0e00885 100644
|
|
||||||
--- a/bin/named/Makefile.in
|
|
||||||
+++ b/bin/named/Makefile.in
|
|
||||||
@@ -48,7 +48,7 @@ CINCLUDES = -I${srcdir}/include -I${srcdir}/unix/include -I. \
|
|
||||||
${DLZDRIVER_INCLUDES} ${DBDRIVER_INCLUDES} ${MAXMINDDB_CFLAGS} \
|
|
||||||
@DST_OPENSSL_INC@
|
|
||||||
|
|
||||||
-CDEFINES = @CONTRIB_DLZ@ @USE_PKCS11@ @PKCS11_ENGINE@ @CRYPTO@
|
|
||||||
+CDEFINES = @CONTRIB_DLZ@ @USE_GSSAPI@ @CRYPTO@
|
|
||||||
|
|
||||||
CWARNINGS =
|
|
||||||
|
|
||||||
diff --git a/bin/pkcs11/Makefile.in b/bin/pkcs11/Makefile.in
|
|
||||||
index 2c19e7e..8223d5e 100644
|
|
||||||
--- a/bin/pkcs11/Makefile.in
|
|
||||||
+++ b/bin/pkcs11/Makefile.in
|
|
||||||
@@ -13,13 +13,13 @@ top_srcdir = @top_srcdir@
|
|
||||||
|
|
||||||
@BIND9_MAKE_INCLUDES@
|
|
||||||
|
|
||||||
-CINCLUDES = ${ISC_INCLUDES}
|
|
||||||
+CINCLUDES = ${ISC_PKCS11_INCLUDES}
|
|
||||||
|
|
||||||
CDEFINES =
|
|
||||||
|
|
||||||
-ISCLIBS = ../../lib/isc/libisc.@A@ @ISC_OPENSSL_LIBS@
|
|
||||||
+ISCLIBS = ../../lib/isc-pkcs11/libisc-pkcs11.@A@ @ISC_OPENSSL_LIBS@
|
|
||||||
|
|
||||||
-ISCDEPLIBS = ../../lib/isc/libisc.@A@
|
|
||||||
+ISCDEPLIBS = ../../lib/isc-pkcs11/libisc-pkcs11.@A@
|
|
||||||
|
|
||||||
DEPLIBS = ${ISCDEPLIBS}
|
|
||||||
|
|
||||||
diff --git a/configure.ac b/configure.ac
|
diff --git a/configure.ac b/configure.ac
|
||||||
index 83cad4a..e1e1a32 100644
|
index 032228b..64e3da0 100644
|
||||||
--- a/configure.ac
|
--- a/configure.ac
|
||||||
+++ b/configure.ac
|
+++ b/configure.ac
|
||||||
@@ -1178,12 +1178,14 @@ AC_SUBST(USE_GSSAPI)
|
@@ -1251,12 +1251,14 @@ AC_SUBST(USE_GSSAPI)
|
||||||
AC_SUBST(DST_GSSAPI_INC)
|
AC_SUBST(DST_GSSAPI_INC)
|
||||||
AC_SUBST(DNS_GSSAPI_LIBS)
|
AC_SUBST(DNS_GSSAPI_LIBS)
|
||||||
DNS_CRYPTO_LIBS="$DNS_GSSAPI_LIBS $DNS_CRYPTO_LIBS"
|
DNS_CRYPTO_LIBS="$DNS_GSSAPI_LIBS"
|
||||||
+DNS_CRYPTO_PK11_LIBS="$DNS_GSSAPI_LIBS $DNS_CRYPTO_PK11_LIBS"
|
+DNS_CRYPTO_PK11_LIBS="$DNS_GSSAPI_LIBS $DNS_CRYPTO_PK11_LIBS"
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -311,86 +264,35 @@ index 83cad4a..e1e1a32 100644
|
|||||||
+AC_SUBST(DNS_CRYPTO_PK11_LIBS)
|
+AC_SUBST(DNS_CRYPTO_PK11_LIBS)
|
||||||
|
|
||||||
#
|
#
|
||||||
# was --with-randomdev specified?
|
# was --with-lmdb specified?
|
||||||
@@ -1556,12 +1558,12 @@ AC_ARG_ENABLE(openssl-hash,
|
@@ -2327,6 +2329,8 @@ AC_SUBST(BIND9_DNS_BUILDINCLUDE)
|
||||||
AC_MSG_CHECKING(for OpenSSL library)
|
AC_SUBST(BIND9_NS_BUILDINCLUDE)
|
||||||
OPENSSL_WARNING=
|
AC_SUBST(BIND9_BIND9_BUILDINCLUDE)
|
||||||
openssldirs="/usr /usr/local /usr/local/ssl /opt/local /usr/pkg /usr/sfw"
|
AC_SUBST(BIND9_IRS_BUILDINCLUDE)
|
||||||
-if test "yes" = "$want_native_pkcs11"
|
+AC_SUBST(BIND9_DNS_PKCS11_BUILDINCLUDE)
|
||||||
-then
|
+AC_SUBST(BIND9_NS_PKCS11_BUILDINCLUDE)
|
||||||
- use_openssl="native_pkcs11"
|
if test "X$srcdir" != "X"; then
|
||||||
- want_openssl_hash="no"
|
BIND9_ISC_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/isc/include"
|
||||||
- AC_MSG_RESULT(use of native PKCS11 instead)
|
BIND9_ISCCC_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/isccc/include"
|
||||||
-fi
|
@@ -2335,6 +2339,8 @@ if test "X$srcdir" != "X"; then
|
||||||
+#if test "yes" = "$want_native_pkcs11"
|
BIND9_NS_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/ns/include"
|
||||||
+#then
|
BIND9_BIND9_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/bind9/include"
|
||||||
+# use_openssl="native_pkcs11"
|
BIND9_IRS_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/irs/include"
|
||||||
+# want_openssl_hash="no"
|
+ BIND9_DNS_PKCS11_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/dns-pkcs11/include"
|
||||||
+# AC_MSG_RESULT(use of native PKCS11 instead)
|
+ BIND9_NS_PKCS11_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/ns-pkcs11/include"
|
||||||
+#fi
|
else
|
||||||
|
BIND9_ISC_BUILDINCLUDE=""
|
||||||
if test "auto" = "$use_openssl"
|
BIND9_ISCCC_BUILDINCLUDE=""
|
||||||
then
|
@@ -2343,6 +2349,8 @@ else
|
||||||
@@ -1574,6 +1576,7 @@ then
|
BIND9_NS_BUILDINCLUDE=""
|
||||||
|
BIND9_BIND9_BUILDINCLUDE=""
|
||||||
|
BIND9_IRS_BUILDINCLUDE=""
|
||||||
|
+ BIND9_DNS_PKCS11_BUILDINCLUDE=""
|
||||||
|
+ BIND9_NS_PKCS11_BUILDINCLUDE=""
|
||||||
fi
|
fi
|
||||||
done
|
|
||||||
fi
|
|
||||||
+CRYPTO_PK11=""
|
|
||||||
OPENSSL_ECDSA=""
|
|
||||||
OPENSSL_GOST=""
|
|
||||||
OPENSSL_ED25519=""
|
|
||||||
@@ -1595,11 +1598,10 @@ case "$with_gost" in
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
-case "$use_openssl" in
|
AC_SUBST_FILE(BIND9_MAKE_INCLUDES)
|
||||||
- native_pkcs11)
|
@@ -2798,8 +2806,11 @@ AC_CONFIG_FILES([
|
||||||
- AC_MSG_RESULT(disabled because of native PKCS11)
|
|
||||||
+if test "$want_native_pkcs11" = "yes"
|
|
||||||
+then
|
|
||||||
DST_OPENSSL_INC=""
|
|
||||||
- CRYPTO="-DPKCS11CRYPTO"
|
|
||||||
+ CRYPTO_PK11="-DPKCS11CRYPTO"
|
|
||||||
CRYPTOLIB="pkcs11"
|
|
||||||
OPENSSLECDSALINKOBJS=""
|
|
||||||
OPENSSLECDSALINKSRCS=""
|
|
||||||
@@ -1609,7 +1611,9 @@ case "$use_openssl" in
|
|
||||||
OPENSSLGOSTLINKSRCS=""
|
|
||||||
OPENSSLLINKOBJS=""
|
|
||||||
OPENSSLLINKSRCS=""
|
|
||||||
- ;;
|
|
||||||
+fi
|
|
||||||
+
|
|
||||||
+case "$use_openssl" in
|
|
||||||
no)
|
|
||||||
AC_MSG_RESULT(no)
|
|
||||||
DST_OPENSSL_INC=""
|
|
||||||
@@ -1641,7 +1645,7 @@ case "$use_openssl" in
|
|
||||||
If you do not want OpenSSL, use --without-openssl])
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
- if test "yes" = "$want_native_pkcs11"
|
|
||||||
+ if false # test "yes" = "$want_native_pkcs11"
|
|
||||||
then
|
|
||||||
AC_MSG_RESULT()
|
|
||||||
AC_MSG_ERROR([OpenSSL and native PKCS11 cannot be used together.])
|
|
||||||
@@ -2077,6 +2081,7 @@ AC_SUBST(OPENSSL_ED25519)
|
|
||||||
AC_SUBST(OPENSSL_GOST)
|
|
||||||
|
|
||||||
DNS_CRYPTO_LIBS="$DNS_CRYPTO_LIBS $DST_OPENSSL_LIBS"
|
|
||||||
+DNS_CRYPTO_PK11_LIBS="$DNS_CRYPTO_LIBS"
|
|
||||||
|
|
||||||
ISC_PLATFORM_WANTAES="#undef ISC_PLATFORM_WANTAES"
|
|
||||||
if test "yes" = "$with_aes"
|
|
||||||
@@ -2363,6 +2368,7 @@ esac
|
|
||||||
AC_SUBST(PKCS11LINKOBJS)
|
|
||||||
AC_SUBST(PKCS11LINKSRCS)
|
|
||||||
AC_SUBST(CRYPTO)
|
|
||||||
+AC_SUBST(CRYPTO_PK11)
|
|
||||||
AC_SUBST(PKCS11_ECDSA)
|
|
||||||
AC_SUBST(PKCS11_GOST)
|
|
||||||
AC_SUBST(PKCS11_ED25519)
|
|
||||||
@@ -5491,8 +5497,11 @@ AC_CONFIG_FILES([
|
|
||||||
bin/delv/Makefile
|
bin/delv/Makefile
|
||||||
bin/dig/Makefile
|
bin/dig/Makefile
|
||||||
bin/dnssec/Makefile
|
bin/dnssec/Makefile
|
||||||
@ -401,8 +303,8 @@ index 83cad4a..e1e1a32 100644
|
|||||||
+ bin/named-pkcs11/unix/Makefile
|
+ bin/named-pkcs11/unix/Makefile
|
||||||
bin/nsupdate/Makefile
|
bin/nsupdate/Makefile
|
||||||
bin/pkcs11/Makefile
|
bin/pkcs11/Makefile
|
||||||
bin/python/Makefile
|
bin/plugins/Makefile
|
||||||
@@ -5565,6 +5574,10 @@ AC_CONFIG_FILES([
|
@@ -2861,6 +2872,10 @@ AC_CONFIG_FILES([
|
||||||
lib/dns/include/dns/Makefile
|
lib/dns/include/dns/Makefile
|
||||||
lib/dns/include/dst/Makefile
|
lib/dns/include/dst/Makefile
|
||||||
lib/dns/tests/Makefile
|
lib/dns/tests/Makefile
|
||||||
@ -413,73 +315,54 @@ index 83cad4a..e1e1a32 100644
|
|||||||
lib/irs/Makefile
|
lib/irs/Makefile
|
||||||
lib/irs/include/Makefile
|
lib/irs/include/Makefile
|
||||||
lib/irs/include/irs/Makefile
|
lib/irs/include/irs/Makefile
|
||||||
@@ -5589,6 +5602,24 @@ AC_CONFIG_FILES([
|
@@ -2893,6 +2908,10 @@ AC_CONFIG_FILES([
|
||||||
lib/isc/unix/include/Makefile
|
lib/ns/include/Makefile
|
||||||
lib/isc/unix/include/isc/Makefile
|
lib/ns/include/ns/Makefile
|
||||||
lib/isc/unix/include/pkcs11/Makefile
|
lib/ns/tests/Makefile
|
||||||
+ lib/isc-pkcs11/$arch/Makefile
|
+ lib/ns-pkcs11/Makefile
|
||||||
+ lib/isc-pkcs11/$arch/include/Makefile
|
+ lib/ns-pkcs11/include/Makefile
|
||||||
+ lib/isc-pkcs11/$arch/include/isc/Makefile
|
+ lib/ns-pkcs11/include/ns/Makefile
|
||||||
+ lib/isc-pkcs11/$thread_dir/Makefile
|
+ lib/ns-pkcs11/tests/Makefile
|
||||||
+ lib/isc-pkcs11/$thread_dir/include/Makefile
|
make/Makefile
|
||||||
+ lib/isc-pkcs11/$thread_dir/include/isc/Makefile
|
make/mkdep
|
||||||
+ lib/isc-pkcs11/Makefile
|
unit/unittest.sh
|
||||||
+ lib/isc-pkcs11/include/Makefile
|
|
||||||
+ lib/isc-pkcs11/include/isc/Makefile
|
|
||||||
+ lib/isc-pkcs11/include/isc/platform.h
|
|
||||||
+ lib/isc-pkcs11/include/pk11/Makefile
|
|
||||||
+ lib/isc-pkcs11/include/pkcs11/Makefile
|
|
||||||
+ lib/isc-pkcs11/tests/Makefile
|
|
||||||
+ lib/isc-pkcs11/nls/Makefile
|
|
||||||
+ lib/isc-pkcs11/unix/Makefile
|
|
||||||
+ lib/isc-pkcs11/unix/include/Makefile
|
|
||||||
+ lib/isc-pkcs11/unix/include/isc/Makefile
|
|
||||||
+ lib/isc-pkcs11/unix/include/pkcs11/Makefile
|
|
||||||
lib/isccc/Makefile
|
|
||||||
lib/isccc/include/Makefile
|
|
||||||
lib/isccc/include/isccc/Makefile
|
|
||||||
diff --git a/lib/Makefile.in b/lib/Makefile.in
|
diff --git a/lib/Makefile.in b/lib/Makefile.in
|
||||||
index f089bea..3ed939b 100644
|
index 833964e..058ba2f 100644
|
||||||
--- a/lib/Makefile.in
|
--- a/lib/Makefile.in
|
||||||
+++ b/lib/Makefile.in
|
+++ b/lib/Makefile.in
|
||||||
@@ -15,7 +15,7 @@ top_srcdir = @top_srcdir@
|
@@ -15,7 +15,7 @@ top_srcdir = @top_srcdir@
|
||||||
# Attempt to disable parallel processing.
|
# Attempt to disable parallel processing.
|
||||||
.NOTPARALLEL:
|
.NOTPARALLEL:
|
||||||
.NO_PARALLEL:
|
.NO_PARALLEL:
|
||||||
-SUBDIRS = isc isccc dns isccfg bind9 lwres irs samples
|
-SUBDIRS = isc isccc dns ns isccfg bind9 irs
|
||||||
+SUBDIRS = isc isc-pkcs11 isccc dns dns-pkcs11 isccfg bind9 lwres irs samples
|
+SUBDIRS = isc isccc dns dns-pkcs11 ns ns-pkcs11 isccfg bind9 irs
|
||||||
TARGETS =
|
TARGETS =
|
||||||
|
|
||||||
@BIND9_MAKE_RULES@
|
@BIND9_MAKE_RULES@
|
||||||
diff --git a/lib/dns-pkcs11/Makefile.in b/lib/dns-pkcs11/Makefile.in
|
diff --git a/lib/dns-pkcs11/Makefile.in b/lib/dns-pkcs11/Makefile.in
|
||||||
index 1d0f5df..98c9ba0 100644
|
index 58bda3c..d6a45df 100644
|
||||||
--- a/lib/dns-pkcs11/Makefile.in
|
--- a/lib/dns-pkcs11/Makefile.in
|
||||||
+++ b/lib/dns-pkcs11/Makefile.in
|
+++ b/lib/dns-pkcs11/Makefile.in
|
||||||
@@ -24,17 +24,17 @@ VERSION=@BIND9_VERSION@
|
@@ -22,7 +22,7 @@ VERSION=@BIND9_VERSION@
|
||||||
|
|
||||||
@BIND9_MAKE_INCLUDES@
|
@BIND9_MAKE_INCLUDES@
|
||||||
|
|
||||||
-CINCLUDES = -I. -I${top_srcdir}/lib/dns -Iinclude ${DNS_INCLUDES} \
|
-CINCLUDES = -I. -I${top_srcdir}/lib/dns -Iinclude ${DNS_INCLUDES} \
|
||||||
- ${ISC_INCLUDES} ${MAXMINDDB_CFLAGS} \
|
|
||||||
+CINCLUDES = -I. -I${top_srcdir}/lib/dns-pkcs11 -Iinclude ${DNS_PKCS11_INCLUDES} \
|
+CINCLUDES = -I. -I${top_srcdir}/lib/dns-pkcs11 -Iinclude ${DNS_PKCS11_INCLUDES} \
|
||||||
+ ${ISC_PKCS11_INCLUDES} ${MAXMINDDB_CFLAGS} \
|
${ISC_INCLUDES} \
|
||||||
@DST_OPENSSL_INC@ @DST_GSSAPI_INC@
|
${FSTRM_CFLAGS} \
|
||||||
|
${OPENSSL_CFLAGS} @DST_GSSAPI_INC@ \
|
||||||
|
@@ -32,7 +32,7 @@ CINCLUDES = -I. -I${top_srcdir}/lib/dns -Iinclude ${DNS_INCLUDES} \
|
||||||
|
${LMDB_CFLAGS} \
|
||||||
|
${MAXMINDDB_CFLAGS}
|
||||||
|
|
||||||
-CDEFINES = -DUSE_MD5 @CRYPTO@ @USE_GSSAPI@
|
-CDEFINES = @USE_GSSAPI@
|
||||||
+CDEFINES = -DUSE_MD5 @CRYPTO_PK11@ @USE_GSSAPI@
|
+CDEFINES = @USE_GSSAPI@ @USE_PKCS11@
|
||||||
|
|
||||||
CWARNINGS =
|
CWARNINGS =
|
||||||
|
|
||||||
-ISCLIBS = ../../lib/isc/libisc.@A@
|
@@ -135,15 +135,15 @@ version.@O@: version.c
|
||||||
+ISCLIBS = ../../lib/isc-pkcs11/libisc-pkcs11.@A@
|
-DMAPAPI=\"${MAPAPI}\" \
|
||||||
|
|
||||||
-ISCDEPLIBS = ../../lib/isc/libisc.@A@
|
|
||||||
+ISCDEPLIBS = ../../lib/isc-pkcs11/libisc-pkcs11.@A@
|
|
||||||
|
|
||||||
LIBS = ${MAXMINDDB_LIBS} @LIBS@
|
|
||||||
|
|
||||||
@@ -148,15 +148,15 @@ version.@O@: version.c
|
|
||||||
-DLIBAGE=${LIBAGE} \
|
|
||||||
-c ${srcdir}/version.c
|
-c ${srcdir}/version.c
|
||||||
|
|
||||||
-libdns.@SA@: ${OBJS}
|
-libdns.@SA@: ${OBJS}
|
||||||
@ -492,13 +375,13 @@ index 1d0f5df..98c9ba0 100644
|
|||||||
${LIBTOOL_MODE_LINK} \
|
${LIBTOOL_MODE_LINK} \
|
||||||
- ${CC} ${ALL_CFLAGS} ${LDFLAGS} -o libdns.la -rpath ${libdir} \
|
- ${CC} ${ALL_CFLAGS} ${LDFLAGS} -o libdns.la -rpath ${libdir} \
|
||||||
+ ${CC} ${ALL_CFLAGS} ${LDFLAGS} -o libdns-pkcs11.la -rpath ${libdir} \
|
+ ${CC} ${ALL_CFLAGS} ${LDFLAGS} -o libdns-pkcs11.la -rpath ${libdir} \
|
||||||
-version-info ${LIBINTERFACE}:${LIBREVISION}:${LIBAGE} \
|
-release "${VERSION}" \
|
||||||
- ${OBJS} ${ISCLIBS} @DNS_CRYPTO_LIBS@ ${LIBS}
|
- ${OBJS} ${ISCLIBS} @DNS_CRYPTO_LIBS@ ${LIBS}
|
||||||
+ ${OBJS} ${ISCLIBS} @DNS_CRYPTO_PK11_LIBS@ ${LIBS}
|
+ ${OBJS} ${ISCLIBS} @DNS_CRYPTO_PK11_LIBS@ ${LIBS}
|
||||||
|
|
||||||
include: gen
|
include: gen
|
||||||
${MAKE} include/dns/enumtype.h
|
${MAKE} include/dns/enumtype.h
|
||||||
@@ -187,22 +187,22 @@ gen: gen.c
|
@@ -174,22 +174,22 @@ gen: gen.c
|
||||||
${BUILD_CPPFLAGS} ${BUILD_LDFLAGS} -o $@ ${srcdir}/gen.c \
|
${BUILD_CPPFLAGS} ${BUILD_LDFLAGS} -o $@ ${srcdir}/gen.c \
|
||||||
${BUILD_LIBS} ${LFS_LIBS}
|
${BUILD_LIBS} ${LFS_LIBS}
|
||||||
|
|
||||||
@ -526,89 +409,142 @@ index 1d0f5df..98c9ba0 100644
|
|||||||
rm -f gen code.h include/dns/enumtype.h include/dns/enumclass.h
|
rm -f gen code.h include/dns/enumtype.h include/dns/enumclass.h
|
||||||
rm -f include/dns/rdatastruct.h
|
rm -f include/dns/rdatastruct.h
|
||||||
rm -f dnstap.pb-c.c dnstap.pb-c.h
|
rm -f dnstap.pb-c.c dnstap.pb-c.h
|
||||||
diff --git a/lib/isc-pkcs11/Makefile.in b/lib/isc-pkcs11/Makefile.in
|
diff --git a/lib/dns-pkcs11/tests/Makefile.in b/lib/dns-pkcs11/tests/Makefile.in
|
||||||
index 7e3e9ce..58d7466 100644
|
index 3bb5e01..c96fe7d 100644
|
||||||
--- a/lib/isc-pkcs11/Makefile.in
|
--- a/lib/dns-pkcs11/tests/Makefile.in
|
||||||
+++ b/lib/isc-pkcs11/Makefile.in
|
+++ b/lib/dns-pkcs11/tests/Makefile.in
|
||||||
@@ -23,8 +23,8 @@ CINCLUDES = -I${srcdir}/unix/include \
|
@@ -15,15 +15,15 @@ VERSION=@BIND9_VERSION@
|
||||||
-I${srcdir}/@ISC_THREAD_DIR@/include \
|
|
||||||
-I${srcdir}/@ISC_ARCH_DIR@/include \
|
@BIND9_MAKE_INCLUDES@
|
||||||
-I./include \
|
|
||||||
- -I${srcdir}/include ${DNS_INCLUDES} @ISC_OPENSSL_INC@
|
-CINCLUDES = -I. -Iinclude ${DNS_INCLUDES} ${ISC_INCLUDES} \
|
||||||
-CDEFINES = @CRYPTO@ -DPK11_LIB_LOCATION=\"${PROVIDER}\"
|
+CINCLUDES = -I. -Iinclude ${DNS_PKCS11_INCLUDES} ${ISC_INCLUDES} \
|
||||||
+ -I${srcdir}/include ${DNS_PKCS11_INCLUDES}
|
${FSTRM_CFLAGS} ${OPENSSL_CFLAGS} \
|
||||||
+CDEFINES = @CRYPTO_PK11@ -DPK11_LIB_LOCATION=\"${PROVIDER}\"
|
${PROTOBUF_C_CFLAGS} ${MAXMINDDB_CFLAGS} @CMOCKA_CFLAGS@
|
||||||
|
-CDEFINES = -DTESTS="\"${top_builddir}/lib/dns/tests/\""
|
||||||
|
+CDEFINES = @USE_PKCS11@ -DTESTS="\"${top_builddir}/lib/dns-pkcs11/tests/\""
|
||||||
|
|
||||||
|
ISCLIBS = ../../isc/libisc.@A@ @NO_LIBTOOL_ISCLIBS@
|
||||||
|
ISCDEPLIBS = ../../isc/libisc.@A@
|
||||||
|
-DNSLIBS = ../libdns.@A@ @NO_LIBTOOL_DNSLIBS@
|
||||||
|
-DNSDEPLIBS = ../libdns.@A@
|
||||||
|
+DNSLIBS = ../libdns-pkcs11.@A@ @NO_LIBTOOL_DNSLIBS@
|
||||||
|
+DNSDEPLIBS = ../libdns-pkcs11.@A@
|
||||||
|
|
||||||
|
LIBS = @LIBS@ @CMOCKA_LIBS@
|
||||||
|
|
||||||
|
diff --git a/lib/ns-pkcs11/Makefile.in b/lib/ns-pkcs11/Makefile.in
|
||||||
|
index bc683ce..7a9d2f2 100644
|
||||||
|
--- a/lib/ns-pkcs11/Makefile.in
|
||||||
|
+++ b/lib/ns-pkcs11/Makefile.in
|
||||||
|
@@ -16,12 +16,12 @@ VERSION=@BIND9_VERSION@
|
||||||
|
|
||||||
|
@BIND9_MAKE_INCLUDES@
|
||||||
|
|
||||||
|
-CINCLUDES = -I. -I${top_srcdir}/lib/ns -Iinclude \
|
||||||
|
- ${NS_INCLUDES} ${DNS_INCLUDES} ${ISC_INCLUDES} \
|
||||||
|
+CINCLUDES = -I. -I${top_srcdir}/lib/ns-pkcs11 -Iinclude \
|
||||||
|
+ ${NS_PKCS11_INCLUDES} ${DNS_PKCS11_INCLUDES} ${ISC_INCLUDES} \
|
||||||
|
${OPENSSL_CFLAGS} @DST_GSSAPI_INC@ \
|
||||||
|
${FSTRM_CFLAGS}
|
||||||
|
|
||||||
|
-CDEFINES = -DNAMED_PLUGINDIR=\"${plugindir}\"
|
||||||
|
+CDEFINES = @USE_PKCS11@ -DNAMED_PLUGINDIR=\"${plugindir}\"
|
||||||
|
|
||||||
CWARNINGS =
|
CWARNINGS =
|
||||||
|
|
||||||
# Alphabetically
|
@@ -29,9 +29,9 @@ ISCLIBS = ../../lib/isc/libisc.@A@
|
||||||
@@ -107,40 +107,40 @@ version.@O@: version.c
|
|
||||||
-DLIBAGE=${LIBAGE} \
|
ISCDEPLIBS = ../../lib/isc/libisc.@A@
|
||||||
|
|
||||||
|
-DNSLIBS = ../../lib/dns/libdns.@A@ @NO_LIBTOOL_DNSLIBS@
|
||||||
|
+DNSLIBS = ../../lib/dns-pkcs11/libdns-pkcs11.@A@ @NO_LIBTOOL_DNSLIBS@
|
||||||
|
|
||||||
|
-DNSDEPLIBS = ../../lib/dns/libdns.@A@
|
||||||
|
+DNSDEPLIBS = ../../lib/dns-pkcs11/libdns-pkcs11.@A@
|
||||||
|
|
||||||
|
LIBS = @LIBS@
|
||||||
|
|
||||||
|
@@ -60,28 +60,28 @@ version.@O@: version.c
|
||||||
|
-DMAJOR=\"${MAJOR}\" \
|
||||||
-c ${srcdir}/version.c
|
-c ${srcdir}/version.c
|
||||||
|
|
||||||
-libisc.@SA@: ${OBJS} ${SYMTBLOBJS}
|
-libns.@SA@: ${OBJS}
|
||||||
+libisc-pkcs11.@SA@: ${OBJS} ${SYMTBLOBJS}
|
+libns-pkcs11.@SA@: ${OBJS}
|
||||||
${AR} ${ARFLAGS} $@ ${OBJS} ${SYMTBLOBJS}
|
|
||||||
${RANLIB} $@
|
|
||||||
|
|
||||||
-libisc-nosymtbl.@SA@: ${OBJS}
|
|
||||||
+libisc-pkcs11-nosymtbl.@SA@: ${OBJS}
|
|
||||||
${AR} ${ARFLAGS} $@ ${OBJS}
|
${AR} ${ARFLAGS} $@ ${OBJS}
|
||||||
${RANLIB} $@
|
${RANLIB} $@
|
||||||
|
|
||||||
-libisc.la: ${OBJS} ${SYMTBLOBJS}
|
-libns.la: ${OBJS}
|
||||||
+libisc-pkcs11.la: ${OBJS} ${SYMTBLOBJS}
|
+libns-pkcs11.la: ${OBJS}
|
||||||
${LIBTOOL_MODE_LINK} \
|
${LIBTOOL_MODE_LINK} \
|
||||||
- ${CC} ${ALL_CFLAGS} ${LDFLAGS} -o libisc.la -rpath ${libdir} \
|
- ${CC} ${ALL_CFLAGS} ${LDFLAGS} -o libns.la -rpath ${libdir} \
|
||||||
+ ${CC} ${ALL_CFLAGS} ${LDFLAGS} -o libisc-pkcs11.la -rpath ${libdir} \
|
+ ${CC} ${ALL_CFLAGS} ${LDFLAGS} -o libns-pkcs11.la -rpath ${libdir} \
|
||||||
-version-info ${LIBINTERFACE}:${LIBREVISION}:${LIBAGE} \
|
-release "${VERSION}" \
|
||||||
${OBJS} ${SYMTBLOBJS} ${LIBS}
|
- ${OBJS} ${ISCLIBS} ${DNSLIBS} @DNS_CRYPTO_LIBS@ ${LIBS}
|
||||||
|
+ ${OBJS} ${ISCLIBS} ${DNSLIBS} @DNS_CRYPTO_PK11_LIBS@ ${LIBS}
|
||||||
|
|
||||||
-libisc-nosymtbl.la: ${OBJS}
|
-timestamp: libns.@A@
|
||||||
+libisc-pkcs11-nosymtbl.la: ${OBJS}
|
+timestamp: libns-pkcs11.@A@
|
||||||
${LIBTOOL_MODE_LINK} \
|
|
||||||
- ${CC} ${ALL_CFLAGS} ${LDFLAGS} -o libisc-nosymtbl.la -rpath ${libdir} \
|
|
||||||
+ ${CC} ${ALL_CFLAGS} ${LDFLAGS} -o libisc-pkcs11-nosymtbl.la -rpath ${libdir} \
|
|
||||||
-version-info ${LIBINTERFACE}:${LIBREVISION}:${LIBAGE} \
|
|
||||||
${OBJS} ${LIBS}
|
|
||||||
|
|
||||||
-timestamp: libisc.@A@ libisc-nosymtbl.@A@
|
|
||||||
+timestamp: libisc-pkcs11.@A@ libisc-pkcs11-nosymtbl.@A@
|
|
||||||
touch timestamp
|
touch timestamp
|
||||||
|
|
||||||
-testdirs: libisc.@A@ libisc-nosymtbl.@A@
|
|
||||||
+testdirs: libisc-pkcs11.@A@ libisc-pkcs11-nosymtbl.@A@
|
|
||||||
|
|
||||||
installdirs:
|
installdirs:
|
||||||
$(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${libdir}
|
$(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${libdir}
|
||||||
|
|
||||||
install:: timestamp installdirs
|
install:: timestamp installdirs
|
||||||
- ${LIBTOOL_MODE_INSTALL} ${INSTALL_LIBRARY} libisc.@A@ ${DESTDIR}${libdir}
|
- ${LIBTOOL_MODE_INSTALL} ${INSTALL_LIBRARY} libns.@A@ \
|
||||||
+ ${LIBTOOL_MODE_INSTALL} ${INSTALL_LIBRARY} libisc-pkcs11.@A@ ${DESTDIR}${libdir}
|
+ ${LIBTOOL_MODE_INSTALL} ${INSTALL_LIBRARY} libns-pkcs11.@A@ \
|
||||||
|
${DESTDIR}${libdir}
|
||||||
|
|
||||||
uninstall::
|
uninstall::
|
||||||
- ${LIBTOOL_MODE_UNINSTALL} rm -f ${DESTDIR}${libdir}/libisc.@A@
|
- ${LIBTOOL_MODE_UNINSTALL} rm -f ${DESTDIR}${libdir}/libns.@A@
|
||||||
+ ${LIBTOOL_MODE_UNINSTALL} rm -f ${DESTDIR}${libdir}/libisc-pkcs11.@A@
|
+ ${LIBTOOL_MODE_UNINSTALL} rm -f ${DESTDIR}${libdir}/libns-pkcs11.@A@
|
||||||
|
|
||||||
clean distclean::
|
clean distclean::
|
||||||
- rm -f libisc.@A@ libisc-nosymtbl.@A@ libisc.la \
|
- rm -f libns.@A@ timestamp
|
||||||
- libisc-nosymtbl.la timestamp
|
+ rm -f libns-pkcs11.@A@ timestamp
|
||||||
+ rm -f libisc-pkcs11.@A@ libisc-pkcs11-nosymtbl.@A@ libisc-pkcs11.la \
|
diff --git a/lib/ns-pkcs11/tests/Makefile.in b/lib/ns-pkcs11/tests/Makefile.in
|
||||||
+ libisc-pkcs11-nosymtbl.la timestamp
|
index 4c3e694..c1b6d99 100644
|
||||||
|
--- a/lib/ns-pkcs11/tests/Makefile.in
|
||||||
|
+++ b/lib/ns-pkcs11/tests/Makefile.in
|
||||||
|
@@ -17,17 +17,17 @@ VERSION=@BIND9_VERSION@
|
||||||
|
|
||||||
|
WRAP_OPTIONS = -Wl,--wrap=isc__nmhandle_detach -Wl,--wrap=isc__nmhandle_attach
|
||||||
|
|
||||||
|
-CINCLUDES = -I. -Iinclude ${NS_INCLUDES} ${DNS_INCLUDES} ${ISC_INCLUDES} \
|
||||||
|
+CINCLUDES = -I. -Iinclude ${NS_PKCS11_INCLUDES} ${DNS_PKCS11_INCLUDES} ${ISC_INCLUDES} \
|
||||||
|
${OPENSSL_CFLAGS} \
|
||||||
|
@CMOCKA_CFLAGS@
|
||||||
|
-CDEFINES = -DTESTS="\"${top_builddir}/lib/ns/tests/\"" -DNAMED_PLUGINDIR=\"${plugindir}\"
|
||||||
|
+CDEFINES = -DTESTS="\"${top_builddir}/lib/ns-pkcs11/tests/\"" -DNAMED_PLUGINDIR=\"${plugindir}\" @USE_PKCS11@
|
||||||
|
|
||||||
|
ISCLIBS = ../../isc/libisc.@A@ @NO_LIBTOOL_ISCLIBS@
|
||||||
|
ISCDEPLIBS = ../../isc/libisc.@A@
|
||||||
|
-DNSLIBS = ../../dns/libdns.@A@ @NO_LIBTOOL_DNSLIBS@
|
||||||
|
-DNSDEPLIBS = ../../dns/libdns.@A@
|
||||||
|
-NSLIBS = ../libns.@A@
|
||||||
|
-NSDEPLIBS = ../libns.@A@
|
||||||
|
+DNSLIBS = ../../dns-pkcs11/libdns-pkcs11.@A@ @NO_LIBTOOL_DNSLIBS@
|
||||||
|
+DNSDEPLIBS = ../../dns-pkcs11/libdns-pkcs11.@A@
|
||||||
|
+NSLIBS = ../libns-pkcs11.@A@
|
||||||
|
+NSDEPLIBS = ../libns-pkcs11.@A@
|
||||||
|
|
||||||
|
LIBS = @LIBS@ @CMOCKA_LIBS@
|
||||||
|
|
||||||
diff --git a/make/includes.in b/make/includes.in
|
diff --git a/make/includes.in b/make/includes.in
|
||||||
index 66efe68..966671f 100644
|
index b8317d3..b73b0c4 100644
|
||||||
--- a/make/includes.in
|
--- a/make/includes.in
|
||||||
+++ b/make/includes.in
|
+++ b/make/includes.in
|
||||||
@@ -41,3 +41,13 @@ BIND9_INCLUDES = @BIND9_BIND9_BUILDINCLUDE@ \
|
@@ -39,3 +39,10 @@ BIND9_INCLUDES = @BIND9_BIND9_BUILDINCLUDE@ \
|
||||||
|
|
||||||
TEST_INCLUDES = \
|
TEST_INCLUDES = \
|
||||||
-I${top_srcdir}/lib/tests/include
|
-I${top_srcdir}/lib/tests/include
|
||||||
+
|
+
|
||||||
+ISC_PKCS11_INCLUDES = @BIND9_ISC_BUILDINCLUDE@ \
|
+DNS_PKCS11_INCLUDES = @BIND9_DNS_PKCS11_BUILDINCLUDE@ \
|
||||||
+ -I${top_srcdir}/lib/isc-pkcs11 \
|
|
||||||
+ -I${top_srcdir}/lib/isc-pkcs11/include \
|
|
||||||
+ -I${top_srcdir}/lib/isc-pkcs11/unix/include \
|
|
||||||
+ -I${top_srcdir}/lib/isc-pkcs11/@ISC_THREAD_DIR@/include \
|
|
||||||
+ -I${top_srcdir}/lib/isc-pkcs11/@ISC_ARCH_DIR@/include
|
|
||||||
+
|
|
||||||
+DNS_PKCS11_INCLUDES = @BIND9_DNS_BUILDINCLUDE@ \
|
|
||||||
+ -I${top_srcdir}/lib/dns-pkcs11/include
|
+ -I${top_srcdir}/lib/dns-pkcs11/include
|
||||||
|
+
|
||||||
|
+NS_PKCS11_INCLUDES = @BIND9_NS_PKCS11_BUILDINCLUDE@ \
|
||||||
|
+ -I${top_srcdir}/lib/ns-pkcs11/include
|
||||||
|
+
|
||||||
|
--
|
||||||
|
2.26.3
|
||||||
|
|
||||||
|
@ -1,310 +0,0 @@
|
|||||||
diff --git a/bin/Makefile.in b/bin/Makefile.in
|
|
||||||
index ce7a2da..4e6a824 100644
|
|
||||||
--- a/bin/Makefile.in
|
|
||||||
+++ b/bin/Makefile.in
|
|
||||||
@@ -11,8 +11,8 @@ srcdir = @srcdir@
|
|
||||||
VPATH = @srcdir@
|
|
||||||
top_srcdir = @top_srcdir@
|
|
||||||
|
|
||||||
-SUBDIRS = named named-pkcs11 rndc dig delv dnssec dnssec-pkcs11 tools nsupdate \
|
|
||||||
- check confgen @NZD_TOOLS@ @PYTHON_TOOLS@ @PKCS11_TOOLS@ tests
|
|
||||||
+SUBDIRS = named named-sdb named-pkcs11 rndc dig delv dnssec dnssec-pkcs11 tools nsupdate \
|
|
||||||
+ check confgen @NZD_TOOLS@ @PYTHON_TOOLS@ @PKCS11_TOOLS@ sdb_tools tests
|
|
||||||
TARGETS =
|
|
||||||
|
|
||||||
@BIND9_MAKE_RULES@
|
|
||||||
diff --git a/bin/named-sdb/Makefile.in b/bin/named-sdb/Makefile.in
|
|
||||||
index 03a72d5..4c1cb6d 100644
|
|
||||||
--- a/bin/named-sdb/Makefile.in
|
|
||||||
+++ b/bin/named-sdb/Makefile.in
|
|
||||||
@@ -30,10 +30,10 @@ VERSION=@BIND9_VERSION@
|
|
||||||
#
|
|
||||||
# Add database drivers here.
|
|
||||||
#
|
|
||||||
-DBDRIVER_OBJS =
|
|
||||||
-DBDRIVER_SRCS =
|
|
||||||
+DBDRIVER_OBJS = ldapdb.@O@ pgsqldb.@O@ sqlitedb.@O@ dirdb.@O@
|
|
||||||
+DBDRIVER_SRCS = ldapdb.c pgsqldb.c sqlitedb.c dirdb.c
|
|
||||||
DBDRIVER_INCLUDES =
|
|
||||||
-DBDRIVER_LIBS =
|
|
||||||
+DBDRIVER_LIBS = -lldap -llber -lsqlite3 -lpq
|
|
||||||
|
|
||||||
DLZ_DRIVER_DIR = ${top_srcdir}/contrib/dlz/drivers
|
|
||||||
|
|
||||||
@@ -80,7 +80,7 @@ NOSYMLIBS = ${LWRESLIBS} ${DNSLIBS} ${BIND9LIBS} \
|
|
||||||
|
|
||||||
SUBDIRS = unix
|
|
||||||
|
|
||||||
-TARGETS = named@EXEEXT@ lwresd@EXEEXT@
|
|
||||||
+TARGETS = named-sdb@EXEEXT@
|
|
||||||
|
|
||||||
GEOIPLINKOBJS = geoip.@O@
|
|
||||||
GEOIP2LINKOBJS = geoip.@O@
|
|
||||||
@@ -154,7 +154,7 @@ server.@O@: server.c
|
|
||||||
-DPRODUCT=\"${PRODUCT}\" \
|
|
||||||
-DVERSION=\"${VERSION}\" -c ${srcdir}/server.c
|
|
||||||
|
|
||||||
-named@EXEEXT@: ${OBJS} ${DEPLIBS}
|
|
||||||
+named-sdb@EXEEXT@: ${OBJS} ${DEPLIBS}
|
|
||||||
export MAKE_SYMTABLE="yes"; \
|
|
||||||
export BASEOBJS="${OBJS} ${UOBJS}"; \
|
|
||||||
${FINALBUILDCMD}
|
|
||||||
@@ -181,8 +181,6 @@ statschannel.@O@: bind9.xsl.h
|
|
||||||
|
|
||||||
installdirs:
|
|
||||||
$(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${sbindir}
|
|
||||||
- $(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${mandir}/man5
|
|
||||||
- $(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${mandir}/man8
|
|
||||||
|
|
||||||
install-man5: named.conf.5
|
|
||||||
${INSTALL_DATA} $^ ${DESTDIR}${mandir}/man5
|
|
||||||
@@ -192,16 +190,11 @@ install-man8: named.8 lwresd.8
|
|
||||||
|
|
||||||
install-man: install-man5 install-man8
|
|
||||||
|
|
||||||
-install:: named@EXEEXT@ lwresd@EXEEXT@ installdirs install-man
|
|
||||||
- ${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} named@EXEEXT@ ${DESTDIR}${sbindir}
|
|
||||||
- (cd ${DESTDIR}${sbindir}; rm -f lwresd@EXEEXT@; @LN@ named@EXEEXT@ lwresd@EXEEXT@)
|
|
||||||
+install:: ${TARGETS} installdirs
|
|
||||||
+ ${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} named-sdb@EXEEXT@ ${DESTDIR}${sbindir}
|
|
||||||
|
|
||||||
uninstall::
|
|
||||||
- rm -f ${DESTDIR}${mandir}/man5/named.conf.5
|
|
||||||
- rm -f ${DESTDIR}${mandir}/man8/lwresd.8
|
|
||||||
- rm -f ${DESTDIR}${mandir}/man8/named.8
|
|
||||||
- rm -f ${DESTDIR}${sbindir}/lwresd@EXEEXT@
|
|
||||||
- ${LIBTOOL_MODE_UNINSTALL} rm -f ${DESTDIR}${sbindir}/named@EXEEXT@
|
|
||||||
+ ${LIBTOOL_MODE_UNINSTALL} rm -f ${DESTDIR}${sbindir}/named-sdb@EXEEXT@
|
|
||||||
|
|
||||||
@DLZ_DRIVER_RULES@
|
|
||||||
|
|
||||||
diff --git a/bin/named-sdb/main.c b/bin/named-sdb/main.c
|
|
||||||
index c9fc3cc..148ebb3 100644
|
|
||||||
--- a/bin/named-sdb/main.c
|
|
||||||
+++ b/bin/named-sdb/main.c
|
|
||||||
@@ -97,6 +97,10 @@
|
|
||||||
* Include header files for database drivers here.
|
|
||||||
*/
|
|
||||||
/* #include "xxdb.h" */
|
|
||||||
+#include "ldapdb.h"
|
|
||||||
+#include "pgsqldb.h"
|
|
||||||
+#include "sqlitedb.h"
|
|
||||||
+#include "dirdb.h"
|
|
||||||
|
|
||||||
#ifdef CONTRIB_DLZ
|
|
||||||
/*
|
|
||||||
@@ -1134,6 +1138,11 @@ setup(void) {
|
|
||||||
ns_main_earlyfatal("isc_app_start() failed: %s",
|
|
||||||
isc_result_totext(result));
|
|
||||||
|
|
||||||
+ ldapdb_clear();
|
|
||||||
+ pgsqldb_clear();
|
|
||||||
+ dirdb_clear();
|
|
||||||
+ sqlitedb_clear();
|
|
||||||
+
|
|
||||||
isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_MAIN,
|
|
||||||
ISC_LOG_NOTICE, "starting %s %s%s%s <id:%s>",
|
|
||||||
ns_g_product, ns_g_version,
|
|
||||||
@@ -1334,6 +1343,75 @@ setup(void) {
|
|
||||||
isc_result_totext(result));
|
|
||||||
#endif
|
|
||||||
|
|
||||||
+ result = ldapdb_init();
|
|
||||||
+ if (result != ISC_R_SUCCESS)
|
|
||||||
+ {
|
|
||||||
+ isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_MAIN,
|
|
||||||
+ ISC_LOG_ERROR,
|
|
||||||
+ "SDB ldap module initialisation failed: %s.",
|
|
||||||
+ isc_result_totext(result)
|
|
||||||
+ );
|
|
||||||
+ isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_MAIN,
|
|
||||||
+ ISC_LOG_ERROR,
|
|
||||||
+ "SDB ldap zone database will be unavailable."
|
|
||||||
+ );
|
|
||||||
+ }else
|
|
||||||
+ isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_MAIN,
|
|
||||||
+ ISC_LOG_NOTICE, "SDB ldap zone database module loaded."
|
|
||||||
+ );
|
|
||||||
+
|
|
||||||
+ result = pgsqldb_init();
|
|
||||||
+ if (result != ISC_R_SUCCESS)
|
|
||||||
+ {
|
|
||||||
+ isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_MAIN,
|
|
||||||
+ ISC_LOG_ERROR,
|
|
||||||
+ "SDB pgsql module initialisation failed: %s.",
|
|
||||||
+ isc_result_totext(result)
|
|
||||||
+ );
|
|
||||||
+ isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_MAIN,
|
|
||||||
+ ISC_LOG_ERROR,
|
|
||||||
+ "SDB pgsql zone database will be unavailable."
|
|
||||||
+ );
|
|
||||||
+ }else
|
|
||||||
+ isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_MAIN,
|
|
||||||
+ ISC_LOG_NOTICE, "SDB postgreSQL DB zone database module loaded."
|
|
||||||
+ );
|
|
||||||
+
|
|
||||||
+ result = sqlitedb_init();
|
|
||||||
+ if (result != ISC_R_SUCCESS)
|
|
||||||
+ {
|
|
||||||
+ isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_MAIN,
|
|
||||||
+ ISC_LOG_ERROR,
|
|
||||||
+ "SDB sqlite3 module initialisation failed: %s.",
|
|
||||||
+ isc_result_totext(result)
|
|
||||||
+ );
|
|
||||||
+ isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_MAIN,
|
|
||||||
+ ISC_LOG_ERROR,
|
|
||||||
+ "SDB sqlite3 zone database will be unavailable."
|
|
||||||
+ );
|
|
||||||
+ }else
|
|
||||||
+ isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_MAIN,
|
|
||||||
+ ISC_LOG_NOTICE, "SDB sqlite3 DB zone database module loaded."
|
|
||||||
+ );
|
|
||||||
+
|
|
||||||
+ result = dirdb_init();
|
|
||||||
+ if (result != ISC_R_SUCCESS)
|
|
||||||
+ {
|
|
||||||
+ isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_MAIN,
|
|
||||||
+ ISC_LOG_ERROR,
|
|
||||||
+ "SDB directory DB module initialisation failed: %s.",
|
|
||||||
+ isc_result_totext(result)
|
|
||||||
+ );
|
|
||||||
+ isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_MAIN,
|
|
||||||
+ ISC_LOG_ERROR,
|
|
||||||
+ "SDB directory DB zone database will be unavailable."
|
|
||||||
+ );
|
|
||||||
+ }else
|
|
||||||
+ isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_MAIN,
|
|
||||||
+ ISC_LOG_NOTICE, "SDB directory DB zone database module loaded."
|
|
||||||
+ );
|
|
||||||
+
|
|
||||||
+
|
|
||||||
ns_server_create(ns_g_mctx, &ns_g_server);
|
|
||||||
|
|
||||||
#ifdef HAVE_LIBSECCOMP
|
|
||||||
@@ -1376,6 +1454,11 @@ cleanup(void) {
|
|
||||||
|
|
||||||
dns_name_destroy();
|
|
||||||
|
|
||||||
+ ldapdb_clear();
|
|
||||||
+ pgsqldb_clear();
|
|
||||||
+ sqlitedb_clear();
|
|
||||||
+ dirdb_clear();
|
|
||||||
+
|
|
||||||
isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_MAIN,
|
|
||||||
ISC_LOG_NOTICE, "exiting");
|
|
||||||
ns_log_shutdown();
|
|
||||||
diff --git a/bin/named/Makefile.in b/bin/named/Makefile.in
|
|
||||||
index 03a72d5..47cc046 100644
|
|
||||||
--- a/bin/named/Makefile.in
|
|
||||||
+++ b/bin/named/Makefile.in
|
|
||||||
@@ -45,10 +45,10 @@ DLZDRIVER_LIBS = @DLZ_DRIVER_LIBS@
|
|
||||||
CINCLUDES = -I${srcdir}/include -I${srcdir}/unix/include -I. \
|
|
||||||
${LWRES_INCLUDES} ${DNS_INCLUDES} ${BIND9_INCLUDES} \
|
|
||||||
${ISCCFG_INCLUDES} ${ISCCC_INCLUDES} ${ISC_INCLUDES} \
|
|
||||||
- ${DLZDRIVER_INCLUDES} ${DBDRIVER_INCLUDES} ${MAXMINDDB_CFLAGS} \
|
|
||||||
+ ${MAXMINDDB_CFLAGS} \
|
|
||||||
@DST_OPENSSL_INC@
|
|
||||||
|
|
||||||
-CDEFINES = @CONTRIB_DLZ@ @USE_GSSAPI@ @CRYPTO@
|
|
||||||
+CDEFINES = @USE_GSSAPI@ @CRYPTO@
|
|
||||||
|
|
||||||
CWARNINGS =
|
|
||||||
|
|
||||||
@@ -72,11 +72,11 @@ DEPLIBS = ${LWRESDEPLIBS} ${DNSDEPLIBS} ${BIND9DEPLIBS} \
|
|
||||||
|
|
||||||
LIBS = ${LWRESLIBS} ${DNSLIBS} ${BIND9LIBS} \
|
|
||||||
${ISCCFGLIBS} ${ISCCCLIBS} ${ISCLIBS} \
|
|
||||||
- ${DLZDRIVER_LIBS} ${DBDRIVER_LIBS} @LIBS@
|
|
||||||
+ @LIBS@
|
|
||||||
|
|
||||||
NOSYMLIBS = ${LWRESLIBS} ${DNSLIBS} ${BIND9LIBS} \
|
|
||||||
${ISCCFGLIBS} ${ISCCCLIBS} ${ISCNOSYMLIBS} \
|
|
||||||
- ${DLZDRIVER_LIBS} ${DBDRIVER_LIBS} @LIBS@
|
|
||||||
+ @LIBS@
|
|
||||||
|
|
||||||
SUBDIRS = unix
|
|
||||||
|
|
||||||
@@ -94,8 +94,7 @@ OBJS = builtin.@O@ client.@O@ config.@O@ control.@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}
|
|
||||||
+ lwdgnba.@O@ lwdgrbn.@O@ lwdnoop.@O@ lwsearch.@O@
|
|
||||||
|
|
||||||
UOBJS = unix/os.@O@ unix/dlz_dlopen_driver.@O@
|
|
||||||
|
|
||||||
@@ -113,8 +112,7 @@ SRCS = builtin.c client.c config.c control.c \
|
|
||||||
tkeyconf.c tsigconf.c update.c xfrout.c \
|
|
||||||
zoneconf.c \
|
|
||||||
lwaddr.c lwresd.c lwdclient.c lwderror.c lwdgabn.c \
|
|
||||||
- lwdgnba.c lwdgrbn.c lwdnoop.c lwsearch.c \
|
|
||||||
- ${DLZDRIVER_SRCS} ${DBDRIVER_SRCS}
|
|
||||||
+ lwdgnba.c lwdgrbn.c lwdnoop.c lwsearch.c
|
|
||||||
|
|
||||||
MANPAGES = named.8 lwresd.8 named.conf.5
|
|
||||||
|
|
||||||
@@ -203,7 +201,5 @@ uninstall::
|
|
||||||
rm -f ${DESTDIR}${sbindir}/lwresd@EXEEXT@
|
|
||||||
${LIBTOOL_MODE_UNINSTALL} rm -f ${DESTDIR}${sbindir}/named@EXEEXT@
|
|
||||||
|
|
||||||
-@DLZ_DRIVER_RULES@
|
|
||||||
-
|
|
||||||
named-symtbl.@O@: named-symtbl.c
|
|
||||||
${LIBTOOL_MODE_COMPILE} ${CC} ${ALL_CFLAGS} -c named-symtbl.c
|
|
||||||
diff --git a/bin/sdb_tools/Makefile.in b/bin/sdb_tools/Makefile.in
|
|
||||||
index c7e0868..95ab742 100644
|
|
||||||
--- a/bin/sdb_tools/Makefile.in
|
|
||||||
+++ b/bin/sdb_tools/Makefile.in
|
|
||||||
@@ -32,11 +32,11 @@ DEPLIBS = ${LWRESDEPLIBS} ${DNSDEPLIBS} ${BIND9DEPLIBS} \
|
|
||||||
LIBS = ${LWRESLIBS} ${DNSLIBS} ${BIND9LIBS} \
|
|
||||||
${ISCCFGLIBS} ${ISCCCLIBS} ${ISCLIBS} ${DBDRIVER_LIBS} @LIBS@
|
|
||||||
|
|
||||||
-TARGETS = zone2ldap@EXEEXT@ zonetodb@EXEEXT@
|
|
||||||
+TARGETS = zone2ldap@EXEEXT@ zonetodb@EXEEXT@ zone2sqlite@EXEEXT@
|
|
||||||
|
|
||||||
-OBJS = zone2ldap.@O@ zonetodb.@O@
|
|
||||||
+OBJS = zone2ldap.@O@ zonetodb.@O@ zone2sqlite.@O@
|
|
||||||
|
|
||||||
-SRCS = zone2ldap.c zonetodb.c
|
|
||||||
+SRCS = zone2ldap.c zonetodb.c zone2sqlite.c
|
|
||||||
|
|
||||||
MANPAGES = zone2ldap.1
|
|
||||||
|
|
||||||
@@ -50,6 +50,9 @@ zone2ldap@EXEEXT@: zone2ldap.@O@ ${DEPLIBS}
|
|
||||||
zonetodb@EXEEXT@: zonetodb.@O@ ${DEPLIBS}
|
|
||||||
${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} -o $@ zonetodb.@O@ -lpq ${LIBS}
|
|
||||||
|
|
||||||
+zone2sqlite@EXEEXT@: zone2sqlite.@O@ ${DEPLIBS}
|
|
||||||
+ ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${ALL_CFLAGS} ${LDFLAGS} -o $@ zone2sqlite.@O@ -lsqlite3 -lssl ${LIBS}
|
|
||||||
+
|
|
||||||
clean distclean manclean maintainer-clean::
|
|
||||||
rm -f ${TARGETS} ${OBJS}
|
|
||||||
|
|
||||||
@@ -60,4 +63,5 @@ installdirs:
|
|
||||||
install:: ${TARGETS} installdirs
|
|
||||||
${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} zone2ldap@EXEEXT@ ${DESTDIR}${sbindir}
|
|
||||||
${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} zonetodb@EXEEXT@ ${DESTDIR}${sbindir}
|
|
||||||
+ ${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} zone2sqlite@EXEEXT@ ${DESTDIR}${sbindir}
|
|
||||||
${INSTALL_DATA} ${srcdir}/zone2ldap.1 ${DESTDIR}${mandir}/man1/zone2ldap.1
|
|
||||||
diff --git a/configure.ac b/configure.ac
|
|
||||||
index f85f45f..7d28c52 100644
|
|
||||||
--- a/configure.ac
|
|
||||||
+++ b/configure.ac
|
|
||||||
@@ -5400,6 +5400,8 @@ AC_CONFIG_FILES([
|
|
||||||
bin/named/unix/Makefile
|
|
||||||
bin/named-pkcs11/Makefile
|
|
||||||
bin/named-pkcs11/unix/Makefile
|
|
||||||
+ bin/named-sdb/Makefile
|
|
||||||
+ bin/named-sdb/unix/Makefile
|
|
||||||
bin/nsupdate/Makefile
|
|
||||||
bin/pkcs11/Makefile
|
|
||||||
bin/python/Makefile
|
|
||||||
@@ -5424,6 +5426,7 @@ AC_CONFIG_FILES([
|
|
||||||
bin/python/isc/tests/policy_test.py
|
|
||||||
bin/python/isc/utils.py
|
|
||||||
bin/rndc/Makefile
|
|
||||||
+ bin/sdb_tools/Makefile
|
|
||||||
bin/tests/Makefile
|
|
||||||
bin/tests/headerdep_test.sh
|
|
||||||
bin/tests/optional/Makefile
|
|
@ -1,18 +0,0 @@
|
|||||||
diff --git a/bin/sdb_tools/zone2ldap.c b/bin/sdb_tools/zone2ldap.c
|
|
||||||
index d56bc56..99c3314 100644
|
|
||||||
--- a/bin/sdb_tools/zone2ldap.c
|
|
||||||
+++ b/bin/sdb_tools/zone2ldap.c
|
|
||||||
@@ -817,11 +817,11 @@ build_dn_from_dc_list (char **dc_list, unsigned int ttl, int flag, char *zone)
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
- strlcat (dn, tmp, sizeof (dn));
|
|
||||||
+ strncat (dn, tmp, sizeof (dn) - strlen (dn));
|
|
||||||
}
|
|
||||||
|
|
||||||
sprintf (tmp, "dc=%s", dc_list[0]);
|
|
||||||
- strlcat (dn, tmp, sizeof (dn));
|
|
||||||
+ strncat (dn, tmp, sizeof (dn) - strlen (dn));
|
|
||||||
|
|
||||||
fflush(NULL);
|
|
||||||
return dn;
|
|
@ -1,61 +0,0 @@
|
|||||||
From 05cdbc1006cee6daaa29e5423976d56047d22461 Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?Micha=C5=82=20K=C4=99pie=C5=84?= <michal@isc.org>
|
|
||||||
Date: Thu, 8 Sep 2022 11:11:30 +0200
|
|
||||||
Subject: [PATCH] Bound the amount of work performed for delegations
|
|
||||||
|
|
||||||
Limit the amount of database lookups that can be triggered in
|
|
||||||
fctx_getaddresses() (i.e. when determining the name server addresses to
|
|
||||||
query next) by setting a hard limit on the number of NS RRs processed
|
|
||||||
for any delegation encountered. Without any limit in place, named can
|
|
||||||
be forced to perform large amounts of database lookups per each query
|
|
||||||
received, which severely impacts resolver performance.
|
|
||||||
|
|
||||||
The limit used (20) is an arbitrary value that is considered to be big
|
|
||||||
enough for any sane DNS delegation.
|
|
||||||
|
|
||||||
(cherry picked from commit 3a44097fd6c6c260765b628cd1d2c9cb7efb0b2a)
|
|
||||||
(cherry picked from commit bf2ea6d8525bfd96a84dad221ba9e004adb710a8)
|
|
||||||
---
|
|
||||||
lib/dns/resolver.c | 12 ++++++++++++
|
|
||||||
1 file changed, 12 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/lib/dns/resolver.c b/lib/dns/resolver.c
|
|
||||||
index 8ae9a993bb..ac9a9ef5d0 100644
|
|
||||||
--- a/lib/dns/resolver.c
|
|
||||||
+++ b/lib/dns/resolver.c
|
|
||||||
@@ -180,6 +180,12 @@
|
|
||||||
*/
|
|
||||||
#define NS_FAIL_LIMIT 4
|
|
||||||
#define NS_RR_LIMIT 5
|
|
||||||
+/*
|
|
||||||
+ * IP address lookups are performed for at most NS_PROCESSING_LIMIT NS RRs in
|
|
||||||
+ * any NS RRset encountered, to avoid excessive resource use while processing
|
|
||||||
+ * large delegations.
|
|
||||||
+ */
|
|
||||||
+#define NS_PROCESSING_LIMIT 20
|
|
||||||
|
|
||||||
/* Number of hash buckets for zone counters */
|
|
||||||
#ifndef RES_DOMAIN_BUCKETS
|
|
||||||
@@ -3318,6 +3324,7 @@ fctx_getaddresses(fetchctx_t *fctx, bool badcache) {
|
|
||||||
bool need_alternate = false;
|
|
||||||
bool all_spilled = true;
|
|
||||||
unsigned int no_addresses = 0;
|
|
||||||
+ unsigned int ns_processed = 0;
|
|
||||||
|
|
||||||
FCTXTRACE5("getaddresses", "fctx->depth=", fctx->depth);
|
|
||||||
|
|
||||||
@@ -3504,6 +3511,11 @@ fctx_getaddresses(fetchctx_t *fctx, bool badcache) {
|
|
||||||
|
|
||||||
dns_rdata_reset(&rdata);
|
|
||||||
dns_rdata_freestruct(&ns);
|
|
||||||
+
|
|
||||||
+ if (++ns_processed >= NS_PROCESSING_LIMIT) {
|
|
||||||
+ result = ISC_R_NOMORE;
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
if (result != ISC_R_NOMORE) {
|
|
||||||
return (result);
|
|
||||||
--
|
|
||||||
2.37.3
|
|
||||||
|
|
@ -1,46 +0,0 @@
|
|||||||
From 6c26ede8edcb700caca12c501c6c129801989526 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Mark Andrews <marka@isc.org>
|
|
||||||
Date: Fri, 23 Feb 2024 10:12:47 +1100
|
|
||||||
Subject: [PATCH] Do not use header_prev in expire_lru_headers
|
|
||||||
|
|
||||||
dns__cacherbt_expireheader can unlink / free header_prev underneath
|
|
||||||
it. Use ISC_LIST_TAIL after calling dns__cacherbt_expireheader
|
|
||||||
instead to get the next pointer to be processed.
|
|
||||||
|
|
||||||
(cherry picked from commit 7ce2e86024f022decb2678963538515ca39ab4ab)
|
|
||||||
(cherry picked from commit f88f21b7d890eb80097f4bd434fedb29c2f9ff63)
|
|
||||||
---
|
|
||||||
lib/dns/rbtdb.c | 8 ++++----
|
|
||||||
1 file changed, 4 insertions(+), 4 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/lib/dns/rbtdb.c b/lib/dns/rbtdb.c
|
|
||||||
index cc40eaec60..ee59c1b18b 100644
|
|
||||||
--- a/lib/dns/rbtdb.c
|
|
||||||
+++ b/lib/dns/rbtdb.c
|
|
||||||
@@ -10667,19 +10667,19 @@ update_header(dns_rbtdb_t *rbtdb, rdatasetheader_t *header,
|
|
||||||
static size_t
|
|
||||||
expire_lru_headers(dns_rbtdb_t *rbtdb, unsigned int locknum, size_t purgesize,
|
|
||||||
bool tree_locked) {
|
|
||||||
- rdatasetheader_t *header, *header_prev;
|
|
||||||
+ rdatasetheader_t *header;
|
|
||||||
size_t purged = 0;
|
|
||||||
|
|
||||||
for (header = ISC_LIST_TAIL(rbtdb->rdatasets[locknum]);
|
|
||||||
- header != NULL && purged <= purgesize; header = header_prev)
|
|
||||||
+ header != NULL && purged <= purgesize;
|
|
||||||
+ header = ISC_LIST_TAIL(rbtdb->rdatasets[locknum]))
|
|
||||||
{
|
|
||||||
- header_prev = ISC_LIST_PREV(header, link);
|
|
||||||
/*
|
|
||||||
* Unlink the entry at this point to avoid checking it
|
|
||||||
* again even if it's currently used someone else and
|
|
||||||
* cannot be purged at this moment. This entry won't be
|
|
||||||
* referenced any more (so unlinking is safe) since the
|
|
||||||
- * TTL was reset to 0.
|
|
||||||
+ * TTL will be reset to 0.
|
|
||||||
*/
|
|
||||||
ISC_LIST_UNLINK(rbtdb->rdatasets[locknum], header, link);
|
|
||||||
size_t header_size = rdataset_size(header);
|
|
||||||
--
|
|
||||||
2.43.2
|
|
||||||
|
|
@ -1,193 +0,0 @@
|
|||||||
From f3aa755ba5ae5148dd0567357f8c538072e2eabc Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?Ond=C5=99ej=20Sur=C3=BD?= <ondrej@isc.org>
|
|
||||||
Date: Tue, 30 May 2023 08:46:17 +0200
|
|
||||||
Subject: [PATCH] Improve RBT overmem cache cleaning
|
|
||||||
|
|
||||||
When cache memory usage is over the configured cache size (overmem) and
|
|
||||||
we are cleaning unused entries, it might not be enough to clean just two
|
|
||||||
entries if the entries to be expired are smaller than the newly added
|
|
||||||
rdata. This could be abused by an attacker to cause a remote Denial of
|
|
||||||
Service by possibly running out of the operating system memory.
|
|
||||||
|
|
||||||
Currently, the addrdataset() tries to do a single TTL-based cleaning
|
|
||||||
considering the serve-stale TTL and then optionally moves to overmem
|
|
||||||
cleaning if we are in that condition. Then the overmem_purge() tries to
|
|
||||||
do another single TTL based cleaning from the TTL heap and then continue
|
|
||||||
with LRU-based cleaning up to 2 entries cleaned.
|
|
||||||
|
|
||||||
Squash the TTL-cleaning mechanism into single call from addrdataset(),
|
|
||||||
but ignore the serve-stale TTL if we are currently overmem.
|
|
||||||
|
|
||||||
Then instead of having a fixed number of entries to clean, pass the size
|
|
||||||
of newly added rdatasetheader to the overmem_purge() function and
|
|
||||||
cleanup at least the size of the newly added data. This prevents the
|
|
||||||
cache going over the configured memory limit (`max-cache-size`).
|
|
||||||
|
|
||||||
Additionally, refactor the overmem_purge() function to reduce for-loop
|
|
||||||
nesting for readability.
|
|
||||||
---
|
|
||||||
lib/dns/rbtdb.c | 109 +++++++++++++++++++++++++++++-------------------
|
|
||||||
1 file changed, 67 insertions(+), 42 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/lib/dns/rbtdb.c b/lib/dns/rbtdb.c
|
|
||||||
index 11203e4..cc40eae 100644
|
|
||||||
--- a/lib/dns/rbtdb.c
|
|
||||||
+++ b/lib/dns/rbtdb.c
|
|
||||||
@@ -834,7 +834,7 @@ static void update_header(dns_rbtdb_t *rbtdb, rdatasetheader_t *header,
|
|
||||||
static void expire_header(dns_rbtdb_t *rbtdb, rdatasetheader_t *header,
|
|
||||||
bool tree_locked, expire_t reason);
|
|
||||||
static void overmem_purge(dns_rbtdb_t *rbtdb, unsigned int locknum_start,
|
|
||||||
- isc_stdtime_t now, bool tree_locked);
|
|
||||||
+ size_t purgesize, bool tree_locked);
|
|
||||||
static isc_result_t resign_insert(dns_rbtdb_t *rbtdb, int idx,
|
|
||||||
rdatasetheader_t *newheader);
|
|
||||||
static void resign_delete(dns_rbtdb_t *rbtdb, rbtdb_version_t *version,
|
|
||||||
@@ -6937,6 +6937,16 @@ addclosest(dns_rbtdb_t *rbtdb, rdatasetheader_t *newheader,
|
|
||||||
|
|
||||||
static dns_dbmethods_t zone_methods;
|
|
||||||
|
|
||||||
+static size_t
|
|
||||||
+rdataset_size(rdatasetheader_t *header) {
|
|
||||||
+ if (!NONEXISTENT(header)) {
|
|
||||||
+ return (dns_rdataslab_size((unsigned char *)header,
|
|
||||||
+ sizeof(*header)));
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return (sizeof(*header));
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
static isc_result_t
|
|
||||||
addrdataset(dns_db_t *db, dns_dbnode_t *node, dns_dbversion_t *version,
|
|
||||||
isc_stdtime_t now, dns_rdataset_t *rdataset, unsigned int options,
|
|
||||||
@@ -7091,7 +7101,8 @@ addrdataset(dns_db_t *db, dns_dbnode_t *node, dns_dbversion_t *version,
|
|
||||||
}
|
|
||||||
|
|
||||||
if (cache_is_overmem)
|
|
||||||
- overmem_purge(rbtdb, rbtnode->locknum, now, tree_locked);
|
|
||||||
+ overmem_purge(rbtdb, rbtnode->locknum, rdataset_size(newheader),
|
|
||||||
+ tree_locked);
|
|
||||||
|
|
||||||
NODE_LOCK(&rbtdb->node_locks[rbtnode->locknum].lock,
|
|
||||||
isc_rwlocktype_write);
|
|
||||||
@@ -7106,9 +7117,19 @@ addrdataset(dns_db_t *db, dns_dbnode_t *node, dns_dbversion_t *version,
|
|
||||||
cleanup_dead_nodes(rbtdb, rbtnode->locknum);
|
|
||||||
|
|
||||||
header = isc_heap_element(rbtdb->heaps[rbtnode->locknum], 1);
|
|
||||||
- if (header && header->rdh_ttl < now - RBTDB_VIRTUAL)
|
|
||||||
- expire_header(rbtdb, header, tree_locked,
|
|
||||||
- expire_ttl);
|
|
||||||
+ if (header != NULL) {
|
|
||||||
+ dns_ttl_t rdh_ttl = header->rdh_ttl;
|
|
||||||
+
|
|
||||||
+ /* Only account for stale TTL if cache is not overmem */
|
|
||||||
+ if (!cache_is_overmem) {
|
|
||||||
+ rdh_ttl += rbtdb->serve_stale_ttl;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (rdh_ttl < now - RBTDB_VIRTUAL) {
|
|
||||||
+ expire_header(rbtdb, header, tree_locked,
|
|
||||||
+ expire_ttl);
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
|
|
||||||
/*
|
|
||||||
* If we've been holding a write lock on the tree just for
|
|
||||||
@@ -10643,54 +10664,58 @@ update_header(dns_rbtdb_t *rbtdb, rdatasetheader_t *header,
|
|
||||||
ISC_LIST_PREPEND(rbtdb->rdatasets[header->node->locknum], header, link);
|
|
||||||
}
|
|
||||||
|
|
||||||
+static size_t
|
|
||||||
+expire_lru_headers(dns_rbtdb_t *rbtdb, unsigned int locknum, size_t purgesize,
|
|
||||||
+ bool tree_locked) {
|
|
||||||
+ rdatasetheader_t *header, *header_prev;
|
|
||||||
+ size_t purged = 0;
|
|
||||||
+
|
|
||||||
+ for (header = ISC_LIST_TAIL(rbtdb->rdatasets[locknum]);
|
|
||||||
+ header != NULL && purged <= purgesize; header = header_prev)
|
|
||||||
+ {
|
|
||||||
+ header_prev = ISC_LIST_PREV(header, link);
|
|
||||||
+ /*
|
|
||||||
+ * Unlink the entry at this point to avoid checking it
|
|
||||||
+ * again even if it's currently used someone else and
|
|
||||||
+ * cannot be purged at this moment. This entry won't be
|
|
||||||
+ * referenced any more (so unlinking is safe) since the
|
|
||||||
+ * TTL was reset to 0.
|
|
||||||
+ */
|
|
||||||
+ ISC_LIST_UNLINK(rbtdb->rdatasets[locknum], header, link);
|
|
||||||
+ size_t header_size = rdataset_size(header);
|
|
||||||
+ expire_header(rbtdb, header, tree_locked, expire_lru);
|
|
||||||
+ purged += header_size;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return (purged);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
/*%
|
|
||||||
- * Purge some expired and/or stale (i.e. unused for some period) cache entries
|
|
||||||
- * under an overmem condition. To recover from this condition quickly, up to
|
|
||||||
- * 2 entries will be purged. This process is triggered while adding a new
|
|
||||||
- * entry, and we specifically avoid purging entries in the same LRU bucket as
|
|
||||||
- * the one to which the new entry will belong. Otherwise, we might purge
|
|
||||||
- * entries of the same name of different RR types while adding RRsets from a
|
|
||||||
- * single response (consider the case where we're adding A and AAAA glue records
|
|
||||||
- * of the same NS name).
|
|
||||||
+ * Purge some stale (i.e. unused for some period - LRU based cleaning) cache
|
|
||||||
+ * entries under the overmem condition. To recover from this condition quickly,
|
|
||||||
+ * we cleanup entries up to the size of newly added rdata (passed as purgesize).
|
|
||||||
+ *
|
|
||||||
+ * This process is triggered while adding a new entry, and we specifically avoid
|
|
||||||
+ * purging entries in the same LRU bucket as the one to which the new entry will
|
|
||||||
+ * belong. Otherwise, we might purge entries of the same name of different RR
|
|
||||||
+ * types while adding RRsets from a single response (consider the case where
|
|
||||||
+ * we're adding A and AAAA glue records of the same NS name).
|
|
||||||
*/
|
|
||||||
static void
|
|
||||||
-overmem_purge(dns_rbtdb_t *rbtdb, unsigned int locknum_start,
|
|
||||||
- isc_stdtime_t now, bool tree_locked)
|
|
||||||
+overmem_purge(dns_rbtdb_t *rbtdb, unsigned int locknum_start, size_t purgesize,
|
|
||||||
+ bool tree_locked)
|
|
||||||
{
|
|
||||||
- rdatasetheader_t *header, *header_prev;
|
|
||||||
unsigned int locknum;
|
|
||||||
- int purgecount = 2;
|
|
||||||
+ size_t purged = 0;
|
|
||||||
|
|
||||||
for (locknum = (locknum_start + 1) % rbtdb->node_lock_count;
|
|
||||||
- locknum != locknum_start && purgecount > 0;
|
|
||||||
+ locknum != locknum_start && purged <= purgesize;
|
|
||||||
locknum = (locknum + 1) % rbtdb->node_lock_count) {
|
|
||||||
NODE_LOCK(&rbtdb->node_locks[locknum].lock,
|
|
||||||
isc_rwlocktype_write);
|
|
||||||
|
|
||||||
- header = isc_heap_element(rbtdb->heaps[locknum], 1);
|
|
||||||
- if (header && header->rdh_ttl < now - RBTDB_VIRTUAL) {
|
|
||||||
- expire_header(rbtdb, header, tree_locked,
|
|
||||||
- expire_ttl);
|
|
||||||
- purgecount--;
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- for (header = ISC_LIST_TAIL(rbtdb->rdatasets[locknum]);
|
|
||||||
- header != NULL && purgecount > 0;
|
|
||||||
- header = header_prev) {
|
|
||||||
- header_prev = ISC_LIST_PREV(header, link);
|
|
||||||
- /*
|
|
||||||
- * Unlink the entry at this point to avoid checking it
|
|
||||||
- * again even if it's currently used someone else and
|
|
||||||
- * cannot be purged at this moment. This entry won't be
|
|
||||||
- * referenced any more (so unlinking is safe) since the
|
|
||||||
- * TTL was reset to 0.
|
|
||||||
- */
|
|
||||||
- ISC_LIST_UNLINK(rbtdb->rdatasets[locknum], header,
|
|
||||||
- link);
|
|
||||||
- expire_header(rbtdb, header, tree_locked,
|
|
||||||
- expire_lru);
|
|
||||||
- purgecount--;
|
|
||||||
- }
|
|
||||||
+ purged += expire_lru_headers(rbtdb, locknum, purgesize - purged,
|
|
||||||
+ tree_locked);
|
|
||||||
|
|
||||||
NODE_UNLOCK(&rbtdb->node_locks[locknum].lock,
|
|
||||||
isc_rwlocktype_write);
|
|
||||||
--
|
|
||||||
2.40.1
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
@ -1,64 +0,0 @@
|
|||||||
From f0fc9d7999a94da3d471c4e0a35b1f447f25eea6 Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?Petr=20Men=C5=A1=C3=ADk?= <pemensik@redhat.com>
|
|
||||||
Date: Mon, 26 Feb 2024 21:08:42 +0100
|
|
||||||
Subject: [PATCH] Add normal task queue also to non-thread version
|
|
||||||
|
|
||||||
Non-thread builds are used by us for dhcp package. Make it working
|
|
||||||
again.
|
|
||||||
|
|
||||||
Related to [GL #4424] and [GL #4459].
|
|
||||||
---
|
|
||||||
lib/isc/task.c | 14 ++++++++------
|
|
||||||
1 file changed, 8 insertions(+), 6 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/lib/isc/task.c b/lib/isc/task.c
|
|
||||||
index cc83269..5315b51 100644
|
|
||||||
--- a/lib/isc/task.c
|
|
||||||
+++ b/lib/isc/task.c
|
|
||||||
@@ -1115,7 +1115,7 @@ dispatch(isc__taskmgr_t *manager, isc_taskqueue_t qid) {
|
|
||||||
}
|
|
||||||
#else /* USE_WORKER_THREADS */
|
|
||||||
if (total_dispatch_count >= DEFAULT_TASKMGR_QUANTUM ||
|
|
||||||
- empty_readyq(manager))
|
|
||||||
+ empty_readyq(manager, qid))
|
|
||||||
break;
|
|
||||||
#endif /* USE_WORKER_THREADS */
|
|
||||||
XTHREADTRACE(isc_msgcat_get(isc_msgcat, ISC_MSGSET_TASK,
|
|
||||||
@@ -1318,11 +1318,11 @@ dispatch(isc__taskmgr_t *manager, isc_taskqueue_t qid) {
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef USE_WORKER_THREADS
|
|
||||||
- ISC_LIST_APPENDLIST(manager->ready_tasks, new_ready_tasks, ready_link);
|
|
||||||
- ISC_LIST_APPENDLIST(manager->ready_priority_tasks, new_priority_tasks,
|
|
||||||
+ ISC_LIST_APPENDLIST(manager->ready_tasks[qid], new_ready_tasks, ready_link);
|
|
||||||
+ ISC_LIST_APPENDLIST(manager->ready_priority_tasks[qid], new_priority_tasks,
|
|
||||||
ready_priority_link);
|
|
||||||
manager->tasks_ready += tasks_ready;
|
|
||||||
- if (empty_readyq(manager))
|
|
||||||
+ if (empty_readyq(manager, qid))
|
|
||||||
manager->mode = isc_taskmgrmode_normal;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
@@ -1713,7 +1713,8 @@ isc__taskmgr_ready(isc_taskmgr_t *manager0) {
|
|
||||||
return (false);
|
|
||||||
|
|
||||||
LOCK(&manager->lock);
|
|
||||||
- is_ready = !empty_readyq(manager);
|
|
||||||
+ is_ready = !empty_readyq(manager, isc_taskqueue_normal) ||
|
|
||||||
+ !empty_readyq(manager, isc_taskqueue_slow);
|
|
||||||
UNLOCK(&manager->lock);
|
|
||||||
|
|
||||||
return (is_ready);
|
|
||||||
@@ -1730,7 +1731,8 @@ isc__taskmgr_dispatch(isc_taskmgr_t *manager0) {
|
|
||||||
if (manager == NULL)
|
|
||||||
return (ISC_R_NOTFOUND);
|
|
||||||
|
|
||||||
- dispatch(manager);
|
|
||||||
+ dispatch(manager, isc_taskqueue_normal);
|
|
||||||
+ dispatch(manager, isc_taskqueue_slow);
|
|
||||||
|
|
||||||
return (ISC_R_SUCCESS);
|
|
||||||
}
|
|
||||||
--
|
|
||||||
2.43.2
|
|
||||||
|
|
@ -1,737 +0,0 @@
|
|||||||
From 4c20ab54ec503f65d8ee0b863cbf41103d95130a Mon Sep 17 00:00:00 2001
|
|
||||||
From: Mark Andrews <marka@isc.org>
|
|
||||||
Date: Wed, 22 Nov 2023 16:59:03 +1100
|
|
||||||
Subject: [PATCH] Fail the DNSSEC validation on the first failure
|
|
||||||
|
|
||||||
Be more strict when encountering DNSSEC validation failures - fail on
|
|
||||||
the first failure. This will break domains that have DNSSEC signing
|
|
||||||
keys with duplicate key ids, but this is something that's much easier
|
|
||||||
to fix on the authoritative side, so we are just going to be strict
|
|
||||||
on the resolver side where it is causing performance problems.
|
|
||||||
|
|
||||||
(cherry picked from commit 8b7ecba9885e163c07c2dd3e1ceab79b2ba89e34)
|
|
||||||
|
|
||||||
Add normal and slow task queues
|
|
||||||
|
|
||||||
Split the task manager queues into normal and slow task queues, so we
|
|
||||||
can move the tasks that blocks processing for a long time (like DNSSEC
|
|
||||||
validation) into the slow queue which doesn't block fast
|
|
||||||
operations (like responding from the cache). This mitigates the whole
|
|
||||||
class of KeyTrap-like issues.
|
|
||||||
|
|
||||||
(cherry picked from commit db083a21726300916fa0b9fd8a433a796fedf636)
|
|
||||||
|
|
||||||
Don't iterate from start every time we select new signing key
|
|
||||||
|
|
||||||
Improve the selecting of the new signing key by remembering where
|
|
||||||
we stopped the iteration and just continue from that place instead
|
|
||||||
of iterating from the start over and over again each time.
|
|
||||||
|
|
||||||
(cherry picked from commit 75faeefcab47e4f1e12b358525190b4be90f97de)
|
|
||||||
|
|
||||||
Optimize selecting the signing key
|
|
||||||
|
|
||||||
Don't parse the crypto data before parsing and matching the id and the
|
|
||||||
algorithm.
|
|
||||||
|
|
||||||
(cherry picked from commit b38552cca7200a72658e482f8407f57516efc5db)
|
|
||||||
|
|
||||||
6322. [security] Specific DNS answers could cause a denial-of-service
|
|
||||||
condition due to DNS validation taking a long time.
|
|
||||||
(CVE-2023-50387) [GL #4424]
|
|
||||||
|
|
||||||
The same code change also addresses another problem:
|
|
||||||
preparing NSEC3 closest encloser proofs could exhaust
|
|
||||||
available CPU resources. (CVE-2023-50868) [GL #4459]
|
|
||||||
---
|
|
||||||
lib/dns/dst_api.c | 25 ++++--
|
|
||||||
lib/dns/include/dns/validator.h | 1 +
|
|
||||||
lib/dns/include/dst/dst.h | 4 +
|
|
||||||
lib/dns/resolver.c | 2 +-
|
|
||||||
lib/dns/validator.c | 97 +++++++++-----------
|
|
||||||
lib/dns/win32/libdns.def.in | 1 +
|
|
||||||
lib/isc/include/isc/task.h | 11 ++-
|
|
||||||
lib/isc/task.c | 153 ++++++++++++++++++++++----------
|
|
||||||
8 files changed, 186 insertions(+), 108 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/lib/dns/dst_api.c b/lib/dns/dst_api.c
|
|
||||||
index 2156384ec1..6bcd99796c 100644
|
|
||||||
--- a/lib/dns/dst_api.c
|
|
||||||
+++ b/lib/dns/dst_api.c
|
|
||||||
@@ -105,6 +105,7 @@ static isc_result_t frombuffer(dns_name_t *name,
|
|
||||||
dns_rdataclass_t rdclass,
|
|
||||||
isc_buffer_t *source,
|
|
||||||
isc_mem_t *mctx,
|
|
||||||
+ bool no_rdata,
|
|
||||||
dst_key_t **keyp);
|
|
||||||
|
|
||||||
static isc_result_t algorithm_status(unsigned int alg);
|
|
||||||
@@ -764,6 +765,13 @@ isc_result_t
|
|
||||||
dst_key_fromdns(dns_name_t *name, dns_rdataclass_t rdclass,
|
|
||||||
isc_buffer_t *source, isc_mem_t *mctx, dst_key_t **keyp)
|
|
||||||
{
|
|
||||||
+ return (dst_key_fromdns_ex(name, rdclass, source, mctx, false, keyp));
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+isc_result_t
|
|
||||||
+dst_key_fromdns_ex(dns_name_t *name, dns_rdataclass_t rdclass,
|
|
||||||
+ isc_buffer_t *source, isc_mem_t *mctx, bool no_rdata,
|
|
||||||
+ dst_key_t **keyp) {
|
|
||||||
uint8_t alg, proto;
|
|
||||||
uint32_t flags, extflags;
|
|
||||||
dst_key_t *key = NULL;
|
|
||||||
@@ -792,7 +800,7 @@ dst_key_fromdns(dns_name_t *name, dns_rdataclass_t rdclass,
|
|
||||||
}
|
|
||||||
|
|
||||||
result = frombuffer(name, alg, flags, proto, rdclass, source,
|
|
||||||
- mctx, &key);
|
|
||||||
+ mctx, no_rdata, &key);
|
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
return (result);
|
|
||||||
key->key_id = id;
|
|
||||||
@@ -814,7 +822,7 @@ dst_key_frombuffer(dns_name_t *name, unsigned int alg,
|
|
||||||
REQUIRE(dst_initialized);
|
|
||||||
|
|
||||||
result = frombuffer(name, alg, flags, protocol, rdclass, source,
|
|
||||||
- mctx, &key);
|
|
||||||
+ mctx, false, &key);
|
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
return (result);
|
|
||||||
|
|
||||||
@@ -1915,7 +1923,8 @@ computeid(dst_key_t *key) {
|
|
||||||
static isc_result_t
|
|
||||||
frombuffer(dns_name_t *name, unsigned int alg, unsigned int flags,
|
|
||||||
unsigned int protocol, dns_rdataclass_t rdclass,
|
|
||||||
- isc_buffer_t *source, isc_mem_t *mctx, dst_key_t **keyp)
|
|
||||||
+ isc_buffer_t *source, isc_mem_t *mctx, bool no_rdata,
|
|
||||||
+ dst_key_t **keyp)
|
|
||||||
{
|
|
||||||
dst_key_t *key;
|
|
||||||
isc_result_t ret;
|
|
||||||
@@ -1940,10 +1949,12 @@ frombuffer(dns_name_t *name, unsigned int alg, unsigned int flags,
|
|
||||||
return (DST_R_UNSUPPORTEDALG);
|
|
||||||
}
|
|
||||||
|
|
||||||
- ret = key->func->fromdns(key, source);
|
|
||||||
- if (ret != ISC_R_SUCCESS) {
|
|
||||||
- dst_key_free(&key);
|
|
||||||
- return (ret);
|
|
||||||
+ if (!no_rdata) {
|
|
||||||
+ ret = key->func->fromdns(key, source);
|
|
||||||
+ if (ret != ISC_R_SUCCESS) {
|
|
||||||
+ dst_key_free(&key);
|
|
||||||
+ return (ret);
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
diff --git a/lib/dns/include/dns/validator.h b/lib/dns/include/dns/validator.h
|
|
||||||
index cc4478d6d4..b4bf8f29db 100644
|
|
||||||
--- a/lib/dns/include/dns/validator.h
|
|
||||||
+++ b/lib/dns/include/dns/validator.h
|
|
||||||
@@ -160,6 +160,7 @@ struct dns_validator {
|
|
||||||
unsigned int depth;
|
|
||||||
unsigned int authcount;
|
|
||||||
unsigned int authfail;
|
|
||||||
+ bool failed;
|
|
||||||
isc_stdtime_t start;
|
|
||||||
};
|
|
||||||
|
|
||||||
diff --git a/lib/dns/include/dst/dst.h b/lib/dns/include/dst/dst.h
|
|
||||||
index 180c841307..a8be2daf67 100644
|
|
||||||
--- a/lib/dns/include/dst/dst.h
|
|
||||||
+++ b/lib/dns/include/dst/dst.h
|
|
||||||
@@ -435,6 +435,10 @@ dst_key_tofile(const dst_key_t *key, int type, const char *directory);
|
|
||||||
*/
|
|
||||||
|
|
||||||
isc_result_t
|
|
||||||
+dst_key_fromdns_ex(dns_name_t *name, dns_rdataclass_t rdclass,
|
|
||||||
+ isc_buffer_t *source, isc_mem_t *mctx, bool no_rdata,
|
|
||||||
+ dst_key_t **keyp);
|
|
||||||
+isc_result_t
|
|
||||||
dst_key_fromdns(dns_name_t *name, dns_rdataclass_t rdclass,
|
|
||||||
isc_buffer_t *source, isc_mem_t *mctx, dst_key_t **keyp);
|
|
||||||
/*%<
|
|
||||||
diff --git a/lib/dns/resolver.c b/lib/dns/resolver.c
|
|
||||||
index 4f71f48039..487107614c 100644
|
|
||||||
--- a/lib/dns/resolver.c
|
|
||||||
+++ b/lib/dns/resolver.c
|
|
||||||
@@ -9267,7 +9267,7 @@ dns_resolver_create(dns_view_t *view,
|
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto cleanup_buckets;
|
|
||||||
res->buckets[i].task = NULL;
|
|
||||||
- result = isc_task_create(taskmgr, 0, &res->buckets[i].task);
|
|
||||||
+ result = isc_task_create(taskmgr, ISC_TASK_QUANTUM_SLOW, &res->buckets[i].task);
|
|
||||||
if (result != ISC_R_SUCCESS) {
|
|
||||||
DESTROYLOCK(&res->buckets[i].lock);
|
|
||||||
goto cleanup_buckets;
|
|
||||||
diff --git a/lib/dns/validator.c b/lib/dns/validator.c
|
|
||||||
index 2a5c3caa6a..0b257fe874 100644
|
|
||||||
--- a/lib/dns/validator.c
|
|
||||||
+++ b/lib/dns/validator.c
|
|
||||||
@@ -1207,6 +1207,12 @@ create_validator(dns_validator_t *val, dns_name_t *name, dns_rdatatype_t type,
|
|
||||||
* val->key at it.
|
|
||||||
*
|
|
||||||
* If val->key is non-NULL, this returns the next matching key.
|
|
||||||
+ * If val->key is already non-NULL, start searching from the next position in
|
|
||||||
+ * 'rdataset' to find the *next* key that could have signed 'siginfo', then
|
|
||||||
+ * set val->key to that.
|
|
||||||
+ *
|
|
||||||
+ * Returns ISC_R_SUCCESS if a possible matching key has been found,
|
|
||||||
+ * ISC_R_NOTFOUND if not. Any other value indicates error.
|
|
||||||
*/
|
|
||||||
static isc_result_t
|
|
||||||
get_dst_key(dns_validator_t *val, dns_rdata_rrsig_t *siginfo,
|
|
||||||
@@ -1216,54 +1222,59 @@ get_dst_key(dns_validator_t *val, dns_rdata_rrsig_t *siginfo,
|
|
||||||
isc_buffer_t b;
|
|
||||||
dns_rdata_t rdata = DNS_RDATA_INIT;
|
|
||||||
dst_key_t *oldkey = val->key;
|
|
||||||
- bool foundold;
|
|
||||||
+ bool no_rdata = false;
|
|
||||||
|
|
||||||
- if (oldkey == NULL)
|
|
||||||
- foundold = true;
|
|
||||||
- else {
|
|
||||||
- foundold = false;
|
|
||||||
+ if (oldkey == NULL) {
|
|
||||||
+ result = dns_rdataset_first(rdataset);
|
|
||||||
+ } else {
|
|
||||||
+ dst_key_free(&oldkey);
|
|
||||||
val->key = NULL;
|
|
||||||
+ result = dns_rdataset_next(rdataset);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (result != ISC_R_SUCCESS) {
|
|
||||||
+ goto done;
|
|
||||||
}
|
|
||||||
|
|
||||||
- result = dns_rdataset_first(rdataset);
|
|
||||||
- if (result != ISC_R_SUCCESS)
|
|
||||||
- goto failure;
|
|
||||||
do {
|
|
||||||
dns_rdataset_current(rdataset, &rdata);
|
|
||||||
|
|
||||||
isc_buffer_init(&b, rdata.data, rdata.length);
|
|
||||||
isc_buffer_add(&b, rdata.length);
|
|
||||||
INSIST(val->key == NULL);
|
|
||||||
- result = dst_key_fromdns(&siginfo->signer, rdata.rdclass, &b,
|
|
||||||
- val->view->mctx, &val->key);
|
|
||||||
+ result = dst_key_fromdns_ex(&siginfo->signer, rdata.rdclass, &b,
|
|
||||||
+ val->view->mctx, no_rdata,
|
|
||||||
+ &val->key);
|
|
||||||
if (result == ISC_R_SUCCESS) {
|
|
||||||
if (siginfo->algorithm ==
|
|
||||||
(dns_secalg_t)dst_key_alg(val->key) &&
|
|
||||||
siginfo->keyid ==
|
|
||||||
(dns_keytag_t)dst_key_id(val->key) &&
|
|
||||||
+ (dst_key_flags(val->key) & DNS_KEYFLAG_REVOKE) ==
|
|
||||||
+ 0 &&
|
|
||||||
dst_key_iszonekey(val->key))
|
|
||||||
{
|
|
||||||
- if (foundold) {
|
|
||||||
- /*
|
|
||||||
- * This is the key we're looking for.
|
|
||||||
- */
|
|
||||||
- return (ISC_R_SUCCESS);
|
|
||||||
- } else if (dst_key_compare(oldkey, val->key)) {
|
|
||||||
- foundold = true;
|
|
||||||
- dst_key_free(&oldkey);
|
|
||||||
+ if (no_rdata) {
|
|
||||||
+ /* Retry with full key */
|
|
||||||
+ dns_rdata_reset(&rdata);
|
|
||||||
+ dst_key_free(&val->key);
|
|
||||||
+ no_rdata = false;
|
|
||||||
+ continue;
|
|
||||||
}
|
|
||||||
+ /* This is the key we're looking for. */
|
|
||||||
+ goto done;
|
|
||||||
}
|
|
||||||
dst_key_free(&val->key);
|
|
||||||
}
|
|
||||||
dns_rdata_reset(&rdata);
|
|
||||||
result = dns_rdataset_next(rdataset);
|
|
||||||
+ no_rdata = true;
|
|
||||||
} while (result == ISC_R_SUCCESS);
|
|
||||||
- if (result == ISC_R_NOMORE)
|
|
||||||
- result = ISC_R_NOTFOUND;
|
|
||||||
|
|
||||||
- failure:
|
|
||||||
- if (oldkey != NULL)
|
|
||||||
- dst_key_free(&oldkey);
|
|
||||||
+done:
|
|
||||||
+ if (result == ISC_R_NOMORE) {
|
|
||||||
+ result = ISC_R_NOTFOUND;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
return (result);
|
|
||||||
}
|
|
||||||
@@ -1633,37 +1644,13 @@ validate(dns_validator_t *val, bool resume) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
- do {
|
|
||||||
- vresult = verify(val, val->key, &rdata,
|
|
||||||
- val->siginfo->keyid);
|
|
||||||
- if (vresult == ISC_R_SUCCESS)
|
|
||||||
- break;
|
|
||||||
- if (val->keynode != NULL) {
|
|
||||||
- dns_keynode_t *nextnode = NULL;
|
|
||||||
- result = dns_keytable_findnextkeynode(
|
|
||||||
- val->keytable,
|
|
||||||
- val->keynode,
|
|
||||||
- &nextnode);
|
|
||||||
- dns_keytable_detachkeynode(val->keytable,
|
|
||||||
- &val->keynode);
|
|
||||||
- val->keynode = nextnode;
|
|
||||||
- if (result != ISC_R_SUCCESS) {
|
|
||||||
- val->key = NULL;
|
|
||||||
- break;
|
|
||||||
- }
|
|
||||||
- val->key = dns_keynode_key(val->keynode);
|
|
||||||
- if (val->key == NULL)
|
|
||||||
- break;
|
|
||||||
- } else {
|
|
||||||
- if (get_dst_key(val, val->siginfo, val->keyset)
|
|
||||||
- != ISC_R_SUCCESS)
|
|
||||||
- break;
|
|
||||||
- }
|
|
||||||
- } while (1);
|
|
||||||
- if (vresult != ISC_R_SUCCESS)
|
|
||||||
+ vresult = verify(val, val->key, &rdata,
|
|
||||||
+ val->siginfo->keyid);
|
|
||||||
+ if (vresult != ISC_R_SUCCESS) {
|
|
||||||
+ val->failed = true;
|
|
||||||
validator_log(val, ISC_LOG_DEBUG(3),
|
|
||||||
"failed to verify rdataset");
|
|
||||||
- else {
|
|
||||||
+ } else {
|
|
||||||
dns_rdataset_trimttl(event->rdataset,
|
|
||||||
event->sigrdataset,
|
|
||||||
val->siginfo, val->start,
|
|
||||||
@@ -1700,9 +1687,13 @@ validate(dns_validator_t *val, bool resume) {
|
|
||||||
} else {
|
|
||||||
validator_log(val, ISC_LOG_DEBUG(3),
|
|
||||||
"verify failure: %s",
|
|
||||||
- isc_result_totext(result));
|
|
||||||
+ isc_result_totext(vresult));
|
|
||||||
resume = false;
|
|
||||||
}
|
|
||||||
+ if (val->failed) {
|
|
||||||
+ result = ISC_R_NOMORE;
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
if (result != ISC_R_NOMORE) {
|
|
||||||
validator_log(val, ISC_LOG_DEBUG(3),
|
|
||||||
diff --git a/lib/dns/win32/libdns.def.in b/lib/dns/win32/libdns.def.in
|
|
||||||
index f597049493..7320653439 100644
|
|
||||||
--- a/lib/dns/win32/libdns.def.in
|
|
||||||
+++ b/lib/dns/win32/libdns.def.in
|
|
||||||
@@ -1439,6 +1439,7 @@ dst_key_format
|
|
||||||
dst_key_free
|
|
||||||
dst_key_frombuffer
|
|
||||||
dst_key_fromdns
|
|
||||||
+dst_key_fromdns_ex
|
|
||||||
dst_key_fromfile
|
|
||||||
dst_key_fromgssapi
|
|
||||||
dst_key_fromlabel
|
|
||||||
diff --git a/lib/isc/include/isc/task.h b/lib/isc/include/isc/task.h
|
|
||||||
index 28e5e25fc6..42f7763869 100644
|
|
||||||
--- a/lib/isc/include/isc/task.h
|
|
||||||
+++ b/lib/isc/include/isc/task.h
|
|
||||||
@@ -98,8 +98,15 @@ ISC_LANG_BEGINDECLS
|
|
||||||
***/
|
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
- isc_taskmgrmode_normal = 0,
|
|
||||||
- isc_taskmgrmode_privileged
|
|
||||||
+ isc_taskqueue_normal = 0,
|
|
||||||
+ isc_taskqueue_slow = 1,
|
|
||||||
+} isc_taskqueue_t;
|
|
||||||
+
|
|
||||||
+#define ISC_TASK_QUANTUM_SLOW 1024
|
|
||||||
+
|
|
||||||
+typedef enum {
|
|
||||||
+ isc_taskmgrmode_normal = 0,
|
|
||||||
+ isc_taskmgrmode_privileged
|
|
||||||
} isc_taskmgrmode_t;
|
|
||||||
|
|
||||||
/*% Task and task manager methods */
|
|
||||||
diff --git a/lib/isc/task.c b/lib/isc/task.c
|
|
||||||
index 048639350b..cc83269df2 100644
|
|
||||||
--- a/lib/isc/task.c
|
|
||||||
+++ b/lib/isc/task.c
|
|
||||||
@@ -107,6 +107,7 @@ struct isc__task {
|
|
||||||
isc_eventlist_t on_shutdown;
|
|
||||||
unsigned int nevents;
|
|
||||||
unsigned int quantum;
|
|
||||||
+ unsigned int qid;
|
|
||||||
unsigned int flags;
|
|
||||||
isc_stdtime_t now;
|
|
||||||
isc_time_t tnow;
|
|
||||||
@@ -141,11 +142,11 @@ struct isc__taskmgr {
|
|
||||||
/* Locked by task manager lock. */
|
|
||||||
unsigned int default_quantum;
|
|
||||||
LIST(isc__task_t) tasks;
|
|
||||||
- isc__tasklist_t ready_tasks;
|
|
||||||
- isc__tasklist_t ready_priority_tasks;
|
|
||||||
+ isc__tasklist_t ready_tasks[2];
|
|
||||||
+ isc__tasklist_t ready_priority_tasks[2];
|
|
||||||
isc_taskmgrmode_t mode;
|
|
||||||
#ifdef ISC_PLATFORM_USETHREADS
|
|
||||||
- isc_condition_t work_available;
|
|
||||||
+ isc_condition_t work_available[2];
|
|
||||||
isc_condition_t exclusive_granted;
|
|
||||||
isc_condition_t paused;
|
|
||||||
#endif /* ISC_PLATFORM_USETHREADS */
|
|
||||||
@@ -247,13 +248,13 @@ isc_taskmgrmode_t
|
|
||||||
isc__taskmgr_mode(isc_taskmgr_t *manager0);
|
|
||||||
|
|
||||||
static inline bool
|
|
||||||
-empty_readyq(isc__taskmgr_t *manager);
|
|
||||||
+empty_readyq(isc__taskmgr_t *manager, isc_taskqueue_t qid);
|
|
||||||
|
|
||||||
static inline isc__task_t *
|
|
||||||
-pop_readyq(isc__taskmgr_t *manager);
|
|
||||||
+pop_readyq(isc__taskmgr_t *manager, isc_taskqueue_t qid);
|
|
||||||
|
|
||||||
static inline void
|
|
||||||
-push_readyq(isc__taskmgr_t *manager, isc__task_t *task);
|
|
||||||
+push_readyq(isc__taskmgr_t *manager, isc__task_t *task, isc_taskqueue_t qid);
|
|
||||||
|
|
||||||
static struct isc__taskmethods {
|
|
||||||
isc_taskmethods_t methods;
|
|
||||||
@@ -324,7 +325,8 @@ task_finished(isc__task_t *task) {
|
|
||||||
* any idle worker threads so they
|
|
||||||
* can exit.
|
|
||||||
*/
|
|
||||||
- BROADCAST(&manager->work_available);
|
|
||||||
+ BROADCAST(&manager->work_available[isc_taskqueue_normal]);
|
|
||||||
+ BROADCAST(&manager->work_available[isc_taskqueue_slow]);
|
|
||||||
}
|
|
||||||
#endif /* USE_WORKER_THREADS */
|
|
||||||
UNLOCK(&manager->lock);
|
|
||||||
@@ -364,7 +366,13 @@ isc__task_create(isc_taskmgr_t *manager0, unsigned int quantum,
|
|
||||||
INIT_LIST(task->events);
|
|
||||||
INIT_LIST(task->on_shutdown);
|
|
||||||
task->nevents = 0;
|
|
||||||
- task->quantum = quantum;
|
|
||||||
+ if (quantum >= ISC_TASK_QUANTUM_SLOW) {
|
|
||||||
+ task->qid = isc_taskqueue_slow;
|
|
||||||
+ task->quantum = quantum - ISC_TASK_QUANTUM_SLOW;
|
|
||||||
+ } else {
|
|
||||||
+ task->qid = isc_taskqueue_normal;
|
|
||||||
+ task->quantum = quantum;
|
|
||||||
+ }
|
|
||||||
task->flags = 0;
|
|
||||||
task->now = 0;
|
|
||||||
isc_time_settoepoch(&task->tnow);
|
|
||||||
@@ -476,11 +484,11 @@ task_ready(isc__task_t *task) {
|
|
||||||
|
|
||||||
LOCK(&manager->lock);
|
|
||||||
LOCK(&task->lock);
|
|
||||||
- push_readyq(manager, task);
|
|
||||||
+ push_readyq(manager, task, task->qid);
|
|
||||||
UNLOCK(&task->lock);
|
|
||||||
#ifdef USE_WORKER_THREADS
|
|
||||||
if (manager->mode == isc_taskmgrmode_normal || has_privilege)
|
|
||||||
- SIGNAL(&manager->work_available);
|
|
||||||
+ SIGNAL(&manager->work_available[task->qid]);
|
|
||||||
#endif /* USE_WORKER_THREADS */
|
|
||||||
UNLOCK(&manager->lock);
|
|
||||||
}
|
|
||||||
@@ -961,13 +969,13 @@ isc__task_getcurrenttimex(isc_task_t *task0, isc_time_t *t) {
|
|
||||||
* Caller must hold the task manager lock.
|
|
||||||
*/
|
|
||||||
static inline bool
|
|
||||||
-empty_readyq(isc__taskmgr_t *manager) {
|
|
||||||
+empty_readyq(isc__taskmgr_t *manager, isc_taskqueue_t qid) {
|
|
||||||
isc__tasklist_t queue;
|
|
||||||
|
|
||||||
if (manager->mode == isc_taskmgrmode_normal)
|
|
||||||
- queue = manager->ready_tasks;
|
|
||||||
+ queue = manager->ready_tasks[qid];
|
|
||||||
else
|
|
||||||
- queue = manager->ready_priority_tasks;
|
|
||||||
+ queue = manager->ready_priority_tasks[qid];
|
|
||||||
|
|
||||||
return (EMPTY(queue));
|
|
||||||
}
|
|
||||||
@@ -981,18 +989,18 @@ empty_readyq(isc__taskmgr_t *manager) {
|
|
||||||
* Caller must hold the task manager lock.
|
|
||||||
*/
|
|
||||||
static inline isc__task_t *
|
|
||||||
-pop_readyq(isc__taskmgr_t *manager) {
|
|
||||||
+pop_readyq(isc__taskmgr_t *manager, isc_taskqueue_t qid) {
|
|
||||||
isc__task_t *task;
|
|
||||||
|
|
||||||
if (manager->mode == isc_taskmgrmode_normal)
|
|
||||||
- task = HEAD(manager->ready_tasks);
|
|
||||||
+ task = HEAD(manager->ready_tasks[qid]);
|
|
||||||
else
|
|
||||||
- task = HEAD(manager->ready_priority_tasks);
|
|
||||||
+ task = HEAD(manager->ready_priority_tasks[qid]);
|
|
||||||
|
|
||||||
if (task != NULL) {
|
|
||||||
- DEQUEUE(manager->ready_tasks, task, ready_link);
|
|
||||||
+ DEQUEUE(manager->ready_tasks[qid], task, ready_link);
|
|
||||||
if (ISC_LINK_LINKED(task, ready_priority_link))
|
|
||||||
- DEQUEUE(manager->ready_priority_tasks, task,
|
|
||||||
+ DEQUEUE(manager->ready_priority_tasks[qid], task,
|
|
||||||
ready_priority_link);
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1006,16 +1014,16 @@ pop_readyq(isc__taskmgr_t *manager) {
|
|
||||||
* Caller must hold the task manager lock.
|
|
||||||
*/
|
|
||||||
static inline void
|
|
||||||
-push_readyq(isc__taskmgr_t *manager, isc__task_t *task) {
|
|
||||||
- ENQUEUE(manager->ready_tasks, task, ready_link);
|
|
||||||
+push_readyq(isc__taskmgr_t *manager, isc__task_t *task, isc_taskqueue_t qid) {
|
|
||||||
+ ENQUEUE(manager->ready_tasks[qid], task, ready_link);
|
|
||||||
if ((task->flags & TASK_F_PRIVILEGED) != 0)
|
|
||||||
- ENQUEUE(manager->ready_priority_tasks, task,
|
|
||||||
+ ENQUEUE(manager->ready_priority_tasks[qid], task,
|
|
||||||
ready_priority_link);
|
|
||||||
manager->tasks_ready++;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
-dispatch(isc__taskmgr_t *manager) {
|
|
||||||
+dispatch(isc__taskmgr_t *manager, isc_taskqueue_t qid) {
|
|
||||||
isc__task_t *task;
|
|
||||||
#ifndef USE_WORKER_THREADS
|
|
||||||
unsigned int total_dispatch_count = 0;
|
|
||||||
@@ -1094,13 +1102,13 @@ dispatch(isc__taskmgr_t *manager) {
|
|
||||||
* If a pause has been requested, don't do any work
|
|
||||||
* until it's been released.
|
|
||||||
*/
|
|
||||||
- while ((empty_readyq(manager) || manager->pause_requested ||
|
|
||||||
+ while ((empty_readyq(manager, qid) || manager->pause_requested ||
|
|
||||||
manager->exclusive_requested) && !FINISHED(manager))
|
|
||||||
{
|
|
||||||
XTHREADTRACE(isc_msgcat_get(isc_msgcat,
|
|
||||||
ISC_MSGSET_GENERAL,
|
|
||||||
ISC_MSG_WAIT, "wait"));
|
|
||||||
- WAIT(&manager->work_available, &manager->lock);
|
|
||||||
+ WAIT(&manager->work_available[qid], &manager->lock);
|
|
||||||
XTHREADTRACE(isc_msgcat_get(isc_msgcat,
|
|
||||||
ISC_MSGSET_TASK,
|
|
||||||
ISC_MSG_AWAKE, "awake"));
|
|
||||||
@@ -1113,7 +1121,7 @@ dispatch(isc__taskmgr_t *manager) {
|
|
||||||
XTHREADTRACE(isc_msgcat_get(isc_msgcat, ISC_MSGSET_TASK,
|
|
||||||
ISC_MSG_WORKING, "working"));
|
|
||||||
|
|
||||||
- task = pop_readyq(manager);
|
|
||||||
+ task = pop_readyq(manager, qid);
|
|
||||||
if (task != NULL) {
|
|
||||||
unsigned int dispatch_count = 0;
|
|
||||||
bool done = false;
|
|
||||||
@@ -1278,7 +1286,7 @@ dispatch(isc__taskmgr_t *manager) {
|
|
||||||
*/
|
|
||||||
#ifdef USE_WORKER_THREADS
|
|
||||||
LOCK(&task->lock);
|
|
||||||
- push_readyq(manager, task);
|
|
||||||
+ push_readyq(manager, task, qid);
|
|
||||||
UNLOCK(&task->lock);
|
|
||||||
#else
|
|
||||||
ENQUEUE(new_ready_tasks, task, ready_link);
|
|
||||||
@@ -1297,10 +1305,14 @@ dispatch(isc__taskmgr_t *manager) {
|
|
||||||
* we're stuck. Automatically drop privileges at that
|
|
||||||
* point and continue with the regular ready queue.
|
|
||||||
*/
|
|
||||||
- if (manager->tasks_running == 0 && empty_readyq(manager)) {
|
|
||||||
+ if (manager->tasks_running == 0 && empty_readyq(manager, isc_taskqueue_normal) && empty_readyq(manager, isc_taskqueue_slow)) {
|
|
||||||
manager->mode = isc_taskmgrmode_normal;
|
|
||||||
- if (!empty_readyq(manager))
|
|
||||||
- BROADCAST(&manager->work_available);
|
|
||||||
+ if (!empty_readyq(manager, isc_taskqueue_normal)) {
|
|
||||||
+ BROADCAST(&manager->work_available[isc_taskqueue_normal]);
|
|
||||||
+ }
|
|
||||||
+ if (!empty_readyq(manager, isc_taskqueue_slow)) {
|
|
||||||
+ BROADCAST(&manager->work_available[isc_taskqueue_slow]);
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
@@ -1322,13 +1334,37 @@ static isc_threadresult_t
|
|
||||||
#ifdef _WIN32
|
|
||||||
WINAPI
|
|
||||||
#endif
|
|
||||||
-run(void *uap) {
|
|
||||||
+run_normal(void *uap) {
|
|
||||||
isc__taskmgr_t *manager = uap;
|
|
||||||
|
|
||||||
XTHREADTRACE(isc_msgcat_get(isc_msgcat, ISC_MSGSET_GENERAL,
|
|
||||||
ISC_MSG_STARTING, "starting"));
|
|
||||||
|
|
||||||
- dispatch(manager);
|
|
||||||
+ dispatch(manager, isc_taskqueue_normal);
|
|
||||||
+
|
|
||||||
+ XTHREADTRACE(isc_msgcat_get(isc_msgcat, ISC_MSGSET_GENERAL,
|
|
||||||
+ ISC_MSG_EXITING, "exiting"));
|
|
||||||
+
|
|
||||||
+#ifdef OPENSSL_LEAKS
|
|
||||||
+ ERR_remove_state(0);
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
+ return ((isc_threadresult_t)0);
|
|
||||||
+}
|
|
||||||
+#endif /* USE_WORKER_THREADS */
|
|
||||||
+
|
|
||||||
+#ifdef USE_WORKER_THREADS
|
|
||||||
+static isc_threadresult_t
|
|
||||||
+#ifdef _WIN32
|
|
||||||
+WINAPI
|
|
||||||
+#endif
|
|
||||||
+run_slow(void *uap) {
|
|
||||||
+ isc__taskmgr_t *manager = uap;
|
|
||||||
+
|
|
||||||
+ XTHREADTRACE(isc_msgcat_get(isc_msgcat, ISC_MSGSET_GENERAL,
|
|
||||||
+ ISC_MSG_STARTING, "starting"));
|
|
||||||
+
|
|
||||||
+ dispatch(manager, isc_taskqueue_slow);
|
|
||||||
|
|
||||||
XTHREADTRACE(isc_msgcat_get(isc_msgcat, ISC_MSGSET_GENERAL,
|
|
||||||
ISC_MSG_EXITING, "exiting"));
|
|
||||||
@@ -1347,7 +1383,8 @@ manager_free(isc__taskmgr_t *manager) {
|
|
||||||
|
|
||||||
#ifdef USE_WORKER_THREADS
|
|
||||||
(void)isc_condition_destroy(&manager->exclusive_granted);
|
|
||||||
- (void)isc_condition_destroy(&manager->work_available);
|
|
||||||
+ (void)isc_condition_destroy(&manager->work_available[isc_taskqueue_normal]);
|
|
||||||
+ (void)isc_condition_destroy(&manager->work_available[isc_taskqueue_slow]);
|
|
||||||
(void)isc_condition_destroy(&manager->paused);
|
|
||||||
isc_mem_free(manager->mctx, manager->threads);
|
|
||||||
#endif /* USE_WORKER_THREADS */
|
|
||||||
@@ -1414,12 +1451,20 @@ isc__taskmgr_create(isc_mem_t *mctx, unsigned int workers,
|
|
||||||
#ifdef USE_WORKER_THREADS
|
|
||||||
manager->workers = 0;
|
|
||||||
manager->threads = isc_mem_allocate(mctx,
|
|
||||||
- workers * sizeof(isc_thread_t));
|
|
||||||
+ 2 * workers * sizeof(isc_thread_t));
|
|
||||||
if (manager->threads == NULL) {
|
|
||||||
result = ISC_R_NOMEMORY;
|
|
||||||
goto cleanup_lock;
|
|
||||||
}
|
|
||||||
- if (isc_condition_init(&manager->work_available) != ISC_R_SUCCESS) {
|
|
||||||
+ if (isc_condition_init(&manager->work_available[isc_taskqueue_normal]) != ISC_R_SUCCESS) {
|
|
||||||
+ UNEXPECTED_ERROR(__FILE__, __LINE__,
|
|
||||||
+ "isc_condition_init() %s",
|
|
||||||
+ isc_msgcat_get(isc_msgcat, ISC_MSGSET_GENERAL,
|
|
||||||
+ ISC_MSG_FAILED, "failed"));
|
|
||||||
+ result = ISC_R_UNEXPECTED;
|
|
||||||
+ goto cleanup_threads;
|
|
||||||
+ }
|
|
||||||
+ if (isc_condition_init(&manager->work_available[isc_taskqueue_slow]) != ISC_R_SUCCESS) {
|
|
||||||
UNEXPECTED_ERROR(__FILE__, __LINE__,
|
|
||||||
"isc_condition_init() %s",
|
|
||||||
isc_msgcat_get(isc_msgcat, ISC_MSGSET_GENERAL,
|
|
||||||
@@ -1448,8 +1493,10 @@ isc__taskmgr_create(isc_mem_t *mctx, unsigned int workers,
|
|
||||||
default_quantum = DEFAULT_DEFAULT_QUANTUM;
|
|
||||||
manager->default_quantum = default_quantum;
|
|
||||||
INIT_LIST(manager->tasks);
|
|
||||||
- INIT_LIST(manager->ready_tasks);
|
|
||||||
- INIT_LIST(manager->ready_priority_tasks);
|
|
||||||
+ INIT_LIST(manager->ready_tasks[isc_taskqueue_normal]);
|
|
||||||
+ INIT_LIST(manager->ready_tasks[isc_taskqueue_slow]);
|
|
||||||
+ INIT_LIST(manager->ready_priority_tasks[isc_taskqueue_normal]);
|
|
||||||
+ INIT_LIST(manager->ready_priority_tasks[isc_taskqueue_slow]);
|
|
||||||
manager->tasks_running = 0;
|
|
||||||
manager->tasks_ready = 0;
|
|
||||||
manager->exclusive_requested = false;
|
|
||||||
@@ -1465,7 +1512,19 @@ isc__taskmgr_create(isc_mem_t *mctx, unsigned int workers,
|
|
||||||
* Start workers.
|
|
||||||
*/
|
|
||||||
for (i = 0; i < workers; i++) {
|
|
||||||
- if (isc_thread_create(run, manager,
|
|
||||||
+ if (isc_thread_create(run_normal, manager,
|
|
||||||
+ &manager->threads[manager->workers]) ==
|
|
||||||
+ ISC_R_SUCCESS) {
|
|
||||||
+ char name[21]; /* thread name limit on Linux */
|
|
||||||
+ snprintf(name, sizeof(name), "isc-worker%04u", i);
|
|
||||||
+ isc_thread_setname(manager->threads[manager->workers],
|
|
||||||
+ name);
|
|
||||||
+ manager->workers++;
|
|
||||||
+ started++;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ for (; i < workers * 2; i++) {
|
|
||||||
+ if (isc_thread_create(run_slow, manager,
|
|
||||||
&manager->threads[manager->workers]) ==
|
|
||||||
ISC_R_SUCCESS) {
|
|
||||||
char name[21]; /* thread name limit on Linux */
|
|
||||||
@@ -1482,7 +1541,7 @@ isc__taskmgr_create(isc_mem_t *mctx, unsigned int workers,
|
|
||||||
manager_free(manager);
|
|
||||||
return (ISC_R_NOTHREADS);
|
|
||||||
}
|
|
||||||
- isc_thread_setconcurrency(workers);
|
|
||||||
+ isc_thread_setconcurrency(workers * 2);
|
|
||||||
#endif /* USE_WORKER_THREADS */
|
|
||||||
#ifdef USE_SHARED_MANAGER
|
|
||||||
manager->refs = 1;
|
|
||||||
@@ -1497,7 +1556,8 @@ isc__taskmgr_create(isc_mem_t *mctx, unsigned int workers,
|
|
||||||
cleanup_exclusivegranted:
|
|
||||||
(void)isc_condition_destroy(&manager->exclusive_granted);
|
|
||||||
cleanup_workavailable:
|
|
||||||
- (void)isc_condition_destroy(&manager->work_available);
|
|
||||||
+ (void)isc_condition_destroy(&manager->work_available[isc_taskqueue_slow]);
|
|
||||||
+ (void)isc_condition_destroy(&manager->work_available[isc_taskqueue_normal]);
|
|
||||||
cleanup_threads:
|
|
||||||
isc_mem_free(mctx, manager->threads);
|
|
||||||
cleanup_lock:
|
|
||||||
@@ -1582,7 +1642,7 @@ isc__taskmgr_destroy(isc_taskmgr_t **managerp) {
|
|
||||||
task = NEXT(task, link)) {
|
|
||||||
LOCK(&task->lock);
|
|
||||||
if (task_shutdown(task))
|
|
||||||
- push_readyq(manager, task);
|
|
||||||
+ push_readyq(manager, task, task->qid);
|
|
||||||
UNLOCK(&task->lock);
|
|
||||||
}
|
|
||||||
#ifdef USE_WORKER_THREADS
|
|
||||||
@@ -1591,7 +1651,8 @@ isc__taskmgr_destroy(isc_taskmgr_t **managerp) {
|
|
||||||
* there's work left to do, and if there are already no tasks left
|
|
||||||
* it will cause the workers to see manager->exiting.
|
|
||||||
*/
|
|
||||||
- BROADCAST(&manager->work_available);
|
|
||||||
+ BROADCAST(&manager->work_available[isc_taskqueue_normal]);
|
|
||||||
+ BROADCAST(&manager->work_available[isc_taskqueue_slow]);
|
|
||||||
UNLOCK(&manager->lock);
|
|
||||||
|
|
||||||
/*
|
|
||||||
@@ -1693,7 +1754,8 @@ isc__taskmgr_resume(isc_taskmgr_t *manager0) {
|
|
||||||
LOCK(&manager->lock);
|
|
||||||
if (manager->pause_requested) {
|
|
||||||
manager->pause_requested = false;
|
|
||||||
- BROADCAST(&manager->work_available);
|
|
||||||
+ BROADCAST(&manager->work_available[isc_taskqueue_normal]);
|
|
||||||
+ BROADCAST(&manager->work_available[isc_taskqueue_slow]);
|
|
||||||
}
|
|
||||||
UNLOCK(&manager->lock);
|
|
||||||
}
|
|
||||||
@@ -1778,7 +1840,8 @@ isc__task_endexclusive(isc_task_t *task0) {
|
|
||||||
LOCK(&manager->lock);
|
|
||||||
REQUIRE(manager->exclusive_requested);
|
|
||||||
manager->exclusive_requested = false;
|
|
||||||
- BROADCAST(&manager->work_available);
|
|
||||||
+ BROADCAST(&manager->work_available[isc_taskqueue_normal]);
|
|
||||||
+ BROADCAST(&manager->work_available[isc_taskqueue_slow]);
|
|
||||||
UNLOCK(&manager->lock);
|
|
||||||
#else
|
|
||||||
UNUSED(task0);
|
|
||||||
@@ -1804,10 +1867,10 @@ isc__task_setprivilege(isc_task_t *task0, bool priv) {
|
|
||||||
|
|
||||||
LOCK(&manager->lock);
|
|
||||||
if (priv && ISC_LINK_LINKED(task, ready_link))
|
|
||||||
- ENQUEUE(manager->ready_priority_tasks, task,
|
|
||||||
+ ENQUEUE(manager->ready_priority_tasks[task->qid], task,
|
|
||||||
ready_priority_link);
|
|
||||||
else if (!priv && ISC_LINK_LINKED(task, ready_priority_link))
|
|
||||||
- DEQUEUE(manager->ready_priority_tasks, task,
|
|
||||||
+ DEQUEUE(manager->ready_priority_tasks[task->qid], task,
|
|
||||||
ready_priority_link);
|
|
||||||
UNLOCK(&manager->lock);
|
|
||||||
}
|
|
||||||
--
|
|
||||||
2.43.2
|
|
||||||
|
|
@ -1,133 +0,0 @@
|
|||||||
From 0a7909045f9e1bf74c1f0fd561a8ef5f55481e8f Mon Sep 17 00:00:00 2001
|
|
||||||
From: Petr Mensik <pemensik@redhat.com>
|
|
||||||
Date: Mon, 29 Jul 2024 16:20:50 +0200
|
|
||||||
Subject: [PATCH] Allow global runtime definition by DNS_RBTDB_MAX_RTYPES
|
|
||||||
|
|
||||||
Modify rbtdb to not set it only at runtime, but allow setting that also
|
|
||||||
in runtime via environment variable. It is still possible to modify
|
|
||||||
default during the build define. In addition to it allows runtime change
|
|
||||||
also. Can be positive number to set limit, 0 disabled the check.
|
|
||||||
|
|
||||||
Similarly add also DNS_RDATASET_MAX_RECORDS to set maximum number of
|
|
||||||
records for a single name. This must be positive number, 0 is no accepted.
|
|
||||||
|
|
||||||
These replaces max-records-per-type and max-types-per-name in later
|
|
||||||
versions. But can be configured only by environment and can be
|
|
||||||
configured only globally, not in each view or zone.
|
|
||||||
---
|
|
||||||
lib/dns/rbtdb.c | 21 +++++++++++++++++++--
|
|
||||||
lib/dns/rdataslab.c | 24 ++++++++++++++++++++++--
|
|
||||||
2 files changed, 41 insertions(+), 4 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/lib/dns/rbtdb.c b/lib/dns/rbtdb.c
|
|
||||||
index a3cb8dc871..0104c3ee36 100644
|
|
||||||
--- a/lib/dns/rbtdb.c
|
|
||||||
+++ b/lib/dns/rbtdb.c
|
|
||||||
@@ -6320,15 +6320,29 @@ update_recordsandbytes(bool add, rbtdb_version_t *rbtversion,
|
|
||||||
#define DNS_RBTDB_MAX_RTYPES 100
|
|
||||||
#endif /* DNS_RBTDB_MAX_RTYPES */
|
|
||||||
|
|
||||||
+static uint32_t dns_g_rbtdb_max_rtypes = DNS_RBTDB_MAX_RTYPES;
|
|
||||||
+
|
|
||||||
+static void
|
|
||||||
+init_max_rtypes(void) {
|
|
||||||
+ /* Red Hat change, allow setting different max value by environment. */
|
|
||||||
+ const char *max = getenv("DNS_RBTDB_MAX_RTYPES");
|
|
||||||
+ if (max) {
|
|
||||||
+ char *endp = NULL;
|
|
||||||
+ long l = strtol(max, &endp, 10);
|
|
||||||
+ if (max != endp && endp && !*endp && l >= 0)
|
|
||||||
+ dns_g_rbtdb_max_rtypes = l;
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
static bool
|
|
||||||
overmaxtype(dns_rbtdb_t *rbtdb, uint32_t ntypes) {
|
|
||||||
UNUSED(rbtdb);
|
|
||||||
|
|
||||||
- if (DNS_RBTDB_MAX_RTYPES == 0) {
|
|
||||||
+ if (dns_g_rbtdb_max_rtypes == 0) {
|
|
||||||
return (false);
|
|
||||||
}
|
|
||||||
|
|
||||||
- return (ntypes >= DNS_RBTDB_MAX_RTYPES);
|
|
||||||
+ return (ntypes >= dns_g_rbtdb_max_rtypes);
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool
|
|
||||||
@@ -8831,6 +8845,8 @@ static dns_dbmethods_t cache_methods = {
|
|
||||||
getservestalettl
|
|
||||||
};
|
|
||||||
|
|
||||||
+static isc_once_t once_db = ISC_ONCE_INIT;
|
|
||||||
+
|
|
||||||
isc_result_t
|
|
||||||
#ifdef DNS_RBTDB_VERSION64
|
|
||||||
dns_rbtdb64_create
|
|
||||||
@@ -8850,6 +8866,7 @@ dns_rbtdb_create
|
|
||||||
|
|
||||||
/* Keep the compiler happy. */
|
|
||||||
UNUSED(driverarg);
|
|
||||||
+ RUNTIME_CHECK(isc_once_do(&once_db, init_max_rtypes) == ISC_R_SUCCESS);
|
|
||||||
|
|
||||||
rbtdb = isc_mem_get(mctx, sizeof(*rbtdb));
|
|
||||||
if (rbtdb == NULL)
|
|
||||||
diff --git a/lib/dns/rdataslab.c b/lib/dns/rdataslab.c
|
|
||||||
index 347b7d2ce8..9566f79671 100644
|
|
||||||
--- a/lib/dns/rdataslab.c
|
|
||||||
+++ b/lib/dns/rdataslab.c
|
|
||||||
@@ -17,6 +17,7 @@
|
|
||||||
#include <stdlib.h>
|
|
||||||
|
|
||||||
#include <isc/mem.h>
|
|
||||||
+#include <isc/once.h>
|
|
||||||
#include <isc/region.h>
|
|
||||||
#include <isc/string.h> /* Required for HP/UX (and others?) */
|
|
||||||
#include <isc/util.h>
|
|
||||||
@@ -119,6 +120,23 @@ fillin_offsets(unsigned char *offsetbase, unsigned int *offsettable,
|
|
||||||
#define DNS_RDATASET_MAX_RECORDS 100
|
|
||||||
#endif /* DNS_RDATASET_MAX_RECORDS */
|
|
||||||
|
|
||||||
+static unsigned int dns_g_rdataset_max_records = DNS_RDATASET_MAX_RECORDS;
|
|
||||||
+static isc_once_t once = ISC_ONCE_INIT;
|
|
||||||
+
|
|
||||||
+static void
|
|
||||||
+init_max_records(void) {
|
|
||||||
+ /* Red Hat change, allow setting different max value by environment. */
|
|
||||||
+ const char *max = getenv("DNS_RDATASET_MAX_RECORDS");
|
|
||||||
+ if (max) {
|
|
||||||
+ char *endp = NULL;
|
|
||||||
+ long l = strtol(max, &endp, 10);
|
|
||||||
+ if (max != endp && endp && !*endp && l > 0)
|
|
||||||
+ dns_g_rdataset_max_records = l;
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+
|
|
||||||
isc_result_t
|
|
||||||
dns_rdataslab_fromrdataset(dns_rdataset_t *rdataset, isc_mem_t *mctx,
|
|
||||||
isc_region_t *region, unsigned int reservelen)
|
|
||||||
@@ -165,7 +183,9 @@ dns_rdataslab_fromrdataset(dns_rdataset_t *rdataset, isc_mem_t *mctx,
|
|
||||||
return (ISC_R_SUCCESS);
|
|
||||||
}
|
|
||||||
|
|
||||||
- if (nitems > DNS_RDATASET_MAX_RECORDS) {
|
|
||||||
+ RUNTIME_CHECK(isc_once_do(&once, init_max_records) == ISC_R_SUCCESS);
|
|
||||||
+
|
|
||||||
+ if (nitems > dns_g_rdataset_max_records) {
|
|
||||||
return (DNS_R_TOOMANYRECORDS);
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -662,7 +682,7 @@ dns_rdataslab_merge(unsigned char *oslab, unsigned char *nslab,
|
|
||||||
#endif
|
|
||||||
INSIST(ocount > 0 && ncount > 0);
|
|
||||||
|
|
||||||
- if (ocount + ncount > DNS_RDATASET_MAX_RECORDS) {
|
|
||||||
+ if (ocount + ncount > dns_g_rdataset_max_records) {
|
|
||||||
return (DNS_R_TOOMANYRECORDS);
|
|
||||||
}
|
|
||||||
|
|
||||||
--
|
|
||||||
2.45.2
|
|
||||||
|
|
@ -1,317 +0,0 @@
|
|||||||
From 71df06e2bf3da31c5d542fb33dbda67b21537322 Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?Ond=C5=99ej=20Sur=C3=BD?= <ondrej@isc.org>
|
|
||||||
Date: Fri, 1 Mar 2024 08:26:07 +0100
|
|
||||||
Subject: [PATCH] [9.11][CVE-2024-1737] Add a limit to the number of RRs in
|
|
||||||
RRSets
|
|
||||||
|
|
||||||
Add a limit to the number of RRs in RRSets
|
|
||||||
|
|
||||||
Previously, the number of RRs in the RRSets were internally unlimited.
|
|
||||||
As the data structure that holds the RRs is just a linked list, and
|
|
||||||
there are places where we just walk through all of the RRs, adding an
|
|
||||||
RRSet with huge number of RRs inside would slow down processing of said
|
|
||||||
RRSets.
|
|
||||||
|
|
||||||
The fix for end-of-life branches make the limit compile-time only for
|
|
||||||
simplicity and the limit can be changed at the compile time by adding
|
|
||||||
following define to CFLAGS:
|
|
||||||
|
|
||||||
-DDNS_RDATASET_MAX_RECORDS=<limit>
|
|
||||||
|
|
||||||
(cherry picked from commit c5c4d00c38530390c9e1ae4c98b65fbbadfe9e5e)
|
|
||||||
(cherry picked from commit 7f705778af729ada7fec36ac4b456c73329bd996)
|
|
||||||
(cherry picked from commit b9b5485b22c364fb88c27aa04bad4c8f616da3fa)
|
|
||||||
|
|
||||||
Add a limit to the number of RR types for single name
|
|
||||||
|
|
||||||
Previously, the number of RR types for a single owner name was limited
|
|
||||||
only by the maximum number of the types (64k). As the data structure
|
|
||||||
that holds the RR types for the database node is just a linked list, and
|
|
||||||
there are places where we just walk through the whole list (again and
|
|
||||||
again), adding a large number of RR types for a single owner named with
|
|
||||||
would slow down processing of such name (database node).
|
|
||||||
|
|
||||||
Add a hard-coded limit (100) to cap the number of the RR types for a single
|
|
||||||
owner. The limit can be changed at the compile time by adding following
|
|
||||||
define to CFLAGS:
|
|
||||||
|
|
||||||
-DDNS_RBTDB_MAX_RTYPES=<limit>
|
|
||||||
|
|
||||||
(cherry picked from commit 538b843d84f49ba5125ff545e3d0cf1c8434a8f2)
|
|
||||||
(cherry picked from commit 3f10d6eff035702796ba82cd28b9f7cf9836e743)
|
|
||||||
|
|
||||||
Optimize the slabheader placement for certain RRTypes
|
|
||||||
|
|
||||||
Mark the infrastructure RRTypes as "priority" types and place them at
|
|
||||||
the beginning of the rdataslab header data graph. The non-priority
|
|
||||||
types either go right after the priority types (if any).
|
|
||||||
|
|
||||||
(cherry picked from commit 3ac482be7fd058d284e89873021339579fad0615)
|
|
||||||
(cherry picked from commit 23a4652346fb2877d6246b1eebaa967969dbde16)
|
|
||||||
|
|
||||||
[9.11][CVE-2024-1737 (part 2)] Be smarter about refusing to add many RR types to the database
|
|
||||||
|
|
||||||
Expand the list of the priority types
|
|
||||||
|
|
||||||
Add HTTPS, SVCB, SRV, PTR, NAPTR, DNSKEY and TXT records to the list of
|
|
||||||
the priority types that are put at the beginning of the slabheader list
|
|
||||||
for faster access and to avoid eviction when there are more types than
|
|
||||||
the max-types-per-name limit.
|
|
||||||
|
|
||||||
(cherry picked from commit b27c6bcce894786a8e082eafd59eccbf6f2731cb)
|
|
||||||
(cherry picked from commit 3e0a67e4bdb253dae3a03a45c1aa117239a3313d)
|
|
||||||
|
|
||||||
Be smarter about refusing to add many RR types to the database
|
|
||||||
|
|
||||||
Instead of outright refusing to add new RR types to the cache, be a bit
|
|
||||||
smarter:
|
|
||||||
|
|
||||||
1. If the new header type is in our priority list, we always add either
|
|
||||||
positive or negative entry at the beginning of the list.
|
|
||||||
|
|
||||||
2. If the new header type is negative entry, and we are over the limit,
|
|
||||||
we mark it as ancient immediately, so it gets evicted from the cache
|
|
||||||
as soon as possible.
|
|
||||||
|
|
||||||
3. Otherwise add the new header after the priority headers (or at the
|
|
||||||
head of the list).
|
|
||||||
|
|
||||||
4. If we are over the limit, evict the last entry on the normal header
|
|
||||||
list.
|
|
||||||
|
|
||||||
(cherry picked from commit 57cd34441a1b4ecc9874a4a106c2c95b8d7a3120)
|
|
||||||
(cherry picked from commit e4d7ce686bb38428eddc7e33b40057d68eca9a6e)
|
|
||||||
---
|
|
||||||
configure | 2 +-
|
|
||||||
configure.ac | 2 +-
|
|
||||||
lib/dns/rbtdb.c | 114 +++++++++++++++++++++++++++++++++++++++++++-
|
|
||||||
lib/dns/rdataslab.c | 12 +++++
|
|
||||||
4 files changed, 126 insertions(+), 4 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/configure b/configure
|
|
||||||
index e060e9d..6421c9b 100755
|
|
||||||
--- a/configure
|
|
||||||
+++ b/configure
|
|
||||||
@@ -12189,7 +12189,7 @@ fi
|
|
||||||
XTARGETS=
|
|
||||||
case "$enable_developer" in
|
|
||||||
yes)
|
|
||||||
- STD_CDEFINES="$STD_CDEFINES -DISC_LIST_CHECKINIT=1"
|
|
||||||
+ STD_CDEFINES="$STD_CDEFINES -DISC_LIST_CHECKINIT=1 -DDNS_RDATASET_MAX_RECORDS=5000 -DDNS_RBTDB_MAX_RTYPES=5000"
|
|
||||||
test "${enable_fixed_rrset+set}" = set || enable_fixed_rrset=yes
|
|
||||||
test "${enable_querytrace+set}" = set || enable_querytrace=yes
|
|
||||||
test "${enable_filter_aaaa+set}" = set || enable_filter_aaaa=yes
|
|
||||||
diff --git a/configure.ac b/configure.ac
|
|
||||||
index 83cad4a..1c35ce9 100644
|
|
||||||
--- a/configure.ac
|
|
||||||
+++ b/configure.ac
|
|
||||||
@@ -100,7 +100,7 @@ AC_ARG_ENABLE(developer,
|
|
||||||
XTARGETS=
|
|
||||||
case "$enable_developer" in
|
|
||||||
yes)
|
|
||||||
- STD_CDEFINES="$STD_CDEFINES -DISC_LIST_CHECKINIT=1"
|
|
||||||
+ STD_CDEFINES="$STD_CDEFINES -DISC_LIST_CHECKINIT=1 -DDNS_RDATASET_MAX_RECORDS=5000 -DDNS_RBTDB_MAX_RTYPES=5000"
|
|
||||||
test "${enable_fixed_rrset+set}" = set || enable_fixed_rrset=yes
|
|
||||||
test "${enable_querytrace+set}" = set || enable_querytrace=yes
|
|
||||||
test "${enable_filter_aaaa+set}" = set || enable_filter_aaaa=yes
|
|
||||||
diff --git a/lib/dns/rbtdb.c b/lib/dns/rbtdb.c
|
|
||||||
index ee59c1b..a2b2df7 100644
|
|
||||||
--- a/lib/dns/rbtdb.c
|
|
||||||
+++ b/lib/dns/rbtdb.c
|
|
||||||
@@ -1183,6 +1183,44 @@ set_ttl(dns_rbtdb_t *rbtdb, rdatasetheader_t *header, dns_ttl_t newttl) {
|
|
||||||
isc_heap_decreased(heap, header->heap_index);
|
|
||||||
}
|
|
||||||
|
|
||||||
+static bool
|
|
||||||
+prio_type(rbtdb_rdatatype_t type) {
|
|
||||||
+ switch (type) {
|
|
||||||
+ case dns_rdatatype_soa:
|
|
||||||
+ case RBTDB_RDATATYPE_VALUE(dns_rdatatype_rrsig, dns_rdatatype_soa):
|
|
||||||
+ case dns_rdatatype_a:
|
|
||||||
+ case RBTDB_RDATATYPE_VALUE(dns_rdatatype_rrsig, dns_rdatatype_a):
|
|
||||||
+ case dns_rdatatype_mx:
|
|
||||||
+ case RBTDB_RDATATYPE_VALUE(dns_rdatatype_rrsig, dns_rdatatype_mx):
|
|
||||||
+ case dns_rdatatype_aaaa:
|
|
||||||
+ case RBTDB_RDATATYPE_VALUE(dns_rdatatype_rrsig, dns_rdatatype_aaaa):
|
|
||||||
+ case dns_rdatatype_nsec:
|
|
||||||
+ case RBTDB_RDATATYPE_VALUE(dns_rdatatype_rrsig, dns_rdatatype_nsec):
|
|
||||||
+ case dns_rdatatype_nsec3:
|
|
||||||
+ case RBTDB_RDATATYPE_VALUE(dns_rdatatype_rrsig, dns_rdatatype_nsec3):
|
|
||||||
+ case dns_rdatatype_ns:
|
|
||||||
+ case RBTDB_RDATATYPE_VALUE(dns_rdatatype_rrsig, dns_rdatatype_ns):
|
|
||||||
+ case dns_rdatatype_ds:
|
|
||||||
+ case RBTDB_RDATATYPE_VALUE(dns_rdatatype_rrsig, dns_rdatatype_ds):
|
|
||||||
+ case dns_rdatatype_cname:
|
|
||||||
+ case RBTDB_RDATATYPE_VALUE(dns_rdatatype_rrsig, dns_rdatatype_cname):
|
|
||||||
+ case dns_rdatatype_dname:
|
|
||||||
+ case RBTDB_RDATATYPE_VALUE(dns_rdatatype_rrsig, dns_rdatatype_dname):
|
|
||||||
+ case dns_rdatatype_dnskey:
|
|
||||||
+ case RBTDB_RDATATYPE_VALUE(dns_rdatatype_rrsig, dns_rdatatype_dnskey):
|
|
||||||
+ case dns_rdatatype_srv:
|
|
||||||
+ case RBTDB_RDATATYPE_VALUE(dns_rdatatype_rrsig, dns_rdatatype_srv):
|
|
||||||
+ case dns_rdatatype_txt:
|
|
||||||
+ case RBTDB_RDATATYPE_VALUE(dns_rdatatype_rrsig, dns_rdatatype_txt):
|
|
||||||
+ case dns_rdatatype_ptr:
|
|
||||||
+ case RBTDB_RDATATYPE_VALUE(dns_rdatatype_rrsig, dns_rdatatype_ptr):
|
|
||||||
+ case dns_rdatatype_naptr:
|
|
||||||
+ case RBTDB_RDATATYPE_VALUE(dns_rdatatype_rrsig, dns_rdatatype_naptr):
|
|
||||||
+ return (true);
|
|
||||||
+ }
|
|
||||||
+ return (false);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
/*%
|
|
||||||
* These functions allow the heap code to rank the priority of each
|
|
||||||
* element. It returns true if v1 happens "sooner" than v2.
|
|
||||||
@@ -6278,6 +6316,30 @@ update_recordsandbytes(bool add, rbtdb_version_t *rbtversion,
|
|
||||||
RWUNLOCK(&rbtversion->rwlock, isc_rwlocktype_write);
|
|
||||||
}
|
|
||||||
|
|
||||||
+#ifndef DNS_RBTDB_MAX_RTYPES
|
|
||||||
+#define DNS_RBTDB_MAX_RTYPES 100
|
|
||||||
+#endif /* DNS_RBTDB_MAX_RTYPES */
|
|
||||||
+
|
|
||||||
+static bool
|
|
||||||
+overmaxtype(dns_rbtdb_t *rbtdb, uint32_t ntypes) {
|
|
||||||
+ UNUSED(rbtdb);
|
|
||||||
+
|
|
||||||
+ if (DNS_RBTDB_MAX_RTYPES == 0) {
|
|
||||||
+ return (false);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return (ntypes >= DNS_RBTDB_MAX_RTYPES);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static bool
|
|
||||||
+prio_header(rdatasetheader_t *header) {
|
|
||||||
+ if (NEGATIVE(header) && prio_type(RBTDB_RDATATYPE_EXT(header->type))) {
|
|
||||||
+ return (true);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return (prio_type(header->type));
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
/*
|
|
||||||
* write lock on rbtnode must be held.
|
|
||||||
*/
|
|
||||||
@@ -6288,6 +6350,7 @@ add32(dns_rbtdb_t *rbtdb, dns_rbtnode_t *rbtnode, rbtdb_version_t *rbtversion,
|
|
||||||
{
|
|
||||||
rbtdb_changed_t *changed = NULL;
|
|
||||||
rdatasetheader_t *topheader, *topheader_prev, *header, *sigheader;
|
|
||||||
+ rdatasetheader_t *prioheader = NULL, *expireheader = NULL;
|
|
||||||
unsigned char *merged;
|
|
||||||
isc_result_t result;
|
|
||||||
bool header_nx;
|
|
||||||
@@ -6297,6 +6360,7 @@ add32(dns_rbtdb_t *rbtdb, dns_rbtnode_t *rbtnode, rbtdb_version_t *rbtversion,
|
|
||||||
rbtdb_rdatatype_t negtype, sigtype;
|
|
||||||
dns_trust_t trust;
|
|
||||||
int idx;
|
|
||||||
+ uint32_t ntypes = 0;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Add an rdatasetheader_t to a node.
|
|
||||||
@@ -6429,6 +6493,15 @@ add32(dns_rbtdb_t *rbtdb, dns_rbtnode_t *rbtnode, rbtdb_version_t *rbtversion,
|
|
||||||
for (topheader = rbtnode->data;
|
|
||||||
topheader != NULL;
|
|
||||||
topheader = topheader->next) {
|
|
||||||
+ if (IS_CACHE(rbtdb) && ACTIVE(topheader, now)) {
|
|
||||||
+ ++ntypes;
|
|
||||||
+ expireheader = topheader;
|
|
||||||
+ } else if (!IS_CACHE(rbtdb)) {
|
|
||||||
+ ++ntypes;
|
|
||||||
+ }
|
|
||||||
+ if (prio_header(topheader)) {
|
|
||||||
+ prioheader = topheader;
|
|
||||||
+ }
|
|
||||||
if (topheader->type == newheader->type ||
|
|
||||||
topheader->type == negtype)
|
|
||||||
break;
|
|
||||||
@@ -6792,9 +6865,46 @@ add32(dns_rbtdb_t *rbtdb, dns_rbtnode_t *rbtnode, rbtdb_version_t *rbtversion,
|
|
||||||
/*
|
|
||||||
* No rdatasets of the given type exist at the node.
|
|
||||||
*/
|
|
||||||
- newheader->next = rbtnode->data;
|
|
||||||
+ if (!IS_CACHE(rbtdb) && overmaxtype(rbtdb, ntypes)) {
|
|
||||||
+ free_rdataset(rbtdb, rbtdb->common.mctx,
|
|
||||||
+ newheader);
|
|
||||||
+ return (ISC_R_QUOTA);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
newheader->down = NULL;
|
|
||||||
- rbtnode->data = newheader;
|
|
||||||
+
|
|
||||||
+ if (prio_header(newheader)) {
|
|
||||||
+ /* This is a priority type, prepend it */
|
|
||||||
+ newheader->next = rbtnode->data;
|
|
||||||
+ rbtnode->data = newheader;
|
|
||||||
+ } else if (prioheader != NULL) {
|
|
||||||
+ /* Append after the priority headers */
|
|
||||||
+ newheader->next = prioheader->next;
|
|
||||||
+ prioheader->next = newheader;
|
|
||||||
+ } else {
|
|
||||||
+ /* There were no priority headers */
|
|
||||||
+ newheader->next = rbtnode->data;
|
|
||||||
+ rbtnode->data = newheader;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (IS_CACHE(rbtdb) && overmaxtype(rbtdb, ntypes)) {
|
|
||||||
+ if (expireheader == NULL) {
|
|
||||||
+ expireheader = newheader;
|
|
||||||
+ }
|
|
||||||
+ if (NEGATIVE(newheader) &&
|
|
||||||
+ !prio_header(newheader))
|
|
||||||
+ {
|
|
||||||
+ /*
|
|
||||||
+ * Add the new non-priority negative
|
|
||||||
+ * header to the database only
|
|
||||||
+ * temporarily.
|
|
||||||
+ */
|
|
||||||
+ expireheader = newheader;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ set_ttl(rbtdb, expireheader, 0);
|
|
||||||
+ mark_header_ancient(rbtdb, expireheader);
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
diff --git a/lib/dns/rdataslab.c b/lib/dns/rdataslab.c
|
|
||||||
index b0f77b1..347b7d2 100644
|
|
||||||
--- a/lib/dns/rdataslab.c
|
|
||||||
+++ b/lib/dns/rdataslab.c
|
|
||||||
@@ -115,6 +115,10 @@ fillin_offsets(unsigned char *offsetbase, unsigned int *offsettable,
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
+#ifndef DNS_RDATASET_MAX_RECORDS
|
|
||||||
+#define DNS_RDATASET_MAX_RECORDS 100
|
|
||||||
+#endif /* DNS_RDATASET_MAX_RECORDS */
|
|
||||||
+
|
|
||||||
isc_result_t
|
|
||||||
dns_rdataslab_fromrdataset(dns_rdataset_t *rdataset, isc_mem_t *mctx,
|
|
||||||
isc_region_t *region, unsigned int reservelen)
|
|
||||||
@@ -161,6 +165,10 @@ dns_rdataslab_fromrdataset(dns_rdataset_t *rdataset, isc_mem_t *mctx,
|
|
||||||
return (ISC_R_SUCCESS);
|
|
||||||
}
|
|
||||||
|
|
||||||
+ if (nitems > DNS_RDATASET_MAX_RECORDS) {
|
|
||||||
+ return (DNS_R_TOOMANYRECORDS);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
if (nitems > 0xffff)
|
|
||||||
return (ISC_R_NOSPACE);
|
|
||||||
|
|
||||||
@@ -654,6 +662,10 @@ dns_rdataslab_merge(unsigned char *oslab, unsigned char *nslab,
|
|
||||||
#endif
|
|
||||||
INSIST(ocount > 0 && ncount > 0);
|
|
||||||
|
|
||||||
+ if (ocount + ncount > DNS_RDATASET_MAX_RECORDS) {
|
|
||||||
+ return (DNS_R_TOOMANYRECORDS);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
#if DNS_RDATASET_FIXED
|
|
||||||
oncount = ncount;
|
|
||||||
#endif
|
|
||||||
--
|
|
||||||
2.45.2
|
|
||||||
|
|
@ -1,322 +0,0 @@
|
|||||||
From 5ff88892e43c049659a8a5aef8dfd56c3712daf0 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Petr Mensik <pemensik@redhat.com>
|
|
||||||
Date: Tue, 16 Jul 2024 19:49:09 +0200
|
|
||||||
Subject: [PATCH] Resolve CVE-2024-1975
|
|
||||||
|
|
||||||
6404. [security] Remove SIG(0) support from named as a countermeasure
|
|
||||||
for CVE-2024-1975. [GL #4480]
|
|
||||||
|
|
||||||
Resolves: CVE-2024-1975
|
|
||||||
---
|
|
||||||
bin/named/client.c | 7 +++
|
|
||||||
bin/tests/system/tsiggss/authsock.pl | 5 ++
|
|
||||||
bin/tests/system/tsiggss/tests.sh | 12 ++--
|
|
||||||
bin/tests/system/upforwd/tests.sh | 21 ++++---
|
|
||||||
doc/arm/Bv9ARM-book.xml | 22 +++----
|
|
||||||
lib/dns/message.c | 94 +++-------------------------
|
|
||||||
6 files changed, 49 insertions(+), 112 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/bin/named/client.c b/bin/named/client.c
|
|
||||||
index 368bc94..ea121b3 100644
|
|
||||||
--- a/bin/named/client.c
|
|
||||||
+++ b/bin/named/client.c
|
|
||||||
@@ -3013,6 +3013,13 @@ client_request(isc_task_t *task, isc_event_t *event) {
|
|
||||||
ns_client_log(client, DNS_LOGCATEGORY_SECURITY,
|
|
||||||
NS_LOGMODULE_CLIENT, ISC_LOG_DEBUG(3),
|
|
||||||
"request is signed by a nonauthoritative key");
|
|
||||||
+ } else if (result == DNS_R_NOTVERIFIEDYET &&
|
|
||||||
+ client->message->sig0 != NULL)
|
|
||||||
+ {
|
|
||||||
+ ns_client_log(client, DNS_LOGCATEGORY_SECURITY,
|
|
||||||
+ NS_LOGMODULE_CLIENT, ISC_LOG_DEBUG(3),
|
|
||||||
+ "request has a SIG(0) signature but its support "
|
|
||||||
+ "was removed (CVE-2024-1975)");
|
|
||||||
} else {
|
|
||||||
char tsigrcode[64];
|
|
||||||
isc_buffer_t b;
|
|
||||||
diff --git a/bin/tests/system/tsiggss/authsock.pl b/bin/tests/system/tsiggss/authsock.pl
|
|
||||||
index ab3833d..0b231ee 100644
|
|
||||||
--- a/bin/tests/system/tsiggss/authsock.pl
|
|
||||||
+++ b/bin/tests/system/tsiggss/authsock.pl
|
|
||||||
@@ -31,6 +31,10 @@ if (!defined($path)) {
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
+# Enable output autoflush so that it's not lost when the parent sends TERM.
|
|
||||||
+select STDOUT;
|
|
||||||
+$| = 1;
|
|
||||||
+
|
|
||||||
unlink($path);
|
|
||||||
my $server = IO::Socket::UNIX->new(Local => $path, Type => SOCK_STREAM, Listen => 8) or
|
|
||||||
die "unable to create socket $path";
|
|
||||||
@@ -53,6 +57,7 @@ if ($timeout != 0) {
|
|
||||||
}
|
|
||||||
|
|
||||||
while (my $client = $server->accept()) {
|
|
||||||
+ printf("accept()\n");
|
|
||||||
$client->recv(my $buf, 8, 0);
|
|
||||||
my ($version, $req_len) = unpack('N N', $buf);
|
|
||||||
|
|
||||||
diff --git a/bin/tests/system/tsiggss/tests.sh b/bin/tests/system/tsiggss/tests.sh
|
|
||||||
index 456ce61..d0db388 100644
|
|
||||||
--- a/bin/tests/system/tsiggss/tests.sh
|
|
||||||
+++ b/bin/tests/system/tsiggss/tests.sh
|
|
||||||
@@ -116,7 +116,7 @@ status=$((status+ret))
|
|
||||||
|
|
||||||
echo_i "testing external update policy (CNAME) with auth sock ($n)"
|
|
||||||
ret=0
|
|
||||||
-$PERL ./authsock.pl --type=CNAME --path=ns1/auth.sock --pidfile=authsock.pid --timeout=120 > /dev/null 2>&1 &
|
|
||||||
+$PERL ./authsock.pl --type=CNAME --path=ns1/auth.sock --pidfile=authsock.pid --timeout=120 >authsock.log 2>&1 &
|
|
||||||
sleep 1
|
|
||||||
test_update $n testcname.example.nil. CNAME "86400 CNAME testdenied.example.nil" "testdenied" || ret=1
|
|
||||||
n=$((n+1))
|
|
||||||
@@ -130,17 +130,19 @@ n=$((n+1))
|
|
||||||
if [ "$ret" -ne 0 ]; then echo_i "failed"; fi
|
|
||||||
status=$((status+ret))
|
|
||||||
|
|
||||||
-echo_i "testing external policy with SIG(0) key ($n)"
|
|
||||||
+echo_i "testing external policy with unsupported SIG(0) key ($n)"
|
|
||||||
ret=0
|
|
||||||
-$NSUPDATE -R $RANDFILE -k ns1/Kkey.example.nil.*.private <<END > /dev/null 2>&1 || ret=1
|
|
||||||
+$NSUPDATE -R $RANDFILE -k ns1/Kkey.example.nil.*.private <<END >nsupdate.out${n} 2>&1 || true
|
|
||||||
+debug
|
|
||||||
server 10.53.0.1 ${PORT}
|
|
||||||
zone example.nil
|
|
||||||
update add fred.example.nil 120 cname foo.bar.
|
|
||||||
send
|
|
||||||
END
|
|
||||||
+# update must have failed - SIG(0) signer is not supported
|
|
||||||
output=`$DIG $DIGOPTS +short cname fred.example.nil.`
|
|
||||||
-[ -n "$output" ] || ret=1
|
|
||||||
-[ $ret -eq 0 ] || echo_i "failed"
|
|
||||||
+[ -n "$output" ] && ret=1
|
|
||||||
+grep -F "signer=key.example.nil" authsock.log >/dev/null && ret=1
|
|
||||||
n=$((n+1))
|
|
||||||
if [ "$ret" -ne 0 ]; then echo_i "failed"; fi
|
|
||||||
status=$((status+ret))
|
|
||||||
diff --git a/bin/tests/system/upforwd/tests.sh b/bin/tests/system/upforwd/tests.sh
|
|
||||||
index ebc9ded..f5b89d4 100644
|
|
||||||
--- a/bin/tests/system/upforwd/tests.sh
|
|
||||||
+++ b/bin/tests/system/upforwd/tests.sh
|
|
||||||
@@ -181,19 +181,22 @@ n=`expr $n + 1`
|
|
||||||
|
|
||||||
if test -f keyname
|
|
||||||
then
|
|
||||||
- echo_i "checking update forwarding to with sig0 ($n)"
|
|
||||||
+ echo_i "checking update forwarding to with sig0 (expected to fail) ($n)"
|
|
||||||
ret=0
|
|
||||||
keyname=`cat keyname`
|
|
||||||
- $NSUPDATE -k $keyname.private -- - <<EOF
|
|
||||||
- local 10.53.0.1
|
|
||||||
- server 10.53.0.3 ${PORT}
|
|
||||||
- zone example2
|
|
||||||
- update add unsigned.example2. 600 A 10.10.10.1
|
|
||||||
- update add unsigned.example2. 600 TXT Foo
|
|
||||||
- send
|
|
||||||
+ # SIG(0) is removed, update is expected to fail.
|
|
||||||
+ {
|
|
||||||
+ $NSUPDATE -k $keyname.private -- - <<EOF
|
|
||||||
+ local 10.53.0.1
|
|
||||||
+ server 10.53.0.3 ${PORT}
|
|
||||||
+ zone example2
|
|
||||||
+ update add unsigned.example2. 600 A 10.10.10.1
|
|
||||||
+ update add unsigned.example2. 600 TXT Foo
|
|
||||||
+ send
|
|
||||||
EOF
|
|
||||||
+ } >nsupdate.out.$n 2>&1 && ret=1
|
|
||||||
$DIG -p ${PORT} unsigned.example2 A @10.53.0.1 > dig.out.ns1.test$n
|
|
||||||
- grep "status: NOERROR" dig.out.ns1.test$n > /dev/null || ret=1
|
|
||||||
+ grep "status: NOERROR" dig.out.ns1.test$n >/dev/null && ret=1
|
|
||||||
if [ $ret != 0 ] ; then echo_i "failed"; fi
|
|
||||||
status=`expr $status + $ret`
|
|
||||||
n=`expr $n + 1`
|
|
||||||
diff --git a/doc/arm/Bv9ARM-book.xml b/doc/arm/Bv9ARM-book.xml
|
|
||||||
index acf772b..563dced 100644
|
|
||||||
--- a/doc/arm/Bv9ARM-book.xml
|
|
||||||
+++ b/doc/arm/Bv9ARM-book.xml
|
|
||||||
@@ -2027,7 +2027,7 @@ allow-update { !{ !localnets; any; }; key host1-host2. ;};
|
|
||||||
The TKEY process is initiated by a client or server by sending
|
|
||||||
a query of type TKEY to a TKEY-aware server. The query must include
|
|
||||||
an appropriate KEY record in the additional section, and
|
|
||||||
- must be signed using either TSIG or SIG(0) with a previously
|
|
||||||
+ must be signed using TSIG with a previously
|
|
||||||
established key. The server's response, if successful,
|
|
||||||
contains a TKEY record in its answer section. After this transaction,
|
|
||||||
both participants have enough information to calculate a
|
|
||||||
@@ -2050,24 +2050,24 @@ allow-update { !{ !localnets; any; }; key host1-host2. ;};
|
|
||||||
<section xml:id="sig0"><info><title>SIG(0)</title></info>
|
|
||||||
|
|
||||||
<para>
|
|
||||||
- <acronym>BIND</acronym> partially supports DNSSEC SIG(0)
|
|
||||||
+ <acronym>BIND</acronym> partially supported DNSSEC SIG(0)
|
|
||||||
transaction signatures as specified in RFC 2535 and RFC 2931.
|
|
||||||
SIG(0) uses public/private keys to authenticate messages. Access control
|
|
||||||
- is performed in the same manner as with TSIG keys; privileges can be
|
|
||||||
+ were performed in the same manner as with TSIG keys; privileges can be
|
|
||||||
granted or denied in ACL directives based on the key name.
|
|
||||||
</para>
|
|
||||||
<para>
|
|
||||||
- When a SIG(0) signed message is received, it is only
|
|
||||||
+ When a SIG(0) signed message were received, it were only
|
|
||||||
verified if the key is known and trusted by the server. The
|
|
||||||
- server does not attempt to recursively fetch or validate the
|
|
||||||
+ server did not attempt to recursively fetch or validate the
|
|
||||||
key.
|
|
||||||
</para>
|
|
||||||
<para>
|
|
||||||
- SIG(0) signing of multiple-message TCP streams is not supported.
|
|
||||||
+ SIG(0) signing of multiple-message TCP streams were not supported.
|
|
||||||
</para>
|
|
||||||
<para>
|
|
||||||
- The only tool shipped with <acronym>BIND</acronym> 9 that
|
|
||||||
- generates SIG(0) signed messages is <command>nsupdate</command>.
|
|
||||||
+ Support for SIG(0) message verification was removed
|
|
||||||
+ as part of the mitigation of CVE-2024-1975.
|
|
||||||
</para>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
@@ -12655,7 +12655,7 @@ example.com. NS ns2.example.net.
|
|
||||||
either grants or denies permission for one or more
|
|
||||||
names in the zone to be updated by one or more
|
|
||||||
identities. Identity is determined by the key that
|
|
||||||
- signed the update request, using either TSIG or SIG(0).
|
|
||||||
+ signed the update request, using TSIG.
|
|
||||||
In most cases, <command>update-policy</command> rules
|
|
||||||
only apply to key-based identities. There is no way
|
|
||||||
to specify update permissions based on client source
|
|
||||||
@@ -12742,7 +12742,7 @@ example.com. NS ns2.example.net.
|
|
||||||
<para>
|
|
||||||
The <command>identity</command> field must be set to
|
|
||||||
a fully qualified domain name. In most cases, this
|
|
||||||
- represents the name of the TSIG or SIG(0) key that must be
|
|
||||||
+ represents the name of the TSIG key that must be
|
|
||||||
used to sign the update request. If the specified name is a
|
|
||||||
wildcard, it is subject to DNS wildcard expansion, and the
|
|
||||||
rule may apply to multiple identities. When a TKEY exchange
|
|
||||||
@@ -15952,7 +15952,7 @@ HOST-127.EXAMPLE. MX 0 .
|
|
||||||
</para>
|
|
||||||
<para>
|
|
||||||
ACLs match clients on the basis of up to three characteristics:
|
|
||||||
- 1) The client's IP address; 2) the TSIG or SIG(0) key that was
|
|
||||||
+ 1) The client's IP address; 2) the TSIG key that was
|
|
||||||
used to sign the request, if any; and 3) an address prefix
|
|
||||||
encoded in an EDNS Client-Subnet option, if any.
|
|
||||||
</para>
|
|
||||||
diff --git a/lib/dns/message.c b/lib/dns/message.c
|
|
||||||
index a44eb2d..9ea2b9e 100644
|
|
||||||
--- a/lib/dns/message.c
|
|
||||||
+++ b/lib/dns/message.c
|
|
||||||
@@ -3373,103 +3373,23 @@ dns_message_dumpsig(dns_message_t *msg, char *txt1) {
|
|
||||||
|
|
||||||
isc_result_t
|
|
||||||
dns_message_checksig(dns_message_t *msg, dns_view_t *view) {
|
|
||||||
- isc_buffer_t b, msgb;
|
|
||||||
+ isc_buffer_t msgb;
|
|
||||||
|
|
||||||
REQUIRE(DNS_MESSAGE_VALID(msg));
|
|
||||||
|
|
||||||
- if (msg->tsigkey == NULL && msg->tsig == NULL && msg->sig0 == NULL)
|
|
||||||
+ if (msg->tsigkey == NULL && msg->tsig == NULL)
|
|
||||||
return (ISC_R_SUCCESS);
|
|
||||||
|
|
||||||
INSIST(msg->saved.base != NULL);
|
|
||||||
isc_buffer_init(&msgb, msg->saved.base, msg->saved.length);
|
|
||||||
isc_buffer_add(&msgb, msg->saved.length);
|
|
||||||
- if (msg->tsigkey != NULL || msg->tsig != NULL) {
|
|
||||||
#ifdef SKAN_MSG_DEBUG
|
|
||||||
- dns_message_dumpsig(msg, "dns_message_checksig#1");
|
|
||||||
+ dns_message_dumpsig(msg, "dns_message_checksig#1");
|
|
||||||
#endif
|
|
||||||
- if (view != NULL)
|
|
||||||
- return (dns_view_checksig(view, &msgb, msg));
|
|
||||||
- else
|
|
||||||
- return (dns_tsig_verify(&msgb, msg, NULL, NULL));
|
|
||||||
- } else {
|
|
||||||
- dns_rdata_t rdata = DNS_RDATA_INIT;
|
|
||||||
- dns_rdata_sig_t sig;
|
|
||||||
- dns_rdataset_t keyset;
|
|
||||||
- isc_result_t result;
|
|
||||||
-
|
|
||||||
- result = dns_rdataset_first(msg->sig0);
|
|
||||||
- INSIST(result == ISC_R_SUCCESS);
|
|
||||||
- dns_rdataset_current(msg->sig0, &rdata);
|
|
||||||
-
|
|
||||||
- /*
|
|
||||||
- * This can occur when the message is a dynamic update, since
|
|
||||||
- * the rdata length checking is relaxed. This should not
|
|
||||||
- * happen in a well-formed message, since the SIG(0) is only
|
|
||||||
- * looked for in the additional section, and the dynamic update
|
|
||||||
- * meta-records are in the prerequisite and update sections.
|
|
||||||
- */
|
|
||||||
- if (rdata.length == 0)
|
|
||||||
- return (ISC_R_UNEXPECTEDEND);
|
|
||||||
-
|
|
||||||
- result = dns_rdata_tostruct(&rdata, &sig, msg->mctx);
|
|
||||||
- if (result != ISC_R_SUCCESS)
|
|
||||||
- return (result);
|
|
||||||
-
|
|
||||||
- dns_rdataset_init(&keyset);
|
|
||||||
- if (view == NULL)
|
|
||||||
- return (DNS_R_KEYUNAUTHORIZED);
|
|
||||||
- result = dns_view_simplefind(view, &sig.signer,
|
|
||||||
- dns_rdatatype_key /* SIG(0) */,
|
|
||||||
- 0, 0, false, &keyset, NULL);
|
|
||||||
-
|
|
||||||
- if (result != ISC_R_SUCCESS) {
|
|
||||||
- /* XXXBEW Should possibly create a fetch here */
|
|
||||||
- result = DNS_R_KEYUNAUTHORIZED;
|
|
||||||
- goto freesig;
|
|
||||||
- } else if (keyset.trust < dns_trust_secure) {
|
|
||||||
- /* XXXBEW Should call a validator here */
|
|
||||||
- result = DNS_R_KEYUNAUTHORIZED;
|
|
||||||
- goto freesig;
|
|
||||||
- }
|
|
||||||
- result = dns_rdataset_first(&keyset);
|
|
||||||
- INSIST(result == ISC_R_SUCCESS);
|
|
||||||
- for (;
|
|
||||||
- result == ISC_R_SUCCESS;
|
|
||||||
- result = dns_rdataset_next(&keyset))
|
|
||||||
- {
|
|
||||||
- dst_key_t *key = NULL;
|
|
||||||
-
|
|
||||||
- dns_rdata_reset(&rdata);
|
|
||||||
- dns_rdataset_current(&keyset, &rdata);
|
|
||||||
- isc_buffer_init(&b, rdata.data, rdata.length);
|
|
||||||
- isc_buffer_add(&b, rdata.length);
|
|
||||||
-
|
|
||||||
- result = dst_key_fromdns(&sig.signer, rdata.rdclass,
|
|
||||||
- &b, view->mctx, &key);
|
|
||||||
- if (result != ISC_R_SUCCESS)
|
|
||||||
- continue;
|
|
||||||
- if (dst_key_alg(key) != sig.algorithm ||
|
|
||||||
- dst_key_id(key) != sig.keyid ||
|
|
||||||
- !(dst_key_proto(key) == DNS_KEYPROTO_DNSSEC ||
|
|
||||||
- dst_key_proto(key) == DNS_KEYPROTO_ANY))
|
|
||||||
- {
|
|
||||||
- dst_key_free(&key);
|
|
||||||
- continue;
|
|
||||||
- }
|
|
||||||
- result = dns_dnssec_verifymessage(&msgb, msg, key);
|
|
||||||
- dst_key_free(&key);
|
|
||||||
- if (result == ISC_R_SUCCESS)
|
|
||||||
- break;
|
|
||||||
- }
|
|
||||||
- if (result == ISC_R_NOMORE)
|
|
||||||
- result = DNS_R_KEYUNAUTHORIZED;
|
|
||||||
-
|
|
||||||
- freesig:
|
|
||||||
- if (dns_rdataset_isassociated(&keyset))
|
|
||||||
- dns_rdataset_disassociate(&keyset);
|
|
||||||
- dns_rdata_freestruct(&sig);
|
|
||||||
- return (result);
|
|
||||||
- }
|
|
||||||
+ if (view != NULL)
|
|
||||||
+ return (dns_view_checksig(view, &msgb, msg));
|
|
||||||
+ else
|
|
||||||
+ return (dns_tsig_verify(&msgb, msg, NULL, NULL));
|
|
||||||
}
|
|
||||||
|
|
||||||
#define INDENT(sp) \
|
|
||||||
--
|
|
||||||
2.45.2
|
|
||||||
|
|
@ -1,171 +0,0 @@
|
|||||||
diff --git a/lib/isc/include/isc/result.h b/lib/isc/include/isc/result.h
|
|
||||||
index 0389efa..149cde5 100644
|
|
||||||
--- a/lib/isc/include/isc/result.h
|
|
||||||
+++ b/lib/isc/include/isc/result.h
|
|
||||||
@@ -89,7 +89,8 @@
|
|
||||||
#define ISC_R_DISCFULL 67 /*%< disc full */
|
|
||||||
#define ISC_R_DEFAULT 68 /*%< default */
|
|
||||||
#define ISC_R_IPV4PREFIX 69 /*%< IPv4 prefix */
|
|
||||||
-#define ISC_R_NRESULTS 70
|
|
||||||
+#define ISC_R_TIMESHIFTED 70 /*%< system time changed */
|
|
||||||
+#define ISC_R_NRESULTS 71
|
|
||||||
|
|
||||||
ISC_LANG_BEGINDECLS
|
|
||||||
|
|
||||||
diff --git a/lib/isc/include/isc/util.h b/lib/isc/include/isc/util.h
|
|
||||||
index 973c348..cceeb5e 100644
|
|
||||||
--- a/lib/isc/include/isc/util.h
|
|
||||||
+++ b/lib/isc/include/isc/util.h
|
|
||||||
@@ -289,6 +289,10 @@ extern void mock_assert(const int result, const char* const expression,
|
|
||||||
* Time
|
|
||||||
*/
|
|
||||||
#define TIME_NOW(tp) RUNTIME_CHECK(isc_time_now((tp)) == ISC_R_SUCCESS)
|
|
||||||
+#ifdef CLOCK_BOOTTIME
|
|
||||||
+#define TIME_MONOTONIC(tp) RUNTIME_CHECK(isc_time_boottime((tp)) == ISC_R_SUCCESS)
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
|
|
||||||
/*%
|
|
||||||
* Alignment
|
|
||||||
diff --git a/lib/isc/result.c b/lib/isc/result.c
|
|
||||||
index a9db132..f33fc6b 100644
|
|
||||||
--- a/lib/isc/result.c
|
|
||||||
+++ b/lib/isc/result.c
|
|
||||||
@@ -105,6 +105,7 @@ static const char *description[ISC_R_NRESULTS] = {
|
|
||||||
"disc full", /*%< 67 */
|
|
||||||
"default", /*%< 68 */
|
|
||||||
"IPv4 prefix", /*%< 69 */
|
|
||||||
+ "time changed", /*%< 70 */
|
|
||||||
};
|
|
||||||
|
|
||||||
static const char *identifier[ISC_R_NRESULTS] = {
|
|
||||||
@@ -178,6 +179,7 @@ static const char *identifier[ISC_R_NRESULTS] = {
|
|
||||||
"ISC_R_DISCFULL",
|
|
||||||
"ISC_R_DEFAULT",
|
|
||||||
"ISC_R_IPV4PREFIX",
|
|
||||||
+ "ISC_R_TIMESHIFTED",
|
|
||||||
};
|
|
||||||
|
|
||||||
#define ISC_RESULT_RESULTSET 2
|
|
||||||
diff --git a/lib/isc/unix/app.c b/lib/isc/unix/app.c
|
|
||||||
index a6e9882..286fe95 100644
|
|
||||||
--- a/lib/isc/unix/app.c
|
|
||||||
+++ b/lib/isc/unix/app.c
|
|
||||||
@@ -442,15 +442,47 @@ isc__app_ctxonrun(isc_appctx_t *ctx0, isc_mem_t *mctx, isc_task_t *task,
|
|
||||||
static isc_result_t
|
|
||||||
evloop(isc__appctx_t *ctx) {
|
|
||||||
isc_result_t result;
|
|
||||||
+ isc_time_t now;
|
|
||||||
+#ifdef CLOCK_BOOTTIME
|
|
||||||
+ isc_time_t monotonic;
|
|
||||||
+ isc_uint64_t diff = 0;
|
|
||||||
+#else
|
|
||||||
+ isc_time_t prev;
|
|
||||||
+ TIME_NOW(&prev);
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
while (!ctx->want_shutdown) {
|
|
||||||
int n;
|
|
||||||
- isc_time_t when, now;
|
|
||||||
+ isc_time_t when;
|
|
||||||
struct timeval tv, *tvp;
|
|
||||||
isc_socketwait_t *swait;
|
|
||||||
bool readytasks;
|
|
||||||
bool call_timer_dispatch = false;
|
|
||||||
|
|
||||||
+ uint64_t us;
|
|
||||||
+
|
|
||||||
+#ifdef CLOCK_BOOTTIME
|
|
||||||
+ // TBD macros for following three lines
|
|
||||||
+ TIME_NOW(&now);
|
|
||||||
+ TIME_MONOTONIC(&monotonic);
|
|
||||||
+ INSIST(now.seconds > monotonic.seconds)
|
|
||||||
+ us = isc_time_microdiff (&now, &monotonic);
|
|
||||||
+ if (us < diff){
|
|
||||||
+ us = diff - us;
|
|
||||||
+ if (us > 1000000){ // ignoring shifts less than one second
|
|
||||||
+ return ISC_R_TIMESHIFTED;
|
|
||||||
+ };
|
|
||||||
+ diff = isc_time_microdiff (&now, &monotonic);
|
|
||||||
+ } else {
|
|
||||||
+ diff = isc_time_microdiff (&now, &monotonic);
|
|
||||||
+ // not implemented
|
|
||||||
+ }
|
|
||||||
+#else
|
|
||||||
+ TIME_NOW(&now);
|
|
||||||
+ if (isc_time_compare (&now, &prev) < 0)
|
|
||||||
+ return ISC_R_TIMESHIFTED;
|
|
||||||
+ TIME_NOW(&prev);
|
|
||||||
+#endif
|
|
||||||
/*
|
|
||||||
* Check the reload (or suspend) case first for exiting the
|
|
||||||
* loop as fast as possible in case:
|
|
||||||
@@ -475,7 +507,6 @@ evloop(isc__appctx_t *ctx) {
|
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
tvp = NULL;
|
|
||||||
else {
|
|
||||||
- uint64_t us;
|
|
||||||
|
|
||||||
TIME_NOW(&now);
|
|
||||||
us = isc_time_microdiff(&when, &now);
|
|
||||||
diff --git a/lib/isc/unix/include/isc/time.h b/lib/isc/unix/include/isc/time.h
|
|
||||||
index b864c29..5dd43c9 100644
|
|
||||||
--- a/lib/isc/unix/include/isc/time.h
|
|
||||||
+++ b/lib/isc/unix/include/isc/time.h
|
|
||||||
@@ -132,6 +132,26 @@ isc_time_isepoch(const isc_time_t *t);
|
|
||||||
*\li 't' is a valid pointer.
|
|
||||||
*/
|
|
||||||
|
|
||||||
+#ifdef CLOCK_BOOTTIME
|
|
||||||
+isc_result_t
|
|
||||||
+isc_time_boottime(isc_time_t *t);
|
|
||||||
+/*%<
|
|
||||||
+ * Set 't' to monotonic time from previous boot
|
|
||||||
+ * it's not affected by system time change. It also
|
|
||||||
+ * includes the time system was suspended
|
|
||||||
+ *
|
|
||||||
+ * Requires:
|
|
||||||
+ *\li 't' is a valid pointer.
|
|
||||||
+ *
|
|
||||||
+ * Returns:
|
|
||||||
+ *
|
|
||||||
+ *\li Success
|
|
||||||
+ *\li Unexpected error
|
|
||||||
+ * Getting the time from the system failed.
|
|
||||||
+ */
|
|
||||||
+#endif /* CLOCK_BOOTTIME */
|
|
||||||
+
|
|
||||||
+
|
|
||||||
isc_result_t
|
|
||||||
isc_time_now(isc_time_t *t);
|
|
||||||
/*%<
|
|
||||||
diff --git a/lib/isc/unix/time.c b/lib/isc/unix/time.c
|
|
||||||
index 8edc9df..fe0bb91 100644
|
|
||||||
--- a/lib/isc/unix/time.c
|
|
||||||
+++ b/lib/isc/unix/time.c
|
|
||||||
@@ -498,3 +498,25 @@ isc_time_formatISO8601ms(const isc_time_t *t, char *buf, unsigned int len) {
|
|
||||||
t->nanoseconds / NS_PER_MS);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+#ifdef CLOCK_BOOTTIME
|
|
||||||
+isc_result_t
|
|
||||||
+isc_time_boottime(isc_time_t *t) {
|
|
||||||
+ struct timespec ts;
|
|
||||||
+
|
|
||||||
+ char strbuf[ISC_STRERRORSIZE];
|
|
||||||
+
|
|
||||||
+ if (clock_gettime (CLOCK_BOOTTIME, &ts) != 0){
|
|
||||||
+ isc__strerror(errno, strbuf, sizeof(strbuf));
|
|
||||||
+ UNEXPECTED_ERROR(__FILE__, __LINE__, "%s", strbuf);
|
|
||||||
+ return (ISC_R_UNEXPECTED);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ t->seconds = ts.tv_sec;
|
|
||||||
+ t->nanoseconds = ts.tv_nsec;
|
|
||||||
+
|
|
||||||
+ return (ISC_R_SUCCESS);
|
|
||||||
+
|
|
||||||
+};
|
|
||||||
+#endif
|
|
@ -1,27 +0,0 @@
|
|||||||
From 37f89ccfc439f8d86c401d9ae10e94e53b924961 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Petr Mensik <pemensik@redhat.com>
|
|
||||||
Date: Tue, 27 Aug 2019 20:39:59 +0200
|
|
||||||
Subject: [PATCH] Do not set engine for native PKCS11
|
|
||||||
|
|
||||||
It resets already set lib_path to pkcs11, which is invalid in native
|
|
||||||
pkcs11 crypto. Engine has to be path to PKCS#11 module.
|
|
||||||
---
|
|
||||||
bin/named/include/named/globals.h | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/bin/named/include/named/globals.h b/bin/named/include/named/globals.h
|
|
||||||
index eda2214..2a611d5 100644
|
|
||||||
--- a/bin/named/include/named/globals.h
|
|
||||||
+++ b/bin/named/include/named/globals.h
|
|
||||||
@@ -160,7 +160,7 @@ EXTERN const char * ns_g_defaultdnstap INIT(NULL);
|
|
||||||
|
|
||||||
EXTERN const char * ns_g_username INIT(NULL);
|
|
||||||
|
|
||||||
-#if defined(USE_PKCS11)
|
|
||||||
+#if defined(USE_PKCS11) && !defined(PKCS11CRYPTO)
|
|
||||||
EXTERN const char * ns_g_engine INIT(PKCS11_ENGINE);
|
|
||||||
#else
|
|
||||||
EXTERN const char * ns_g_engine INIT(NULL);
|
|
||||||
--
|
|
||||||
2.20.1
|
|
||||||
|
|
@ -1,39 +0,0 @@
|
|||||||
diff --git a/configure.ac b/configure.ac
|
|
||||||
index c1bfd62..7c5ad51 100644
|
|
||||||
--- a/configure.ac
|
|
||||||
+++ b/configure.ac
|
|
||||||
@@ -5333,6 +5333,8 @@ AC_SUBST(BUILD_CPPFLAGS)
|
|
||||||
AC_SUBST(BUILD_LDFLAGS)
|
|
||||||
AC_SUBST(BUILD_LIBS)
|
|
||||||
|
|
||||||
+AC_SUBST(LIBDIR_SUFFIX)
|
|
||||||
+
|
|
||||||
#
|
|
||||||
# Commands to run at the end of config.status.
|
|
||||||
# Don't just put these into configure, it won't work right if somebody
|
|
||||||
diff --git a/isc-config.sh.in b/isc-config.sh.in
|
|
||||||
index b5e94ed..d2857e0 100644
|
|
||||||
--- a/isc-config.sh.in
|
|
||||||
+++ b/isc-config.sh.in
|
|
||||||
@@ -13,16 +13,17 @@ prefix=@prefix@
|
|
||||||
exec_prefix=@exec_prefix@
|
|
||||||
exec_prefix_set=
|
|
||||||
includedir=@includedir@
|
|
||||||
+libdir_suffix=@LIBDIR_SUFFIX@
|
|
||||||
arch=$(uname -m)
|
|
||||||
|
|
||||||
case $arch in
|
|
||||||
x86_64 | amd64 | sparc64 | s390x | ppc64)
|
|
||||||
- libdir=/usr/lib64
|
|
||||||
- sec_libdir=/usr/lib
|
|
||||||
+ libdir=/usr/lib64${libdir_suffix}
|
|
||||||
+ sec_libdir=/usr/lib${libdir_suffix}
|
|
||||||
;;
|
|
||||||
* )
|
|
||||||
- libdir=/usr/lib
|
|
||||||
- sec_libdir=/usr/lib64
|
|
||||||
+ libdir=/usr/lib${libdir_suffix}
|
|
||||||
+ sec_libdir=/usr/lib64${libdir_suffix}
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
59
SOURCES/bind-9.11-feature-test-named.patch
Normal file
59
SOURCES/bind-9.11-feature-test-named.patch
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
From e645046202006750f87531e21e3ff7c26fba3466 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Petr=20Men=C5=A1=C3=ADk?= <pemensik@redhat.com>
|
||||||
|
Date: Wed, 30 Jan 2019 14:37:17 +0100
|
||||||
|
Subject: [PATCH] Create feature-test in source directory
|
||||||
|
|
||||||
|
Feature-test tool is used in system tests to test compiled in changes.
|
||||||
|
Because we build more variants of named with different configuration,
|
||||||
|
compile feature-test for each of them this way.
|
||||||
|
---
|
||||||
|
bin/named/Makefile.in | 12 +++++++++++-
|
||||||
|
bin/tests/system/conf.sh.in | 2 +-
|
||||||
|
2 files changed, 12 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/bin/named/Makefile.in b/bin/named/Makefile.in
|
||||||
|
index 37053a7..ed9add2 100644
|
||||||
|
--- a/bin/named/Makefile.in
|
||||||
|
+++ b/bin/named/Makefile.in
|
||||||
|
@@ -91,7 +91,7 @@ NOSYMLIBS = ${NSLIBS} ${DNSLIBS} ${BIND9LIBS} \
|
||||||
|
|
||||||
|
SUBDIRS = unix
|
||||||
|
|
||||||
|
-TARGETS = named@EXEEXT@
|
||||||
|
+TARGETS = named@EXEEXT@ feature-test@EXEEXT@
|
||||||
|
|
||||||
|
GEOIP2LINKOBJS = geoip.@O@
|
||||||
|
|
||||||
|
@@ -154,6 +154,16 @@ named@EXEEXT@: ${OBJS} ${DEPLIBS}
|
||||||
|
export BASEOBJS="${OBJS} ${UOBJS}"; \
|
||||||
|
${FINALBUILDCMD}
|
||||||
|
|
||||||
|
+# Bit of hack, do not produce intermediate .o object for featuretest
|
||||||
|
+feature-test.@O@: ${top_srcdir}/bin/tests/system/feature-test.c
|
||||||
|
+ ${LIBTOOL_MODE_COMPILE} ${CC} ${ALL_CFLAGS} \
|
||||||
|
+ -c ${top_srcdir}/bin/tests/system/feature-test.c
|
||||||
|
+
|
||||||
|
+feature-test@EXEEXT@: feature-test.@O@
|
||||||
|
+ ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} \
|
||||||
|
+ -o $@ feature-test.@O@ ${ISCLIBS} ${LIBS}
|
||||||
|
+
|
||||||
|
+
|
||||||
|
clean distclean maintainer-clean::
|
||||||
|
rm -f ${TARGETS} ${OBJS}
|
||||||
|
|
||||||
|
diff --git a/bin/tests/system/conf.sh.in b/bin/tests/system/conf.sh.in
|
||||||
|
index 7934930..e84fde2 100644
|
||||||
|
--- a/bin/tests/system/conf.sh.in
|
||||||
|
+++ b/bin/tests/system/conf.sh.in
|
||||||
|
@@ -37,7 +37,7 @@ DELV=$TOP/bin/delv/delv
|
||||||
|
DIG=$TOP/bin/dig/dig
|
||||||
|
DNSTAPREAD=$TOP/bin/tools/dnstap-read
|
||||||
|
DSFROMKEY=$TOP/bin/dnssec/dnssec-dsfromkey
|
||||||
|
-FEATURETEST=$TOP/bin/tests/system/feature-test
|
||||||
|
+FEATURETEST=$TOP/bin/named/feature-test
|
||||||
|
FSTRM_CAPTURE=@FSTRM_CAPTURE@
|
||||||
|
HOST=$TOP/bin/dig/host
|
||||||
|
IMPORTKEY=$TOP/bin/dnssec/dnssec-importkey
|
||||||
|
--
|
||||||
|
2.26.2
|
||||||
|
|
@ -1,39 +0,0 @@
|
|||||||
From c928591eb2a3b17c5be0cad56c8e061ebba11a95 Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?Petr=20Men=C5=A1=C3=ADk?= <pemensik@redhat.com>
|
|
||||||
Date: Thu, 20 Dec 2018 11:52:12 +0100
|
|
||||||
Subject: [PATCH] Fix implicit declaration warning
|
|
||||||
|
|
||||||
isc_md5_available() function is not declared before its use. Include
|
|
||||||
header providing it in files that use it.
|
|
||||||
---
|
|
||||||
bin/tests/system/tkey/keydelete.c | 1 +
|
|
||||||
lib/dns/tsig.c | 1 +
|
|
||||||
2 files changed, 2 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/bin/tests/system/tkey/keydelete.c b/bin/tests/system/tkey/keydelete.c
|
|
||||||
index 4b5b901..a3dd450 100644
|
|
||||||
--- a/bin/tests/system/tkey/keydelete.c
|
|
||||||
+++ b/bin/tests/system/tkey/keydelete.c
|
|
||||||
@@ -21,6 +21,7 @@
|
|
||||||
#include <isc/hash.h>
|
|
||||||
#include <isc/log.h>
|
|
||||||
#include <isc/mem.h>
|
|
||||||
+#include <isc/md5.h>
|
|
||||||
#include <isc/print.h>
|
|
||||||
#include <isc/sockaddr.h>
|
|
||||||
#include <isc/socket.h>
|
|
||||||
diff --git a/lib/dns/tsig.c b/lib/dns/tsig.c
|
|
||||||
index c37b235..7786801 100644
|
|
||||||
--- a/lib/dns/tsig.c
|
|
||||||
+++ b/lib/dns/tsig.c
|
|
||||||
@@ -18,6 +18,7 @@
|
|
||||||
|
|
||||||
#include <isc/buffer.h>
|
|
||||||
#include <isc/mem.h>
|
|
||||||
+#include <isc/md5.h>
|
|
||||||
#include <isc/print.h>
|
|
||||||
#include <isc/print.h>
|
|
||||||
#include <isc/refcount.h>
|
|
||||||
--
|
|
||||||
2.26.2
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
@ -1,121 +0,0 @@
|
|||||||
From 83b889c238282b210f874a3ad81bb56299767495 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Petr Mensik <pemensik@redhat.com>
|
|
||||||
Date: Mon, 5 Aug 2019 11:54:03 +0200
|
|
||||||
Subject: [PATCH] Allow explicit disabling of autodisabled MD5
|
|
||||||
|
|
||||||
Default security policy might include explicitly disabled RSAMD5
|
|
||||||
algorithm. Current FIPS code automatically disables in FIPS mode. But if
|
|
||||||
RSAMD5 is included in security policy, it fails to start, because that
|
|
||||||
algorithm is not recognized. Allow it disabled, but fail on any
|
|
||||||
other usage.
|
|
||||||
---
|
|
||||||
bin/named/server.c | 4 ++--
|
|
||||||
lib/bind9/check.c | 4 ++++
|
|
||||||
lib/dns/rcode.c | 33 +++++++++++++++------------------
|
|
||||||
3 files changed, 21 insertions(+), 20 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/bin/named/server.c b/bin/named/server.c
|
|
||||||
index 5b57371..51702ab 100644
|
|
||||||
--- a/bin/named/server.c
|
|
||||||
+++ b/bin/named/server.c
|
|
||||||
@@ -1547,12 +1547,12 @@ disable_algorithms(const cfg_obj_t *disabled, dns_resolver_t *resolver) {
|
|
||||||
r.length = strlen(r.base);
|
|
||||||
|
|
||||||
result = dns_secalg_fromtext(&alg, &r);
|
|
||||||
- if (result != ISC_R_SUCCESS) {
|
|
||||||
+ if (result != ISC_R_SUCCESS && result != ISC_R_DISABLED) {
|
|
||||||
uint8_t ui;
|
|
||||||
result = isc_parse_uint8(&ui, r.base, 10);
|
|
||||||
alg = ui;
|
|
||||||
}
|
|
||||||
- if (result != ISC_R_SUCCESS) {
|
|
||||||
+ if (result != ISC_R_SUCCESS && result != ISC_R_DISABLED) {
|
|
||||||
cfg_obj_log(cfg_listelt_value(element),
|
|
||||||
ns_g_lctx, ISC_LOG_ERROR,
|
|
||||||
"invalid algorithm");
|
|
||||||
diff --git a/lib/bind9/check.c b/lib/bind9/check.c
|
|
||||||
index e0803d4..8023784 100644
|
|
||||||
--- a/lib/bind9/check.c
|
|
||||||
+++ b/lib/bind9/check.c
|
|
||||||
@@ -302,6 +302,10 @@ disabled_algorithms(const cfg_obj_t *disabled, isc_log_t *logctx) {
|
|
||||||
r.length = strlen(r.base);
|
|
||||||
|
|
||||||
tresult = dns_secalg_fromtext(&alg, &r);
|
|
||||||
+ if (tresult == ISC_R_DISABLED) {
|
|
||||||
+ // Recognize disabled algorithms, disable it explicitly
|
|
||||||
+ tresult = ISC_R_SUCCESS;
|
|
||||||
+ }
|
|
||||||
if (tresult != ISC_R_SUCCESS) {
|
|
||||||
cfg_obj_log(cfg_listelt_value(element), logctx,
|
|
||||||
ISC_LOG_ERROR, "invalid algorithm '%s'",
|
|
||||||
diff --git a/lib/dns/rcode.c b/lib/dns/rcode.c
|
|
||||||
index f51d548..c49b8d1 100644
|
|
||||||
--- a/lib/dns/rcode.c
|
|
||||||
+++ b/lib/dns/rcode.c
|
|
||||||
@@ -126,7 +126,6 @@
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define SECALGNAMES \
|
|
||||||
- MD5_SECALGNAMES \
|
|
||||||
DH_SECALGNAMES \
|
|
||||||
DSA_SECALGNAMES \
|
|
||||||
{ DNS_KEYALG_ECC, "ECC", 0 }, \
|
|
||||||
@@ -178,6 +177,7 @@ static struct tbl rcodes[] = { RCODENAMES ERCODENAMES };
|
|
||||||
static struct tbl tsigrcodes[] = { RCODENAMES TSIGRCODENAMES };
|
|
||||||
static struct tbl certs[] = { CERTNAMES };
|
|
||||||
static struct tbl secalgs[] = { SECALGNAMES };
|
|
||||||
+static struct tbl md5_secalgs[] = { MD5_SECALGNAMES };
|
|
||||||
static struct tbl secprotos[] = { SECPROTONAMES };
|
|
||||||
static struct tbl hashalgs[] = { HASHALGNAMES };
|
|
||||||
static struct tbl dsdigests[] = { DSDIGESTNAMES };
|
|
||||||
@@ -358,33 +358,30 @@ dns_cert_totext(dns_cert_t cert, isc_buffer_t *target) {
|
|
||||||
return (dns_mnemonic_totext(cert, target, certs));
|
|
||||||
}
|
|
||||||
|
|
||||||
-static inline struct tbl *
|
|
||||||
-secalgs_tbl_start() {
|
|
||||||
- struct tbl *algs = secalgs;
|
|
||||||
-
|
|
||||||
-#ifndef PK11_MD5_DISABLE
|
|
||||||
- if (!isc_md5_available()) {
|
|
||||||
- while (algs->name != NULL &&
|
|
||||||
- algs->value == DNS_KEYALG_RSAMD5)
|
|
||||||
- ++algs;
|
|
||||||
- }
|
|
||||||
-#endif
|
|
||||||
- return algs;
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
isc_result_t
|
|
||||||
dns_secalg_fromtext(dns_secalg_t *secalgp, isc_textregion_t *source) {
|
|
||||||
unsigned int value;
|
|
||||||
+ isc_result_t result;
|
|
||||||
|
|
||||||
- RETERR(dns_mnemonic_fromtext(&value, source,
|
|
||||||
- secalgs_tbl_start(), 0xff));
|
|
||||||
+ result = dns_mnemonic_fromtext(&value, source,
|
|
||||||
+ secalgs, 0xff);
|
|
||||||
+ if (result != ISC_R_SUCCESS) {
|
|
||||||
+ result = dns_mnemonic_fromtext(&value, source,
|
|
||||||
+ md5_secalgs, 0xff);
|
|
||||||
+ if (result != ISC_R_SUCCESS) {
|
|
||||||
+ return (result);
|
|
||||||
+ } else if (!isc_md5_available()) {
|
|
||||||
+ *secalgp = value;
|
|
||||||
+ return (ISC_R_DISABLED);
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
*secalgp = value;
|
|
||||||
return (ISC_R_SUCCESS);
|
|
||||||
}
|
|
||||||
|
|
||||||
isc_result_t
|
|
||||||
dns_secalg_totext(dns_secalg_t secalg, isc_buffer_t *target) {
|
|
||||||
- return (dns_mnemonic_totext(secalg, target, secalgs_tbl_start()));
|
|
||||||
+ return (dns_mnemonic_totext(secalg, target, secalgs));
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
--
|
|
||||||
2.20.1
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
From 1dc81c51cd5c70b783aab8b6156aec4cfedd6fe3 Mon Sep 17 00:00:00 2001
|
From 3f04cf343dbeb8819197702ce1be737e26e0638a Mon Sep 17 00:00:00 2001
|
||||||
From: =?UTF-8?q?Petr=20Men=C5=A1=C3=ADk?= <pemensik@redhat.com>
|
From: =?UTF-8?q?Petr=20Men=C5=A1=C3=ADk?= <pemensik@redhat.com>
|
||||||
Date: Thu, 2 Aug 2018 23:46:45 +0200
|
Date: Thu, 2 Aug 2018 23:46:45 +0200
|
||||||
Subject: [PATCH] FIPS tests changes
|
Subject: [PATCH] FIPS tests changes
|
||||||
@ -76,37 +76,26 @@ Date: Wed Mar 7 10:44:23 2018 +0100
|
|||||||
bin/tests/system/catz/ns2/named.conf.in | 2 +-
|
bin/tests/system/catz/ns2/named.conf.in | 2 +-
|
||||||
bin/tests/system/checkconf/bad-tsig.conf | 2 +-
|
bin/tests/system/checkconf/bad-tsig.conf | 2 +-
|
||||||
bin/tests/system/checkconf/good.conf | 2 +-
|
bin/tests/system/checkconf/good.conf | 2 +-
|
||||||
bin/tests/system/digdelv/ns2/example.db | 15 +++--
|
|
||||||
bin/tests/system/digdelv/tests.sh | 20 +++---
|
|
||||||
bin/tests/system/dlv/ns1/sign.sh | 4 +-
|
|
||||||
bin/tests/system/dlv/ns2/sign.sh | 4 +-
|
|
||||||
bin/tests/system/dlv/ns6/sign.sh | 66 ++++++++++---------
|
|
||||||
bin/tests/system/dnssec/ns2/sign.sh | 8 +--
|
|
||||||
bin/tests/system/dnssec/ns5/trusted.conf.bad | 2 +-
|
|
||||||
bin/tests/system/dnssec/tests.sh | 4 +-
|
|
||||||
bin/tests/system/feature-test.c | 14 ++++
|
bin/tests/system/feature-test.c | 14 ++++
|
||||||
bin/tests/system/filter-aaaa/ns1/sign.sh | 4 +-
|
|
||||||
bin/tests/system/filter-aaaa/ns4/sign.sh | 4 +-
|
|
||||||
bin/tests/system/notify/ns5/named.conf.in | 6 +-
|
bin/tests/system/notify/ns5/named.conf.in | 6 +-
|
||||||
bin/tests/system/notify/tests.sh | 6 +-
|
bin/tests/system/notify/tests.sh | 6 +-
|
||||||
bin/tests/system/nsupdate/ns1/named.conf.in | 2 +-
|
bin/tests/system/nsupdate/ns1/named.conf.in | 2 +-
|
||||||
bin/tests/system/nsupdate/ns2/named.conf.in | 2 +-
|
bin/tests/system/nsupdate/ns2/named.conf.in | 2 +-
|
||||||
bin/tests/system/nsupdate/setup.sh | 7 +-
|
bin/tests/system/nsupdate/setup.sh | 6 +-
|
||||||
bin/tests/system/nsupdate/tests.sh | 11 +++-
|
bin/tests/system/nsupdate/tests.sh | 15 +++--
|
||||||
bin/tests/system/rndc/setup.sh | 2 +-
|
bin/tests/system/rndc/setup.sh | 2 +-
|
||||||
bin/tests/system/rndc/tests.sh | 23 ++++---
|
bin/tests/system/rndc/tests.sh | 23 ++++---
|
||||||
bin/tests/system/tsig/ns1/named.conf.in | 10 +--
|
bin/tests/system/tsig/ns1/named.conf.in | 10 +--
|
||||||
bin/tests/system/tsig/ns1/rndc5.conf.in | 10 +++
|
bin/tests/system/tsig/ns1/rndc5.conf.in | 10 +++
|
||||||
bin/tests/system/tsig/setup.sh | 5 ++
|
bin/tests/system/tsig/setup.sh | 5 ++
|
||||||
bin/tests/system/tsig/tests.sh | 65 +++++++++++-------
|
bin/tests/system/tsig/tests.sh | 65 ++++++++++++-------
|
||||||
bin/tests/system/tsiggss/setup.sh | 2 +-
|
|
||||||
bin/tests/system/upforwd/ns1/named.conf.in | 2 +-
|
bin/tests/system/upforwd/ns1/named.conf.in | 2 +-
|
||||||
bin/tests/system/upforwd/tests.sh | 2 +-
|
bin/tests/system/upforwd/tests.sh | 2 +-
|
||||||
44 files changed, 230 insertions(+), 170 deletions(-)
|
33 files changed, 162 insertions(+), 108 deletions(-)
|
||||||
create mode 100644 bin/tests/system/tsig/ns1/rndc5.conf.in
|
create mode 100644 bin/tests/system/tsig/ns1/rndc5.conf.in
|
||||||
|
|
||||||
diff --git a/bin/tests/system/acl/ns2/named1.conf.in b/bin/tests/system/acl/ns2/named1.conf.in
|
diff --git a/bin/tests/system/acl/ns2/named1.conf.in b/bin/tests/system/acl/ns2/named1.conf.in
|
||||||
index 9999ada..e3f8d0e 100644
|
index 60f22e1..249f672 100644
|
||||||
--- a/bin/tests/system/acl/ns2/named1.conf.in
|
--- a/bin/tests/system/acl/ns2/named1.conf.in
|
||||||
+++ b/bin/tests/system/acl/ns2/named1.conf.in
|
+++ b/bin/tests/system/acl/ns2/named1.conf.in
|
||||||
@@ -33,12 +33,12 @@ options {
|
@@ -33,12 +33,12 @@ options {
|
||||||
@ -125,7 +114,7 @@ index 9999ada..e3f8d0e 100644
|
|||||||
};
|
};
|
||||||
|
|
||||||
diff --git a/bin/tests/system/acl/ns2/named2.conf.in b/bin/tests/system/acl/ns2/named2.conf.in
|
diff --git a/bin/tests/system/acl/ns2/named2.conf.in b/bin/tests/system/acl/ns2/named2.conf.in
|
||||||
index f8ec34e..d2d6ad3 100644
|
index ada97bc..f82d858 100644
|
||||||
--- a/bin/tests/system/acl/ns2/named2.conf.in
|
--- a/bin/tests/system/acl/ns2/named2.conf.in
|
||||||
+++ b/bin/tests/system/acl/ns2/named2.conf.in
|
+++ b/bin/tests/system/acl/ns2/named2.conf.in
|
||||||
@@ -33,12 +33,12 @@ options {
|
@@ -33,12 +33,12 @@ options {
|
||||||
@ -144,7 +133,7 @@ index f8ec34e..d2d6ad3 100644
|
|||||||
};
|
};
|
||||||
|
|
||||||
diff --git a/bin/tests/system/acl/ns2/named3.conf.in b/bin/tests/system/acl/ns2/named3.conf.in
|
diff --git a/bin/tests/system/acl/ns2/named3.conf.in b/bin/tests/system/acl/ns2/named3.conf.in
|
||||||
index 2acb813..6a00344 100644
|
index 97684e4..de6a2e9 100644
|
||||||
--- a/bin/tests/system/acl/ns2/named3.conf.in
|
--- a/bin/tests/system/acl/ns2/named3.conf.in
|
||||||
+++ b/bin/tests/system/acl/ns2/named3.conf.in
|
+++ b/bin/tests/system/acl/ns2/named3.conf.in
|
||||||
@@ -33,17 +33,17 @@ options {
|
@@ -33,17 +33,17 @@ options {
|
||||||
@ -169,7 +158,7 @@ index 2acb813..6a00344 100644
|
|||||||
};
|
};
|
||||||
|
|
||||||
diff --git a/bin/tests/system/acl/ns2/named4.conf.in b/bin/tests/system/acl/ns2/named4.conf.in
|
diff --git a/bin/tests/system/acl/ns2/named4.conf.in b/bin/tests/system/acl/ns2/named4.conf.in
|
||||||
index bca3ee1..5913420 100644
|
index 462b3fa..994b35c 100644
|
||||||
--- a/bin/tests/system/acl/ns2/named4.conf.in
|
--- a/bin/tests/system/acl/ns2/named4.conf.in
|
||||||
+++ b/bin/tests/system/acl/ns2/named4.conf.in
|
+++ b/bin/tests/system/acl/ns2/named4.conf.in
|
||||||
@@ -33,12 +33,12 @@ options {
|
@@ -33,12 +33,12 @@ options {
|
||||||
@ -188,10 +177,10 @@ index bca3ee1..5913420 100644
|
|||||||
};
|
};
|
||||||
|
|
||||||
diff --git a/bin/tests/system/acl/ns2/named5.conf.in b/bin/tests/system/acl/ns2/named5.conf.in
|
diff --git a/bin/tests/system/acl/ns2/named5.conf.in b/bin/tests/system/acl/ns2/named5.conf.in
|
||||||
index 9ef8171..5ae8d38 100644
|
index 728da58..8f00d09 100644
|
||||||
--- a/bin/tests/system/acl/ns2/named5.conf.in
|
--- a/bin/tests/system/acl/ns2/named5.conf.in
|
||||||
+++ b/bin/tests/system/acl/ns2/named5.conf.in
|
+++ b/bin/tests/system/acl/ns2/named5.conf.in
|
||||||
@@ -34,12 +34,12 @@ options {
|
@@ -35,12 +35,12 @@ options {
|
||||||
};
|
};
|
||||||
|
|
||||||
key one {
|
key one {
|
||||||
@ -207,7 +196,7 @@ index 9ef8171..5ae8d38 100644
|
|||||||
};
|
};
|
||||||
|
|
||||||
diff --git a/bin/tests/system/acl/tests.sh b/bin/tests/system/acl/tests.sh
|
diff --git a/bin/tests/system/acl/tests.sh b/bin/tests/system/acl/tests.sh
|
||||||
index 2ee34a0..a73a54e 100644
|
index be59d64..13d5bdc 100644
|
||||||
--- a/bin/tests/system/acl/tests.sh
|
--- a/bin/tests/system/acl/tests.sh
|
||||||
+++ b/bin/tests/system/acl/tests.sh
|
+++ b/bin/tests/system/acl/tests.sh
|
||||||
@@ -22,14 +22,14 @@ echo_i "testing basic ACL processing"
|
@@ -22,14 +22,14 @@ echo_i "testing basic ACL processing"
|
||||||
@ -333,11 +322,11 @@ index 2ee34a0..a73a54e 100644
|
|||||||
|
|
||||||
echo_i "testing allow-query-on ACL processing"
|
echo_i "testing allow-query-on ACL processing"
|
||||||
diff --git a/bin/tests/system/allow-query/ns2/named10.conf.in b/bin/tests/system/allow-query/ns2/named10.conf.in
|
diff --git a/bin/tests/system/allow-query/ns2/named10.conf.in b/bin/tests/system/allow-query/ns2/named10.conf.in
|
||||||
index a579f32..3b8f853 100644
|
index 7d43e36..f7b25f9 100644
|
||||||
--- a/bin/tests/system/allow-query/ns2/named10.conf.in
|
--- a/bin/tests/system/allow-query/ns2/named10.conf.in
|
||||||
+++ b/bin/tests/system/allow-query/ns2/named10.conf.in
|
+++ b/bin/tests/system/allow-query/ns2/named10.conf.in
|
||||||
@@ -12,7 +12,7 @@
|
@@ -10,7 +10,7 @@
|
||||||
controls { /* empty */ };
|
*/
|
||||||
|
|
||||||
key one {
|
key one {
|
||||||
- algorithm hmac-md5;
|
- algorithm hmac-md5;
|
||||||
@ -346,11 +335,11 @@ index a579f32..3b8f853 100644
|
|||||||
};
|
};
|
||||||
|
|
||||||
diff --git a/bin/tests/system/allow-query/ns2/named11.conf.in b/bin/tests/system/allow-query/ns2/named11.conf.in
|
diff --git a/bin/tests/system/allow-query/ns2/named11.conf.in b/bin/tests/system/allow-query/ns2/named11.conf.in
|
||||||
index 166afa1..997ece9 100644
|
index 2952518..121557e 100644
|
||||||
--- a/bin/tests/system/allow-query/ns2/named11.conf.in
|
--- a/bin/tests/system/allow-query/ns2/named11.conf.in
|
||||||
+++ b/bin/tests/system/allow-query/ns2/named11.conf.in
|
+++ b/bin/tests/system/allow-query/ns2/named11.conf.in
|
||||||
@@ -12,12 +12,12 @@
|
@@ -10,12 +10,12 @@
|
||||||
controls { /* empty */ };
|
*/
|
||||||
|
|
||||||
key one {
|
key one {
|
||||||
- algorithm hmac-md5;
|
- algorithm hmac-md5;
|
||||||
@ -365,11 +354,11 @@ index 166afa1..997ece9 100644
|
|||||||
};
|
};
|
||||||
|
|
||||||
diff --git a/bin/tests/system/allow-query/ns2/named12.conf.in b/bin/tests/system/allow-query/ns2/named12.conf.in
|
diff --git a/bin/tests/system/allow-query/ns2/named12.conf.in b/bin/tests/system/allow-query/ns2/named12.conf.in
|
||||||
index 25271a5..a9cb65d 100644
|
index 0c01071..ceabbb5 100644
|
||||||
--- a/bin/tests/system/allow-query/ns2/named12.conf.in
|
--- a/bin/tests/system/allow-query/ns2/named12.conf.in
|
||||||
+++ b/bin/tests/system/allow-query/ns2/named12.conf.in
|
+++ b/bin/tests/system/allow-query/ns2/named12.conf.in
|
||||||
@@ -12,7 +12,7 @@
|
@@ -10,7 +10,7 @@
|
||||||
controls { /* empty */ };
|
*/
|
||||||
|
|
||||||
key one {
|
key one {
|
||||||
- algorithm hmac-md5;
|
- algorithm hmac-md5;
|
||||||
@ -378,11 +367,11 @@ index 25271a5..a9cb65d 100644
|
|||||||
};
|
};
|
||||||
|
|
||||||
diff --git a/bin/tests/system/allow-query/ns2/named30.conf.in b/bin/tests/system/allow-query/ns2/named30.conf.in
|
diff --git a/bin/tests/system/allow-query/ns2/named30.conf.in b/bin/tests/system/allow-query/ns2/named30.conf.in
|
||||||
index c7c8254..f165e65 100644
|
index 4c17292..9cd9d1f 100644
|
||||||
--- a/bin/tests/system/allow-query/ns2/named30.conf.in
|
--- a/bin/tests/system/allow-query/ns2/named30.conf.in
|
||||||
+++ b/bin/tests/system/allow-query/ns2/named30.conf.in
|
+++ b/bin/tests/system/allow-query/ns2/named30.conf.in
|
||||||
@@ -12,7 +12,7 @@
|
@@ -10,7 +10,7 @@
|
||||||
controls { /* empty */ };
|
*/
|
||||||
|
|
||||||
key one {
|
key one {
|
||||||
- algorithm hmac-md5;
|
- algorithm hmac-md5;
|
||||||
@ -391,11 +380,11 @@ index c7c8254..f165e65 100644
|
|||||||
};
|
};
|
||||||
|
|
||||||
diff --git a/bin/tests/system/allow-query/ns2/named31.conf.in b/bin/tests/system/allow-query/ns2/named31.conf.in
|
diff --git a/bin/tests/system/allow-query/ns2/named31.conf.in b/bin/tests/system/allow-query/ns2/named31.conf.in
|
||||||
index 567bbcc..4fd2035 100644
|
index a2690a4..f488730 100644
|
||||||
--- a/bin/tests/system/allow-query/ns2/named31.conf.in
|
--- a/bin/tests/system/allow-query/ns2/named31.conf.in
|
||||||
+++ b/bin/tests/system/allow-query/ns2/named31.conf.in
|
+++ b/bin/tests/system/allow-query/ns2/named31.conf.in
|
||||||
@@ -12,12 +12,12 @@
|
@@ -10,12 +10,12 @@
|
||||||
controls { /* empty */ };
|
*/
|
||||||
|
|
||||||
key one {
|
key one {
|
||||||
- algorithm hmac-md5;
|
- algorithm hmac-md5;
|
||||||
@ -410,11 +399,11 @@ index 567bbcc..4fd2035 100644
|
|||||||
};
|
};
|
||||||
|
|
||||||
diff --git a/bin/tests/system/allow-query/ns2/named32.conf.in b/bin/tests/system/allow-query/ns2/named32.conf.in
|
diff --git a/bin/tests/system/allow-query/ns2/named32.conf.in b/bin/tests/system/allow-query/ns2/named32.conf.in
|
||||||
index b75161f..7b254e6 100644
|
index a0708c8..51fa457 100644
|
||||||
--- a/bin/tests/system/allow-query/ns2/named32.conf.in
|
--- a/bin/tests/system/allow-query/ns2/named32.conf.in
|
||||||
+++ b/bin/tests/system/allow-query/ns2/named32.conf.in
|
+++ b/bin/tests/system/allow-query/ns2/named32.conf.in
|
||||||
@@ -12,7 +12,7 @@
|
@@ -10,7 +10,7 @@
|
||||||
controls { /* empty */ };
|
*/
|
||||||
|
|
||||||
key one {
|
key one {
|
||||||
- algorithm hmac-md5;
|
- algorithm hmac-md5;
|
||||||
@ -423,10 +412,10 @@ index b75161f..7b254e6 100644
|
|||||||
};
|
};
|
||||||
|
|
||||||
diff --git a/bin/tests/system/allow-query/ns2/named40.conf.in b/bin/tests/system/allow-query/ns2/named40.conf.in
|
diff --git a/bin/tests/system/allow-query/ns2/named40.conf.in b/bin/tests/system/allow-query/ns2/named40.conf.in
|
||||||
index 9e17818..22f5001 100644
|
index 687768e..d24d6d2 100644
|
||||||
--- a/bin/tests/system/allow-query/ns2/named40.conf.in
|
--- a/bin/tests/system/allow-query/ns2/named40.conf.in
|
||||||
+++ b/bin/tests/system/allow-query/ns2/named40.conf.in
|
+++ b/bin/tests/system/allow-query/ns2/named40.conf.in
|
||||||
@@ -16,12 +16,12 @@ acl accept { 10.53.0.2; };
|
@@ -14,12 +14,12 @@ acl accept { 10.53.0.2; };
|
||||||
acl badaccept { 10.53.0.1; };
|
acl badaccept { 10.53.0.1; };
|
||||||
|
|
||||||
key one {
|
key one {
|
||||||
@ -442,10 +431,10 @@ index 9e17818..22f5001 100644
|
|||||||
};
|
};
|
||||||
|
|
||||||
diff --git a/bin/tests/system/allow-query/tests.sh b/bin/tests/system/allow-query/tests.sh
|
diff --git a/bin/tests/system/allow-query/tests.sh b/bin/tests/system/allow-query/tests.sh
|
||||||
index 791a1a4..95cd971 100644
|
index fe40635..543c663 100644
|
||||||
--- a/bin/tests/system/allow-query/tests.sh
|
--- a/bin/tests/system/allow-query/tests.sh
|
||||||
+++ b/bin/tests/system/allow-query/tests.sh
|
+++ b/bin/tests/system/allow-query/tests.sh
|
||||||
@@ -190,7 +190,7 @@ rndc_reload
|
@@ -182,7 +182,7 @@ rndc_reload ns2 10.53.0.2
|
||||||
|
|
||||||
echo_i "test $n: key allowed - query allowed"
|
echo_i "test $n: key allowed - query allowed"
|
||||||
ret=0
|
ret=0
|
||||||
@ -454,7 +443,7 @@ index 791a1a4..95cd971 100644
|
|||||||
grep 'status: NOERROR' dig.out.ns2.$n > /dev/null || ret=1
|
grep 'status: NOERROR' dig.out.ns2.$n > /dev/null || ret=1
|
||||||
grep '^a.normal.example' dig.out.ns2.$n > /dev/null || ret=1
|
grep '^a.normal.example' dig.out.ns2.$n > /dev/null || ret=1
|
||||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||||
@@ -203,7 +203,7 @@ rndc_reload
|
@@ -195,7 +195,7 @@ rndc_reload ns2 10.53.0.2
|
||||||
|
|
||||||
echo_i "test $n: key not allowed - query refused"
|
echo_i "test $n: key not allowed - query refused"
|
||||||
ret=0
|
ret=0
|
||||||
@ -463,7 +452,7 @@ index 791a1a4..95cd971 100644
|
|||||||
grep 'status: REFUSED' dig.out.ns2.$n > /dev/null || ret=1
|
grep 'status: REFUSED' dig.out.ns2.$n > /dev/null || ret=1
|
||||||
grep '^a.normal.example' dig.out.ns2.$n > /dev/null && ret=1
|
grep '^a.normal.example' dig.out.ns2.$n > /dev/null && ret=1
|
||||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||||
@@ -216,7 +216,7 @@ rndc_reload
|
@@ -208,7 +208,7 @@ rndc_reload ns2 10.53.0.2
|
||||||
|
|
||||||
echo_i "test $n: key disallowed - query refused"
|
echo_i "test $n: key disallowed - query refused"
|
||||||
ret=0
|
ret=0
|
||||||
@ -472,7 +461,7 @@ index 791a1a4..95cd971 100644
|
|||||||
grep 'status: REFUSED' dig.out.ns2.$n > /dev/null || ret=1
|
grep 'status: REFUSED' dig.out.ns2.$n > /dev/null || ret=1
|
||||||
grep '^a.normal.example' dig.out.ns2.$n > /dev/null && ret=1
|
grep '^a.normal.example' dig.out.ns2.$n > /dev/null && ret=1
|
||||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||||
@@ -349,7 +349,7 @@ rndc_reload
|
@@ -341,7 +341,7 @@ rndc_reload ns2 10.53.0.2
|
||||||
|
|
||||||
echo_i "test $n: views key allowed - query allowed"
|
echo_i "test $n: views key allowed - query allowed"
|
||||||
ret=0
|
ret=0
|
||||||
@ -481,7 +470,7 @@ index 791a1a4..95cd971 100644
|
|||||||
grep 'status: NOERROR' dig.out.ns2.$n > /dev/null || ret=1
|
grep 'status: NOERROR' dig.out.ns2.$n > /dev/null || ret=1
|
||||||
grep '^a.normal.example' dig.out.ns2.$n > /dev/null || ret=1
|
grep '^a.normal.example' dig.out.ns2.$n > /dev/null || ret=1
|
||||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||||
@@ -362,7 +362,7 @@ rndc_reload
|
@@ -354,7 +354,7 @@ rndc_reload ns2 10.53.0.2
|
||||||
|
|
||||||
echo_i "test $n: views key not allowed - query refused"
|
echo_i "test $n: views key not allowed - query refused"
|
||||||
ret=0
|
ret=0
|
||||||
@ -490,7 +479,7 @@ index 791a1a4..95cd971 100644
|
|||||||
grep 'status: REFUSED' dig.out.ns2.$n > /dev/null || ret=1
|
grep 'status: REFUSED' dig.out.ns2.$n > /dev/null || ret=1
|
||||||
grep '^a.normal.example' dig.out.ns2.$n > /dev/null && ret=1
|
grep '^a.normal.example' dig.out.ns2.$n > /dev/null && ret=1
|
||||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||||
@@ -375,7 +375,7 @@ rndc_reload
|
@@ -367,7 +367,7 @@ rndc_reload ns2 10.53.0.2
|
||||||
|
|
||||||
echo_i "test $n: views key disallowed - query refused"
|
echo_i "test $n: views key disallowed - query refused"
|
||||||
ret=0
|
ret=0
|
||||||
@ -499,7 +488,7 @@ index 791a1a4..95cd971 100644
|
|||||||
grep 'status: REFUSED' dig.out.ns2.$n > /dev/null || ret=1
|
grep 'status: REFUSED' dig.out.ns2.$n > /dev/null || ret=1
|
||||||
grep '^a.normal.example' dig.out.ns2.$n > /dev/null && ret=1
|
grep '^a.normal.example' dig.out.ns2.$n > /dev/null && ret=1
|
||||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||||
@@ -508,7 +508,7 @@ status=`expr $status + $ret`
|
@@ -500,7 +500,7 @@ status=`expr $status + $ret`
|
||||||
n=`expr $n + 1`
|
n=`expr $n + 1`
|
||||||
echo_i "test $n: zone key allowed - query allowed"
|
echo_i "test $n: zone key allowed - query allowed"
|
||||||
ret=0
|
ret=0
|
||||||
@ -508,7 +497,7 @@ index 791a1a4..95cd971 100644
|
|||||||
grep 'status: NOERROR' dig.out.ns2.$n > /dev/null || ret=1
|
grep 'status: NOERROR' dig.out.ns2.$n > /dev/null || ret=1
|
||||||
grep '^a.keyallow.example' dig.out.ns2.$n > /dev/null || ret=1
|
grep '^a.keyallow.example' dig.out.ns2.$n > /dev/null || ret=1
|
||||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||||
@@ -518,7 +518,7 @@ status=`expr $status + $ret`
|
@@ -510,7 +510,7 @@ status=`expr $status + $ret`
|
||||||
n=`expr $n + 1`
|
n=`expr $n + 1`
|
||||||
echo_i "test $n: zone key not allowed - query refused"
|
echo_i "test $n: zone key not allowed - query refused"
|
||||||
ret=0
|
ret=0
|
||||||
@ -517,7 +506,7 @@ index 791a1a4..95cd971 100644
|
|||||||
grep 'status: REFUSED' dig.out.ns2.$n > /dev/null || ret=1
|
grep 'status: REFUSED' dig.out.ns2.$n > /dev/null || ret=1
|
||||||
grep '^a.keyallow.example' dig.out.ns2.$n > /dev/null && ret=1
|
grep '^a.keyallow.example' dig.out.ns2.$n > /dev/null && ret=1
|
||||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||||
@@ -528,7 +528,7 @@ status=`expr $status + $ret`
|
@@ -520,7 +520,7 @@ status=`expr $status + $ret`
|
||||||
n=`expr $n + 1`
|
n=`expr $n + 1`
|
||||||
echo_i "test $n: zone key disallowed - query refused"
|
echo_i "test $n: zone key disallowed - query refused"
|
||||||
ret=0
|
ret=0
|
||||||
@ -527,7 +516,7 @@ index 791a1a4..95cd971 100644
|
|||||||
grep '^a.keydisallow.example' dig.out.ns2.$n > /dev/null && ret=1
|
grep '^a.keydisallow.example' dig.out.ns2.$n > /dev/null && ret=1
|
||||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||||
diff --git a/bin/tests/system/catz/ns1/named.conf.in b/bin/tests/system/catz/ns1/named.conf.in
|
diff --git a/bin/tests/system/catz/ns1/named.conf.in b/bin/tests/system/catz/ns1/named.conf.in
|
||||||
index 6856ec7..0ac1fa3 100644
|
index 1218669..e62715e 100644
|
||||||
--- a/bin/tests/system/catz/ns1/named.conf.in
|
--- a/bin/tests/system/catz/ns1/named.conf.in
|
||||||
+++ b/bin/tests/system/catz/ns1/named.conf.in
|
+++ b/bin/tests/system/catz/ns1/named.conf.in
|
||||||
@@ -61,5 +61,5 @@ zone "catalog4.example" {
|
@@ -61,5 +61,5 @@ zone "catalog4.example" {
|
||||||
@ -538,7 +527,7 @@ index 6856ec7..0ac1fa3 100644
|
|||||||
+ algorithm hmac-sha256;
|
+ algorithm hmac-sha256;
|
||||||
};
|
};
|
||||||
diff --git a/bin/tests/system/catz/ns2/named.conf.in b/bin/tests/system/catz/ns2/named.conf.in
|
diff --git a/bin/tests/system/catz/ns2/named.conf.in b/bin/tests/system/catz/ns2/named.conf.in
|
||||||
index dd3a9dc..77b8d96 100644
|
index 30333e6..4005152 100644
|
||||||
--- a/bin/tests/system/catz/ns2/named.conf.in
|
--- a/bin/tests/system/catz/ns2/named.conf.in
|
||||||
+++ b/bin/tests/system/catz/ns2/named.conf.in
|
+++ b/bin/tests/system/catz/ns2/named.conf.in
|
||||||
@@ -70,5 +70,5 @@ zone "catalog4.example" {
|
@@ -70,5 +70,5 @@ zone "catalog4.example" {
|
||||||
@ -549,7 +538,7 @@ index dd3a9dc..77b8d96 100644
|
|||||||
+ algorithm hmac-sha256;
|
+ algorithm hmac-sha256;
|
||||||
};
|
};
|
||||||
diff --git a/bin/tests/system/checkconf/bad-tsig.conf b/bin/tests/system/checkconf/bad-tsig.conf
|
diff --git a/bin/tests/system/checkconf/bad-tsig.conf b/bin/tests/system/checkconf/bad-tsig.conf
|
||||||
index 338dddb..90cd424 100644
|
index 21be03e..e57c308 100644
|
||||||
--- a/bin/tests/system/checkconf/bad-tsig.conf
|
--- a/bin/tests/system/checkconf/bad-tsig.conf
|
||||||
+++ b/bin/tests/system/checkconf/bad-tsig.conf
|
+++ b/bin/tests/system/checkconf/bad-tsig.conf
|
||||||
@@ -11,7 +11,7 @@
|
@@ -11,7 +11,7 @@
|
||||||
@ -562,10 +551,10 @@ index 338dddb..90cd424 100644
|
|||||||
};
|
};
|
||||||
|
|
||||||
diff --git a/bin/tests/system/checkconf/good.conf b/bin/tests/system/checkconf/good.conf
|
diff --git a/bin/tests/system/checkconf/good.conf b/bin/tests/system/checkconf/good.conf
|
||||||
index 2282f87..1359cf3 100644
|
index e09b9e8..2e824b3 100644
|
||||||
--- a/bin/tests/system/checkconf/good.conf
|
--- a/bin/tests/system/checkconf/good.conf
|
||||||
+++ b/bin/tests/system/checkconf/good.conf
|
+++ b/bin/tests/system/checkconf/good.conf
|
||||||
@@ -159,6 +159,6 @@ dyndb "name" "library.so" {
|
@@ -210,6 +210,6 @@ dyndb "name" "library.so" {
|
||||||
system;
|
system;
|
||||||
};
|
};
|
||||||
key "mykey" {
|
key "mykey" {
|
||||||
@ -573,473 +562,40 @@ index 2282f87..1359cf3 100644
|
|||||||
+ algorithm "hmac-sha256";
|
+ algorithm "hmac-sha256";
|
||||||
secret "qwertyuiopasdfgh";
|
secret "qwertyuiopasdfgh";
|
||||||
};
|
};
|
||||||
diff --git a/bin/tests/system/digdelv/ns2/example.db b/bin/tests/system/digdelv/ns2/example.db
|
|
||||||
index b66207a..359b220 100644
|
|
||||||
--- a/bin/tests/system/digdelv/ns2/example.db
|
|
||||||
+++ b/bin/tests/system/digdelv/ns2/example.db
|
|
||||||
@@ -38,12 +38,15 @@ foo SSHFP 2 1 123456789abcdef67890123456789abcdef67890
|
|
||||||
;;
|
|
||||||
;; we are not testing DNSSEC behavior, so we don't care about the semantics
|
|
||||||
;; of the following records.
|
|
||||||
-dnskey 300 DNSKEY 256 3 1 (
|
|
||||||
- AQPTpWyReB/e9Ii6mVGnakS8hX2zkh/iUYAg
|
|
||||||
- +Ge4noWROpTWOIBvm76zeJPWs4Zfqa1IsswD
|
|
||||||
- Ix5Mqeg0zwclz59uecKsKyx5w9IhtZ8plc4R
|
|
||||||
- b9VIE5x7KNHAYTvTO5d4S8M=
|
|
||||||
- )
|
|
||||||
+dnskey 300 DNSKEY 256 3 8 (
|
|
||||||
+ AwEAAaWmCoDpj2K59zcpqnmnQM7IC/XbjS6jIP7uTBR4X7p1bdQJzAeo
|
|
||||||
+ EnMhnpnxPp0j+20eZm4847DB2U+HuHy79Mvqd3aozTmfBJvzjKs9qyba
|
|
||||||
+ zY/ZHn6BDYxNJiFfjSS/VJ1KuQPDbpCzhm2hbvT5s9nSOaG0WyRk+d+R
|
|
||||||
+ qEca11E7ZKkmmNiGlyzMAgfmTTBwgxWBAAhvd9nU1GqD6eQ6Z63hpTc/
|
|
||||||
+ KDIHnFTo7pOcZ4z5urIKUMCMcFytedETlEoR5CIWGPdQq2eIEEMfn5ld
|
|
||||||
+ QqdEZRHVErD9og8aluJ2s767HZb8LzjCfYgBFoT9/n48T75oZLEKtSkG
|
|
||||||
+ /idCeeQlaLU=
|
|
||||||
+ )
|
|
||||||
|
|
||||||
; TTL of 3 weeks
|
|
||||||
weeks 1814400 A 10.53.0.2
|
|
||||||
diff --git a/bin/tests/system/digdelv/tests.sh b/bin/tests/system/digdelv/tests.sh
|
|
||||||
index a3ebc31..0d9b9b8 100644
|
|
||||||
--- a/bin/tests/system/digdelv/tests.sh
|
|
||||||
+++ b/bin/tests/system/digdelv/tests.sh
|
|
||||||
@@ -173,7 +173,7 @@ if [ -x "$DIG" ] ; then
|
|
||||||
echo_i "checking dig +rrcomments works for DNSKEY($n)"
|
|
||||||
ret=0
|
|
||||||
$DIG $DIGOPTS +tcp @10.53.0.3 +rrcomments DNSKEY dnskey.example > dig.out.test$n || ret=1
|
|
||||||
- grep "; ZSK; alg = RSAMD5 ; key id = 30795" < dig.out.test$n > /dev/null || ret=1
|
|
||||||
+ grep "; ZSK; alg = RSASHA256 ; key id = 36895$" < dig.out.test$n > /dev/null || ret=1
|
|
||||||
check_ttl_range dig.out.test$n "DNSKEY" 300 || ret=1
|
|
||||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
|
||||||
status=`expr $status + $ret`
|
|
||||||
@@ -182,7 +182,7 @@ if [ -x "$DIG" ] ; then
|
|
||||||
echo_i "checking dig +short +rrcomments works for DNSKEY ($n)"
|
|
||||||
ret=0
|
|
||||||
$DIG $DIGOPTS +tcp @10.53.0.3 +short +rrcomments DNSKEY dnskey.example > dig.out.test$n || ret=1
|
|
||||||
- grep "; ZSK; alg = RSAMD5 ; key id = 30795" < dig.out.test$n > /dev/null || ret=1
|
|
||||||
+ grep "; ZSK; alg = RSASHA256 ; key id = 36895$" < dig.out.test$n > /dev/null || ret=1
|
|
||||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
|
||||||
status=`expr $status + $ret`
|
|
||||||
|
|
||||||
@@ -190,7 +190,7 @@ if [ -x "$DIG" ] ; then
|
|
||||||
echo_i "checking dig +short +nosplit works($n)"
|
|
||||||
ret=0
|
|
||||||
$DIG $DIGOPTS +tcp @10.53.0.3 +short +nosplit DNSKEY dnskey.example > dig.out.test$n || ret=1
|
|
||||||
- grep "Z8plc4Rb9VIE5x7KNHAYTvTO5d4S8M=$" < dig.out.test$n > /dev/null || ret=1
|
|
||||||
+ grep "T9/n48T75oZLEKtSkG/idCeeQlaLU=$" < dig.out.test$n > /dev/null || ret=1
|
|
||||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
|
||||||
status=`expr $status + $ret`
|
|
||||||
|
|
||||||
@@ -198,7 +198,7 @@ if [ -x "$DIG" ] ; then
|
|
||||||
echo_i "checking dig +short +rrcomments works($n)"
|
|
||||||
ret=0
|
|
||||||
$DIG $DIGOPTS +tcp @10.53.0.3 +short +rrcomments DNSKEY dnskey.example > dig.out.test$n || ret=1
|
|
||||||
- grep "S8M= ; ZSK; alg = RSAMD5 ; key id = 30795$" < dig.out.test$n > /dev/null || ret=1
|
|
||||||
+ grep "aLU= ; ZSK; alg = RSASHA256 ; key id = 36895$" < dig.out.test$n > /dev/null || ret=1
|
|
||||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
|
||||||
status=`expr $status + $ret`
|
|
||||||
|
|
||||||
@@ -215,7 +215,7 @@ if [ -x "$DIG" ] ; then
|
|
||||||
echo_i "checking dig +short +rrcomments works($n)"
|
|
||||||
ret=0
|
|
||||||
$DIG $DIGOPTS +tcp @10.53.0.3 +short +rrcomments DNSKEY dnskey.example > dig.out.test$n || ret=1
|
|
||||||
- grep "S8M= ; ZSK; alg = RSAMD5 ; key id = 30795$" < dig.out.test$n > /dev/null || ret=1
|
|
||||||
+ grep "aLU= ; ZSK; alg = RSASHA256 ; key id = 36895$" < dig.out.test$n > /dev/null || ret=1
|
|
||||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
|
||||||
status=`expr $status + $ret`
|
|
||||||
|
|
||||||
@@ -846,7 +846,7 @@ if [ -x ${DELV} ] ; then
|
|
||||||
echo_i "checking delv +rrcomments works for DNSKEY($n)"
|
|
||||||
ret=0
|
|
||||||
$DELV $DELVOPTS +tcp @10.53.0.3 +rrcomments DNSKEY dnskey.example > delv.out.test$n || ret=1
|
|
||||||
- grep "; ZSK; alg = RSAMD5 ; key id = 30795" < delv.out.test$n > /dev/null || ret=1
|
|
||||||
+ grep "; ZSK; alg = RSASHA256 ; key id = 36895" < delv.out.test$n > /dev/null || ret=1
|
|
||||||
check_ttl_range delv.out.test$n "DNSKEY" 300 || ret=1
|
|
||||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
|
||||||
status=`expr $status + $ret`
|
|
||||||
@@ -855,7 +855,7 @@ if [ -x ${DELV} ] ; then
|
|
||||||
echo_i "checking delv +short +rrcomments works for DNSKEY ($n)"
|
|
||||||
ret=0
|
|
||||||
$DELV $DELVOPTS +tcp @10.53.0.3 +short +rrcomments DNSKEY dnskey.example > delv.out.test$n || ret=1
|
|
||||||
- grep "; ZSK; alg = RSAMD5 ; key id = 30795" < delv.out.test$n > /dev/null || ret=1
|
|
||||||
+ grep "; ZSK; alg = RSASHA256 ; key id = 36895" < delv.out.test$n > /dev/null || ret=1
|
|
||||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
|
||||||
status=`expr $status + $ret`
|
|
||||||
|
|
||||||
@@ -863,7 +863,7 @@ if [ -x ${DELV} ] ; then
|
|
||||||
echo_i "checking delv +short +rrcomments works ($n)"
|
|
||||||
ret=0
|
|
||||||
$DELV $DELVOPTS +tcp @10.53.0.3 +short +rrcomments DNSKEY dnskey.example > delv.out.test$n || ret=1
|
|
||||||
- grep "S8M= ; ZSK; alg = RSAMD5 ; key id = 30795$" < delv.out.test$n > /dev/null || ret=1
|
|
||||||
+ grep "aLU= ; ZSK; alg = RSASHA256 ; key id = 36895$" < delv.out.test$n > /dev/null || ret=1
|
|
||||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
|
||||||
status=`expr $status + $ret`
|
|
||||||
|
|
||||||
@@ -871,7 +871,7 @@ if [ -x ${DELV} ] ; then
|
|
||||||
echo_i "checking delv +short +nosplit works ($n)"
|
|
||||||
ret=0
|
|
||||||
$DELV $DELVOPTS +tcp @10.53.0.3 +short +nosplit DNSKEY dnskey.example > delv.out.test$n || ret=1
|
|
||||||
- grep "Z8plc4Rb9VIE5x7KNHAYTvTO5d4S8M=" < delv.out.test$n > /dev/null || ret=1
|
|
||||||
+ grep "T9/n48T75oZLEKtSkG/idCeeQlaLU=" < delv.out.test$n > /dev/null || ret=1
|
|
||||||
if test `wc -l < delv.out.test$n` != 1 ; then ret=1 ; fi
|
|
||||||
f=`awk '{print NF}' < delv.out.test$n`
|
|
||||||
test "${f:-0}" -eq 14 || ret=1
|
|
||||||
@@ -882,7 +882,7 @@ if [ -x ${DELV} ] ; then
|
|
||||||
echo_i "checking delv +short +nosplit +norrcomments works ($n)"
|
|
||||||
ret=0
|
|
||||||
$DELV $DELVOPTS +tcp @10.53.0.3 +short +nosplit +norrcomments DNSKEY dnskey.example > delv.out.test$n || ret=1
|
|
||||||
- grep "Z8plc4Rb9VIE5x7KNHAYTvTO5d4S8M=$" < delv.out.test$n > /dev/null || ret=1
|
|
||||||
+ grep "T9/n48T75oZLEKtSkG/idCeeQlaLU=$" < delv.out.test$n > /dev/null || ret=1
|
|
||||||
if test `wc -l < delv.out.test$n` != 1 ; then ret=1 ; fi
|
|
||||||
f=`awk '{print NF}' < delv.out.test$n`
|
|
||||||
test "${f:-0}" -eq 4 || ret=1
|
|
||||||
diff --git a/bin/tests/system/dlv/ns1/sign.sh b/bin/tests/system/dlv/ns1/sign.sh
|
|
||||||
index 14ca5db..3f522d0 100755
|
|
||||||
--- a/bin/tests/system/dlv/ns1/sign.sh
|
|
||||||
+++ b/bin/tests/system/dlv/ns1/sign.sh
|
|
||||||
@@ -23,8 +23,8 @@ infile=root.db.in
|
|
||||||
zonefile=root.db
|
|
||||||
outfile=root.signed
|
|
||||||
|
|
||||||
-keyname1=`$KEYGEN -r $RANDFILE -a DSA -b 768 -n zone $zone 2> /dev/null`
|
|
||||||
-keyname2=`$KEYGEN -f KSK -r $RANDFILE -a DSA -b 768 -n zone $zone 2> /dev/null`
|
|
||||||
+keyname1=`$KEYGEN -r $RANDFILE -a DSA -b 1024 -n zone $zone 2> /dev/null`
|
|
||||||
+keyname2=`$KEYGEN -f KSK -r $RANDFILE -a DSA -b 1024 -n zone $zone 2> /dev/null`
|
|
||||||
|
|
||||||
cat $infile $keyname1.key $keyname2.key >$zonefile
|
|
||||||
|
|
||||||
diff --git a/bin/tests/system/dlv/ns2/sign.sh b/bin/tests/system/dlv/ns2/sign.sh
|
|
||||||
index d870798..b0ab372 100755
|
|
||||||
--- a/bin/tests/system/dlv/ns2/sign.sh
|
|
||||||
+++ b/bin/tests/system/dlv/ns2/sign.sh
|
|
||||||
@@ -24,8 +24,8 @@ zonefile=druz.db
|
|
||||||
outfile=druz.pre
|
|
||||||
dlvzone=utld.
|
|
||||||
|
|
||||||
-keyname1=`$KEYGEN -r $RANDFILE -a DSA -b 768 -n zone $zone 2> /dev/null`
|
|
||||||
-keyname2=`$KEYGEN -f KSK -r $RANDFILE -a DSA -b 768 -n zone $zone 2> /dev/null`
|
|
||||||
+keyname1=`$KEYGEN -r $RANDFILE -a DSA -b 1024 -n zone $zone 2> /dev/null`
|
|
||||||
+keyname2=`$KEYGEN -f KSK -r $RANDFILE -a DSA -b 1024 -n zone $zone 2> /dev/null`
|
|
||||||
|
|
||||||
cat $infile $keyname1.key $keyname2.key >$zonefile
|
|
||||||
|
|
||||||
diff --git a/bin/tests/system/dlv/ns6/sign.sh b/bin/tests/system/dlv/ns6/sign.sh
|
|
||||||
index ba39f90..f20a2dd 100755
|
|
||||||
--- a/bin/tests/system/dlv/ns6/sign.sh
|
|
||||||
+++ b/bin/tests/system/dlv/ns6/sign.sh
|
|
||||||
@@ -16,13 +16,15 @@ SYSTESTDIR=dlv
|
|
||||||
|
|
||||||
echo_i "dlv/ns6/sign.sh"
|
|
||||||
|
|
||||||
+bits=1024
|
|
||||||
+
|
|
||||||
zone=grand.child1.utld.
|
|
||||||
infile=child.db.in
|
|
||||||
zonefile=grand.child1.utld.db
|
|
||||||
outfile=grand.child1.signed
|
|
||||||
|
|
||||||
-keyname1=`$KEYGEN -r $RANDFILE -a DSA -b 768 -n zone $zone 2> /dev/null`
|
|
||||||
-keyname2=`$KEYGEN -f KSK -r $RANDFILE -a DSA -b 768 -n zone $zone 2> /dev/null`
|
|
||||||
+keyname1=`$KEYGEN -r $RANDFILE -a DSA -b $bits -n zone $zone 2> /dev/null`
|
|
||||||
+keyname2=`$KEYGEN -f KSK -r $RANDFILE -a DSA -b $bits -n zone $zone 2> /dev/null`
|
|
||||||
|
|
||||||
cat $infile $keyname1.key $keyname2.key >$zonefile
|
|
||||||
|
|
||||||
@@ -36,8 +38,8 @@ zonefile=grand.child3.utld.db
|
|
||||||
outfile=grand.child3.signed
|
|
||||||
dlvzone=dlv.utld.
|
|
||||||
|
|
||||||
-keyname1=`$KEYGEN -r $RANDFILE -a DSA -b 768 -n zone $zone 2> /dev/null`
|
|
||||||
-keyname2=`$KEYGEN -f KSK -r $RANDFILE -a DSA -b 768 -n zone $zone 2> /dev/null`
|
|
||||||
+keyname1=`$KEYGEN -r $RANDFILE -a DSA -b $bits -n zone $zone 2> /dev/null`
|
|
||||||
+keyname2=`$KEYGEN -f KSK -r $RANDFILE -a DSA -b $bits -n zone $zone 2> /dev/null`
|
|
||||||
|
|
||||||
cat $infile $keyname1.key $keyname2.key >$zonefile
|
|
||||||
|
|
||||||
@@ -51,8 +53,8 @@ zonefile=grand.child4.utld.db
|
|
||||||
outfile=grand.child4.signed
|
|
||||||
dlvzone=dlv.utld.
|
|
||||||
|
|
||||||
-keyname1=`$KEYGEN -r $RANDFILE -a DSA -b 768 -n zone $zone 2> /dev/null`
|
|
||||||
-keyname2=`$KEYGEN -f KSK -r $RANDFILE -a DSA -b 768 -n zone $zone 2> /dev/null`
|
|
||||||
+keyname1=`$KEYGEN -r $RANDFILE -a DSA -b $bits -n zone $zone 2> /dev/null`
|
|
||||||
+keyname2=`$KEYGEN -f KSK -r $RANDFILE -a DSA -b $bits -n zone $zone 2> /dev/null`
|
|
||||||
|
|
||||||
cat $infile $keyname1.key $keyname2.key >$zonefile
|
|
||||||
|
|
||||||
@@ -66,8 +68,8 @@ zonefile=grand.child5.utld.db
|
|
||||||
outfile=grand.child5.signed
|
|
||||||
dlvzone=dlv.utld.
|
|
||||||
|
|
||||||
-keyname1=`$KEYGEN -r $RANDFILE -a DSA -b 768 -n zone $zone 2> /dev/null`
|
|
||||||
-keyname2=`$KEYGEN -f KSK -r $RANDFILE -a DSA -b 768 -n zone $zone 2> /dev/null`
|
|
||||||
+keyname1=`$KEYGEN -r $RANDFILE -a DSA -b $bits -n zone $zone 2> /dev/null`
|
|
||||||
+keyname2=`$KEYGEN -f KSK -r $RANDFILE -a DSA -b $bits -n zone $zone 2> /dev/null`
|
|
||||||
|
|
||||||
cat $infile $keyname1.key $keyname2.key >$zonefile
|
|
||||||
|
|
||||||
@@ -81,8 +83,8 @@ zonefile=grand.child7.utld.db
|
|
||||||
outfile=grand.child7.signed
|
|
||||||
dlvzone=dlv.utld.
|
|
||||||
|
|
||||||
-keyname1=`$KEYGEN -r $RANDFILE -a DSA -b 768 -n zone $zone 2> /dev/null`
|
|
||||||
-keyname2=`$KEYGEN -f KSK -r $RANDFILE -a DSA -b 768 -n zone $zone 2> /dev/null`
|
|
||||||
+keyname1=`$KEYGEN -r $RANDFILE -a DSA -b $bits -n zone $zone 2> /dev/null`
|
|
||||||
+keyname2=`$KEYGEN -f KSK -r $RANDFILE -a DSA -b $bits -n zone $zone 2> /dev/null`
|
|
||||||
|
|
||||||
cat $infile $keyname1.key $keyname2.key >$zonefile
|
|
||||||
|
|
||||||
@@ -96,8 +98,8 @@ zonefile=grand.child8.utld.db
|
|
||||||
outfile=grand.child8.signed
|
|
||||||
dlvzone=dlv.utld.
|
|
||||||
|
|
||||||
-keyname1=`$KEYGEN -r $RANDFILE -a DSA -b 768 -n zone $zone 2> /dev/null`
|
|
||||||
-keyname2=`$KEYGEN -f KSK -r $RANDFILE -a DSA -b 768 -n zone $zone 2> /dev/null`
|
|
||||||
+keyname1=`$KEYGEN -r $RANDFILE -a DSA -b $bits -n zone $zone 2> /dev/null`
|
|
||||||
+keyname2=`$KEYGEN -f KSK -r $RANDFILE -a DSA -b $bits -n zone $zone 2> /dev/null`
|
|
||||||
|
|
||||||
cat $infile $keyname1.key $keyname2.key >$zonefile
|
|
||||||
|
|
||||||
@@ -111,8 +113,8 @@ zonefile=grand.child9.utld.db
|
|
||||||
outfile=grand.child9.signed
|
|
||||||
dlvzone=dlv.utld.
|
|
||||||
|
|
||||||
-keyname1=`$KEYGEN -r $RANDFILE -a DSA -b 768 -n zone $zone 2> /dev/null`
|
|
||||||
-keyname2=`$KEYGEN -f KSK -r $RANDFILE -a DSA -b 768 -n zone $zone 2> /dev/null`
|
|
||||||
+keyname1=`$KEYGEN -r $RANDFILE -a DSA -b $bits -n zone $zone 2> /dev/null`
|
|
||||||
+keyname2=`$KEYGEN -f KSK -r $RANDFILE -a DSA -b $bits -n zone $zone 2> /dev/null`
|
|
||||||
|
|
||||||
cat $infile $keyname1.key $keyname2.key >$zonefile
|
|
||||||
|
|
||||||
@@ -125,8 +127,8 @@ zonefile=grand.child10.utld.db
|
|
||||||
outfile=grand.child10.signed
|
|
||||||
dlvzone=dlv.utld.
|
|
||||||
|
|
||||||
-keyname1=`$KEYGEN -r $RANDFILE -a DSA -b 768 -n zone $zone 2> /dev/null`
|
|
||||||
-keyname2=`$KEYGEN -f KSK -r $RANDFILE -a DSA -b 768 -n zone $zone 2> /dev/null`
|
|
||||||
+keyname1=`$KEYGEN -r $RANDFILE -a DSA -b $bits -n zone $zone 2> /dev/null`
|
|
||||||
+keyname2=`$KEYGEN -f KSK -r $RANDFILE -a DSA -b $bits -n zone $zone 2> /dev/null`
|
|
||||||
|
|
||||||
cat $infile $keyname1.key $keyname2.key >$zonefile
|
|
||||||
|
|
||||||
@@ -138,8 +140,8 @@ infile=child.db.in
|
|
||||||
zonefile=grand.child1.druz.db
|
|
||||||
outfile=grand.child1.druz.signed
|
|
||||||
|
|
||||||
-keyname1=`$KEYGEN -r $RANDFILE -a DSA -b 768 -n zone $zone 2> /dev/null`
|
|
||||||
-keyname2=`$KEYGEN -f KSK -r $RANDFILE -a DSA -b 768 -n zone $zone 2> /dev/null`
|
|
||||||
+keyname1=`$KEYGEN -r $RANDFILE -a DSA -b $bits -n zone $zone 2> /dev/null`
|
|
||||||
+keyname2=`$KEYGEN -f KSK -r $RANDFILE -a DSA -b $bits -n zone $zone 2> /dev/null`
|
|
||||||
|
|
||||||
cat $infile $keyname1.key $keyname2.key >$zonefile
|
|
||||||
|
|
||||||
@@ -153,8 +155,8 @@ zonefile=grand.child3.druz.db
|
|
||||||
outfile=grand.child3.druz.signed
|
|
||||||
dlvzone=dlv.druz.
|
|
||||||
|
|
||||||
-keyname1=`$KEYGEN -r $RANDFILE -a DSA -b 768 -n zone $zone 2> /dev/null`
|
|
||||||
-keyname2=`$KEYGEN -f KSK -r $RANDFILE -a DSA -b 768 -n zone $zone 2> /dev/null`
|
|
||||||
+keyname1=`$KEYGEN -r $RANDFILE -a DSA -b $bits -n zone $zone 2> /dev/null`
|
|
||||||
+keyname2=`$KEYGEN -f KSK -r $RANDFILE -a DSA -b $bits -n zone $zone 2> /dev/null`
|
|
||||||
|
|
||||||
cat $infile $keyname1.key $keyname2.key >$zonefile
|
|
||||||
|
|
||||||
@@ -168,8 +170,8 @@ zonefile=grand.child4.druz.db
|
|
||||||
outfile=grand.child4.druz.signed
|
|
||||||
dlvzone=dlv.druz.
|
|
||||||
|
|
||||||
-keyname1=`$KEYGEN -r $RANDFILE -a DSA -b 768 -n zone $zone 2> /dev/null`
|
|
||||||
-keyname2=`$KEYGEN -f KSK -r $RANDFILE -a DSA -b 768 -n zone $zone 2> /dev/null`
|
|
||||||
+keyname1=`$KEYGEN -r $RANDFILE -a DSA -b $bits -n zone $zone 2> /dev/null`
|
|
||||||
+keyname2=`$KEYGEN -f KSK -r $RANDFILE -a DSA -b $bits -n zone $zone 2> /dev/null`
|
|
||||||
|
|
||||||
cat $infile $keyname1.key $keyname2.key >$zonefile
|
|
||||||
|
|
||||||
@@ -183,8 +185,8 @@ zonefile=grand.child5.druz.db
|
|
||||||
outfile=grand.child5.druz.signed
|
|
||||||
dlvzone=dlv.druz.
|
|
||||||
|
|
||||||
-keyname1=`$KEYGEN -r $RANDFILE -a DSA -b 768 -n zone $zone 2> /dev/null`
|
|
||||||
-keyname2=`$KEYGEN -f KSK -r $RANDFILE -a DSA -b 768 -n zone $zone 2> /dev/null`
|
|
||||||
+keyname1=`$KEYGEN -r $RANDFILE -a DSA -b $bits -n zone $zone 2> /dev/null`
|
|
||||||
+keyname2=`$KEYGEN -f KSK -r $RANDFILE -a DSA -b $bits -n zone $zone 2> /dev/null`
|
|
||||||
|
|
||||||
cat $infile $keyname1.key $keyname2.key >$zonefile
|
|
||||||
|
|
||||||
@@ -198,8 +200,8 @@ zonefile=grand.child7.druz.db
|
|
||||||
outfile=grand.child7.druz.signed
|
|
||||||
dlvzone=dlv.druz.
|
|
||||||
|
|
||||||
-keyname1=`$KEYGEN -r $RANDFILE -a DSA -b 768 -n zone $zone 2> /dev/null`
|
|
||||||
-keyname2=`$KEYGEN -f KSK -r $RANDFILE -a DSA -b 768 -n zone $zone 2> /dev/null`
|
|
||||||
+keyname1=`$KEYGEN -r $RANDFILE -a DSA -b $bits -n zone $zone 2> /dev/null`
|
|
||||||
+keyname2=`$KEYGEN -f KSK -r $RANDFILE -a DSA -b $bits -n zone $zone 2> /dev/null`
|
|
||||||
|
|
||||||
cat $infile $keyname1.key $keyname2.key >$zonefile
|
|
||||||
|
|
||||||
@@ -213,8 +215,8 @@ zonefile=grand.child8.druz.db
|
|
||||||
outfile=grand.child8.druz.signed
|
|
||||||
dlvzone=dlv.druz.
|
|
||||||
|
|
||||||
-keyname1=`$KEYGEN -r $RANDFILE -a DSA -b 768 -n zone $zone 2> /dev/null`
|
|
||||||
-keyname2=`$KEYGEN -f KSK -r $RANDFILE -a DSA -b 768 -n zone $zone 2> /dev/null`
|
|
||||||
+keyname1=`$KEYGEN -r $RANDFILE -a DSA -b $bits -n zone $zone 2> /dev/null`
|
|
||||||
+keyname2=`$KEYGEN -f KSK -r $RANDFILE -a DSA -b $bits -n zone $zone 2> /dev/null`
|
|
||||||
|
|
||||||
cat $infile $keyname1.key $keyname2.key >$zonefile
|
|
||||||
|
|
||||||
@@ -228,8 +230,8 @@ zonefile=grand.child9.druz.db
|
|
||||||
outfile=grand.child9.druz.signed
|
|
||||||
dlvzone=dlv.druz.
|
|
||||||
|
|
||||||
-keyname1=`$KEYGEN -r $RANDFILE -a DSA -b 768 -n zone $zone 2> /dev/null`
|
|
||||||
-keyname2=`$KEYGEN -f KSK -r $RANDFILE -a DSA -b 768 -n zone $zone 2> /dev/null`
|
|
||||||
+keyname1=`$KEYGEN -r $RANDFILE -a DSA -b $bits -n zone $zone 2> /dev/null`
|
|
||||||
+keyname2=`$KEYGEN -f KSK -r $RANDFILE -a DSA -b $bits -n zone $zone 2> /dev/null`
|
|
||||||
|
|
||||||
cat $infile $keyname1.key $keyname2.key >$zonefile
|
|
||||||
|
|
||||||
@@ -242,8 +244,8 @@ zonefile=grand.child10.druz.db
|
|
||||||
outfile=grand.child10.druz.signed
|
|
||||||
dlvzone=dlv.druz.
|
|
||||||
|
|
||||||
-keyname1=`$KEYGEN -r $RANDFILE -a DSA -b 768 -n zone $zone 2> /dev/null`
|
|
||||||
-keyname2=`$KEYGEN -f KSK -r $RANDFILE -a DSA -b 768 -n zone $zone 2> /dev/null`
|
|
||||||
+keyname1=`$KEYGEN -r $RANDFILE -a DSA -b $bits -n zone $zone 2> /dev/null`
|
|
||||||
+keyname2=`$KEYGEN -f KSK -r $RANDFILE -a DSA -b $bits -n zone $zone 2> /dev/null`
|
|
||||||
|
|
||||||
cat $infile $keyname1.key $keyname2.key >$zonefile
|
|
||||||
|
|
||||||
diff --git a/bin/tests/system/dnssec/ns2/sign.sh b/bin/tests/system/dnssec/ns2/sign.sh
|
|
||||||
index d401823..139c7ad 100644
|
|
||||||
--- a/bin/tests/system/dnssec/ns2/sign.sh
|
|
||||||
+++ b/bin/tests/system/dnssec/ns2/sign.sh
|
|
||||||
@@ -126,8 +126,8 @@ zone=in-addr.arpa.
|
|
||||||
infile=in-addr.arpa.db.in
|
|
||||||
zonefile=in-addr.arpa.db
|
|
||||||
|
|
||||||
-keyname1=`$KEYGEN -q -r $RANDFILE -a DSA -b 768 -n zone $zone`
|
|
||||||
-keyname2=`$KEYGEN -q -r $RANDFILE -a DSA -b 768 -n zone $zone`
|
|
||||||
+keyname1=`$KEYGEN -q -r $RANDFILE -a DSA -b 1024 -n zone $zone`
|
|
||||||
+keyname2=`$KEYGEN -q -r $RANDFILE -a DSA -b 1024 -n zone $zone`
|
|
||||||
|
|
||||||
cat $infile $keyname1.key $keyname2.key >$zonefile
|
|
||||||
$SIGNER -P -g -r $RANDFILE -o $zone -k $keyname1 $zonefile $keyname2 > /dev/null
|
|
||||||
@@ -138,7 +138,7 @@ privzone=private.secure.example
|
|
||||||
privinfile=private.secure.example.db.in
|
|
||||||
privzonefile=private.secure.example.db
|
|
||||||
|
|
||||||
-privkeyname=`$KEYGEN -q -r $RANDFILE -a RSAMD5 -b 768 -n zone $privzone`
|
|
||||||
+privkeyname=`$KEYGEN -q -r $RANDFILE -a RSASHA256 -b 1024 -n zone $privzone`
|
|
||||||
|
|
||||||
cat $privinfile $privkeyname.key >$privzonefile
|
|
||||||
|
|
||||||
@@ -152,7 +152,7 @@ dlvinfile=dlv.db.in
|
|
||||||
dlvzonefile=dlv.db
|
|
||||||
dlvsetfile=dlvset-${privzone}${TP}
|
|
||||||
|
|
||||||
-dlvkeyname=`$KEYGEN -q -r $RANDFILE -a RSAMD5 -b 768 -n zone $dlvzone`
|
|
||||||
+dlvkeyname=`$KEYGEN -q -r $RANDFILE -a RSASHA256 -b 1024 -n zone $dlvzone`
|
|
||||||
|
|
||||||
cat $dlvinfile $dlvkeyname.key $dlvsetfile > $dlvzonefile
|
|
||||||
|
|
||||||
diff --git a/bin/tests/system/dnssec/ns5/trusted.conf.bad b/bin/tests/system/dnssec/ns5/trusted.conf.bad
|
|
||||||
index 75cf699..b4d848c 100644
|
|
||||||
--- a/bin/tests/system/dnssec/ns5/trusted.conf.bad
|
|
||||||
+++ b/bin/tests/system/dnssec/ns5/trusted.conf.bad
|
|
||||||
@@ -10,5 +10,5 @@
|
|
||||||
*/
|
|
||||||
|
|
||||||
trusted-keys {
|
|
||||||
- "." 256 3 1 "AQO6Cl+slAf+iuieDim9L3kujFHQD7s/IOj03ClMOpKYcTXtK4mRpuULVfvWxDi9Ew/gj0xLnnX7z9OJHIxLI+DSrAHd8Dm0XfBEAtVtJSn70GaPZgnLMw1rk5ap2DsEoWk=";
|
|
||||||
+ "." 256 3 8 "AwEAAarwAdjV4gIhpBCjXVAScRFEx3co7k8smJdxrnqoGsl5NB7EZ9jRdgvCXbJn6v8y9jlNWVHvaC8ilhfhLh0A1vLWiWv4ijd/12xcnrY7xpG7Cu3YkxUxaXJ7Jdg/Iw1+9mGgXF1v4UbCIcw/3U3cxyk7OxYg+VSb5KBAQSR0upxV";
|
|
||||||
};
|
|
||||||
diff --git a/bin/tests/system/dnssec/tests.sh b/bin/tests/system/dnssec/tests.sh
|
|
||||||
index 30f7fc5..2f34b6d 100644
|
|
||||||
--- a/bin/tests/system/dnssec/tests.sh
|
|
||||||
+++ b/bin/tests/system/dnssec/tests.sh
|
|
||||||
@@ -3281,8 +3281,8 @@ do
|
|
||||||
alg=`expr $alg + 1`
|
|
||||||
continue;;
|
|
||||||
3) size="-b 512";;
|
|
||||||
- 5) size="-b 512";;
|
|
||||||
- 6) size="-b 512";;
|
|
||||||
+ 5) size="-b 1024";;
|
|
||||||
+ 6) size="-b 1024";;
|
|
||||||
7) size="-b 512";;
|
|
||||||
8) size="-b 512";;
|
|
||||||
10) size="-b 1024";;
|
|
||||||
diff --git a/bin/tests/system/feature-test.c b/bin/tests/system/feature-test.c
|
diff --git a/bin/tests/system/feature-test.c b/bin/tests/system/feature-test.c
|
||||||
index 5e473ab..b08692e 100644
|
index 877504f..577660a 100644
|
||||||
--- a/bin/tests/system/feature-test.c
|
--- a/bin/tests/system/feature-test.c
|
||||||
+++ b/bin/tests/system/feature-test.c
|
+++ b/bin/tests/system/feature-test.c
|
||||||
@@ -19,6 +19,7 @@
|
@@ -14,6 +14,7 @@
|
||||||
|
#include <string.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
+#include <isc/md.h>
|
||||||
|
#include <isc/net.h>
|
||||||
#include <isc/print.h>
|
#include <isc/print.h>
|
||||||
#include <isc/util.h>
|
#include <isc/util.h>
|
||||||
#include <isc/net.h>
|
@@ -186,6 +187,19 @@ main(int argc, char **argv) {
|
||||||
+#include <isc/md5.h>
|
#endif /* ifdef DLZ_FILESYSTEM */
|
||||||
#include <dns/edns.h>
|
|
||||||
|
|
||||||
#ifdef WIN32
|
|
||||||
@@ -47,6 +48,7 @@ usage() {
|
|
||||||
fprintf(stderr, "\t--have-geoip\n");
|
|
||||||
fprintf(stderr, "\t--have-libxml2\n");
|
|
||||||
fprintf(stderr, "\t--ipv6only=no\n");
|
|
||||||
+ fprintf(stderr, "\t--md5\n");
|
|
||||||
fprintf(stderr, "\t--rpz-log-qtype-qclass\n");
|
|
||||||
fprintf(stderr, "\t--rpz-nsdname\n");
|
|
||||||
fprintf(stderr, "\t--rpz-nsip\n");
|
|
||||||
@@ -194,6 +196,18 @@ main(int argc, char **argv) {
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
+ if (strcmp(argv[1], "--md5") == 0) {
|
+ if (strcmp(argv[1], "--md5") == 0) {
|
||||||
+#ifdef PK11_MD5_DISABLE
|
+ unsigned char digest[ISC_MAX_MD_SIZE];
|
||||||
+ return (1);
|
+ const unsigned char test[] = "test";
|
||||||
+#else
|
+ unsigned int size = sizeof(digest);
|
||||||
+ if (isc_md5_available()) {
|
+
|
||||||
|
+ if (isc_md(ISC_MD_MD5, test, sizeof(test),
|
||||||
|
+ digest, &size) == ISC_R_SUCCESS) {
|
||||||
+ return (0);
|
+ return (0);
|
||||||
+ } else {
|
+ } else {
|
||||||
+ return (1);
|
+ return (1);
|
||||||
+ }
|
+ }
|
||||||
+#endif
|
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
if (strcmp(argv[1], "--rpz-nsip") == 0) {
|
if (strcmp(argv[1], "--with-idn") == 0) {
|
||||||
#ifdef ENABLE_RPZ_NSIP
|
#ifdef HAVE_LIBIDN2
|
||||||
return (0);
|
return (0);
|
||||||
diff --git a/bin/tests/system/filter-aaaa/ns1/sign.sh b/bin/tests/system/filter-aaaa/ns1/sign.sh
|
|
||||||
index 479f98c..4d4a765 100755
|
|
||||||
--- a/bin/tests/system/filter-aaaa/ns1/sign.sh
|
|
||||||
+++ b/bin/tests/system/filter-aaaa/ns1/sign.sh
|
|
||||||
@@ -21,8 +21,8 @@ infile=signed.db.in
|
|
||||||
zonefile=signed.db.signed
|
|
||||||
outfile=signed.db.signed
|
|
||||||
|
|
||||||
-keyname1=`$KEYGEN -r $RANDFILE -a DSA -b 768 -n zone $zone 2> /dev/null`
|
|
||||||
-keyname2=`$KEYGEN -f KSK -r $RANDFILE -a DSA -b 768 -n zone $zone 2> /dev/null`
|
|
||||||
+keyname1=`$KEYGEN -r $RANDFILE -a DSA -b 1024 -n zone $zone 2> /dev/null`
|
|
||||||
+keyname2=`$KEYGEN -f KSK -r $RANDFILE -a DSA -b 1024 -n zone $zone 2> /dev/null`
|
|
||||||
|
|
||||||
cat $infile $keyname1.key $keyname2.key >$zonefile
|
|
||||||
|
|
||||||
diff --git a/bin/tests/system/filter-aaaa/ns4/sign.sh b/bin/tests/system/filter-aaaa/ns4/sign.sh
|
|
||||||
index 479f98c..4d4a765 100755
|
|
||||||
--- a/bin/tests/system/filter-aaaa/ns4/sign.sh
|
|
||||||
+++ b/bin/tests/system/filter-aaaa/ns4/sign.sh
|
|
||||||
@@ -21,8 +21,8 @@ infile=signed.db.in
|
|
||||||
zonefile=signed.db.signed
|
|
||||||
outfile=signed.db.signed
|
|
||||||
|
|
||||||
-keyname1=`$KEYGEN -r $RANDFILE -a DSA -b 768 -n zone $zone 2> /dev/null`
|
|
||||||
-keyname2=`$KEYGEN -f KSK -r $RANDFILE -a DSA -b 768 -n zone $zone 2> /dev/null`
|
|
||||||
+keyname1=`$KEYGEN -r $RANDFILE -a DSA -b 1024 -n zone $zone 2> /dev/null`
|
|
||||||
+keyname2=`$KEYGEN -f KSK -r $RANDFILE -a DSA -b 1024 -n zone $zone 2> /dev/null`
|
|
||||||
|
|
||||||
cat $infile $keyname1.key $keyname2.key >$zonefile
|
|
||||||
|
|
||||||
diff --git a/bin/tests/system/notify/ns5/named.conf.in b/bin/tests/system/notify/ns5/named.conf.in
|
diff --git a/bin/tests/system/notify/ns5/named.conf.in b/bin/tests/system/notify/ns5/named.conf.in
|
||||||
index 157ef16..b802288 100644
|
index 1ee8df4..2b75d9a 100644
|
||||||
--- a/bin/tests/system/notify/ns5/named.conf.in
|
--- a/bin/tests/system/notify/ns5/named.conf.in
|
||||||
+++ b/bin/tests/system/notify/ns5/named.conf.in
|
+++ b/bin/tests/system/notify/ns5/named.conf.in
|
||||||
@@ -10,17 +10,17 @@
|
@@ -10,17 +10,17 @@
|
||||||
@ -1064,7 +620,7 @@ index 157ef16..b802288 100644
|
|||||||
};
|
};
|
||||||
|
|
||||||
diff --git a/bin/tests/system/notify/tests.sh b/bin/tests/system/notify/tests.sh
|
diff --git a/bin/tests/system/notify/tests.sh b/bin/tests/system/notify/tests.sh
|
||||||
index f9fd3f5..916af75 100644
|
index 3d7e0b7..ec4d9a7 100644
|
||||||
--- a/bin/tests/system/notify/tests.sh
|
--- a/bin/tests/system/notify/tests.sh
|
||||||
+++ b/bin/tests/system/notify/tests.sh
|
+++ b/bin/tests/system/notify/tests.sh
|
||||||
@@ -212,16 +212,16 @@ ret=0
|
@@ -212,16 +212,16 @@ ret=0
|
||||||
@ -1088,10 +644,10 @@ index f9fd3f5..916af75 100644
|
|||||||
grep "test string" dig.out.b.ns5.test$n > /dev/null &&
|
grep "test string" dig.out.b.ns5.test$n > /dev/null &&
|
||||||
grep "test string" dig.out.c.ns5.test$n > /dev/null &&
|
grep "test string" dig.out.c.ns5.test$n > /dev/null &&
|
||||||
diff --git a/bin/tests/system/nsupdate/ns1/named.conf.in b/bin/tests/system/nsupdate/ns1/named.conf.in
|
diff --git a/bin/tests/system/nsupdate/ns1/named.conf.in b/bin/tests/system/nsupdate/ns1/named.conf.in
|
||||||
index b0ded3a..cb80269 100644
|
index b51e700..436c97d 100644
|
||||||
--- a/bin/tests/system/nsupdate/ns1/named.conf.in
|
--- a/bin/tests/system/nsupdate/ns1/named.conf.in
|
||||||
+++ b/bin/tests/system/nsupdate/ns1/named.conf.in
|
+++ b/bin/tests/system/nsupdate/ns1/named.conf.in
|
||||||
@@ -32,7 +32,7 @@ controls {
|
@@ -37,7 +37,7 @@ controls {
|
||||||
};
|
};
|
||||||
|
|
||||||
key altkey {
|
key altkey {
|
||||||
@ -1101,10 +657,10 @@ index b0ded3a..cb80269 100644
|
|||||||
};
|
};
|
||||||
|
|
||||||
diff --git a/bin/tests/system/nsupdate/ns2/named.conf.in b/bin/tests/system/nsupdate/ns2/named.conf.in
|
diff --git a/bin/tests/system/nsupdate/ns2/named.conf.in b/bin/tests/system/nsupdate/ns2/named.conf.in
|
||||||
index e6e2382..b0a94e0 100644
|
index da6b3b4..c547e47 100644
|
||||||
--- a/bin/tests/system/nsupdate/ns2/named.conf.in
|
--- a/bin/tests/system/nsupdate/ns2/named.conf.in
|
||||||
+++ b/bin/tests/system/nsupdate/ns2/named.conf.in
|
+++ b/bin/tests/system/nsupdate/ns2/named.conf.in
|
||||||
@@ -33,7 +33,7 @@ controls {
|
@@ -32,7 +32,7 @@ controls {
|
||||||
};
|
};
|
||||||
|
|
||||||
key altkey {
|
key altkey {
|
||||||
@ -1114,31 +670,30 @@ index e6e2382..b0a94e0 100644
|
|||||||
};
|
};
|
||||||
|
|
||||||
diff --git a/bin/tests/system/nsupdate/setup.sh b/bin/tests/system/nsupdate/setup.sh
|
diff --git a/bin/tests/system/nsupdate/setup.sh b/bin/tests/system/nsupdate/setup.sh
|
||||||
index 2b3b154..8240c42 100644
|
index c055da3..4e1242b 100644
|
||||||
--- a/bin/tests/system/nsupdate/setup.sh
|
--- a/bin/tests/system/nsupdate/setup.sh
|
||||||
+++ b/bin/tests/system/nsupdate/setup.sh
|
+++ b/bin/tests/system/nsupdate/setup.sh
|
||||||
@@ -68,7 +68,12 @@ EOF
|
@@ -56,7 +56,11 @@ EOF
|
||||||
|
|
||||||
$DDNSCONFGEN -q -r $RANDFILE -z example.nil > ns1/ddns.key
|
$DDNSCONFGEN -q -z example.nil > ns1/ddns.key
|
||||||
|
|
||||||
-$DDNSCONFGEN -q -r $RANDFILE -a hmac-md5 -k md5-key -z keytests.nil > ns1/md5.key
|
-$DDNSCONFGEN -q -a hmac-md5 -k md5-key -z keytests.nil > ns1/md5.key
|
||||||
+if $FEATURETEST --md5; then
|
+if $FEATURETEST --md5; then
|
||||||
+ $DDNSCONFGEN -q -r $RANDFILE -a hmac-md5 -k md5-key -z keytests.nil > ns1/md5.key
|
+ $DDNSCONFGEN -q -a hmac-md5 -k md5-key -z keytests.nil > ns1/md5.key
|
||||||
+else
|
+else
|
||||||
+ echo -n > ns1/md5.key
|
+ echo -n > ns1/md5.key
|
||||||
+fi
|
+fi
|
||||||
+
|
$DDNSCONFGEN -q -a hmac-sha1 -k sha1-key -z keytests.nil > ns1/sha1.key
|
||||||
$DDNSCONFGEN -q -r $RANDFILE -a hmac-sha1 -k sha1-key -z keytests.nil > ns1/sha1.key
|
$DDNSCONFGEN -q -a hmac-sha224 -k sha224-key -z keytests.nil > ns1/sha224.key
|
||||||
$DDNSCONFGEN -q -r $RANDFILE -a hmac-sha224 -k sha224-key -z keytests.nil > ns1/sha224.key
|
$DDNSCONFGEN -q -a hmac-sha256 -k sha256-key -z keytests.nil > ns1/sha256.key
|
||||||
$DDNSCONFGEN -q -r $RANDFILE -a hmac-sha256 -k sha256-key -z keytests.nil > ns1/sha256.key
|
|
||||||
diff --git a/bin/tests/system/nsupdate/tests.sh b/bin/tests/system/nsupdate/tests.sh
|
diff --git a/bin/tests/system/nsupdate/tests.sh b/bin/tests/system/nsupdate/tests.sh
|
||||||
index 60cf7ee..f8994ff 100755
|
index b35d797..41c128e 100755
|
||||||
--- a/bin/tests/system/nsupdate/tests.sh
|
--- a/bin/tests/system/nsupdate/tests.sh
|
||||||
+++ b/bin/tests/system/nsupdate/tests.sh
|
+++ b/bin/tests/system/nsupdate/tests.sh
|
||||||
@@ -804,7 +804,14 @@ fi
|
@@ -797,7 +797,14 @@ fi
|
||||||
n=`expr $n + 1`
|
n=`expr $n + 1`
|
||||||
ret=0
|
ret=0
|
||||||
echo_i "check TSIG key algorithms ($n)"
|
echo_i "check TSIG key algorithms (nsupdate -k) ($n)"
|
||||||
-for alg in md5 sha1 sha224 sha256 sha384 sha512; do
|
-for alg in md5 sha1 sha224 sha256 sha384 sha512; do
|
||||||
+if $FEATURETEST --md5
|
+if $FEATURETEST --md5
|
||||||
+then
|
+then
|
||||||
@ -1151,7 +706,7 @@ index 60cf7ee..f8994ff 100755
|
|||||||
$NSUPDATE -k ns1/${alg}.key <<END > /dev/null || ret=1
|
$NSUPDATE -k ns1/${alg}.key <<END > /dev/null || ret=1
|
||||||
server 10.53.0.1 ${PORT}
|
server 10.53.0.1 ${PORT}
|
||||||
update add ${alg}.keytests.nil. 600 A 10.10.10.3
|
update add ${alg}.keytests.nil. 600 A 10.10.10.3
|
||||||
@@ -812,7 +819,7 @@ send
|
@@ -805,7 +812,7 @@ send
|
||||||
END
|
END
|
||||||
done
|
done
|
||||||
sleep 2
|
sleep 2
|
||||||
@ -1160,11 +715,29 @@ index 60cf7ee..f8994ff 100755
|
|||||||
$DIG $DIGOPTS +short @10.53.0.1 ${alg}.keytests.nil | grep 10.10.10.3 > /dev/null 2>&1 || ret=1
|
$DIG $DIGOPTS +short @10.53.0.1 ${alg}.keytests.nil | grep 10.10.10.3 > /dev/null 2>&1 || ret=1
|
||||||
done
|
done
|
||||||
if [ $ret -ne 0 ]; then
|
if [ $ret -ne 0 ]; then
|
||||||
|
@@ -816,7 +823,7 @@ fi
|
||||||
|
n=`expr $n + 1`
|
||||||
|
ret=0
|
||||||
|
echo_i "check TSIG key algorithms (nsupdate -y) ($n)"
|
||||||
|
-for alg in md5 sha1 sha224 sha256 sha384 sha512; do
|
||||||
|
+for alg in $ALGS; do
|
||||||
|
secret=$(sed -n 's/.*secret "\(.*\)";.*/\1/p' ns1/${alg}.key)
|
||||||
|
$NSUPDATE -y "hmac-${alg}:${alg}-key:$secret" <<END > /dev/null || ret=1
|
||||||
|
server 10.53.0.1 ${PORT}
|
||||||
|
@@ -825,7 +832,7 @@ send
|
||||||
|
END
|
||||||
|
done
|
||||||
|
sleep 2
|
||||||
|
-for alg in md5 sha1 sha224 sha256 sha384 sha512; do
|
||||||
|
+for alg in $ALGS; do
|
||||||
|
$DIG $DIGOPTS +short @10.53.0.1 ${alg}.keytests.nil | grep 10.10.10.50 > /dev/null 2>&1 || ret=1
|
||||||
|
done
|
||||||
|
if [ $ret -ne 0 ]; then
|
||||||
diff --git a/bin/tests/system/rndc/setup.sh b/bin/tests/system/rndc/setup.sh
|
diff --git a/bin/tests/system/rndc/setup.sh b/bin/tests/system/rndc/setup.sh
|
||||||
index 2eb2cd5..36f5114 100644
|
index b59e7a7..04d5f5a 100644
|
||||||
--- a/bin/tests/system/rndc/setup.sh
|
--- a/bin/tests/system/rndc/setup.sh
|
||||||
+++ b/bin/tests/system/rndc/setup.sh
|
+++ b/bin/tests/system/rndc/setup.sh
|
||||||
@@ -35,7 +35,7 @@ make_key () {
|
@@ -33,7 +33,7 @@ make_key () {
|
||||||
sed 's/allow { 10.53.0.4/allow { any/' >> ns4/named.conf
|
sed 's/allow { 10.53.0.4/allow { any/' >> ns4/named.conf
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1174,7 +747,7 @@ index 2eb2cd5..36f5114 100644
|
|||||||
make_key 3 ${EXTRAPORT3} hmac-sha224
|
make_key 3 ${EXTRAPORT3} hmac-sha224
|
||||||
make_key 4 ${EXTRAPORT4} hmac-sha256
|
make_key 4 ${EXTRAPORT4} hmac-sha256
|
||||||
diff --git a/bin/tests/system/rndc/tests.sh b/bin/tests/system/rndc/tests.sh
|
diff --git a/bin/tests/system/rndc/tests.sh b/bin/tests/system/rndc/tests.sh
|
||||||
index 4e25e51..cb8934c 100644
|
index 9fd84ed..d0b188f 100644
|
||||||
--- a/bin/tests/system/rndc/tests.sh
|
--- a/bin/tests/system/rndc/tests.sh
|
||||||
+++ b/bin/tests/system/rndc/tests.sh
|
+++ b/bin/tests/system/rndc/tests.sh
|
||||||
@@ -348,15 +348,20 @@ if [ $ret != 0 ]; then echo_i "failed"; fi
|
@@ -348,15 +348,20 @@ if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||||
@ -1208,7 +781,7 @@ index 4e25e51..cb8934c 100644
|
|||||||
n=`expr $n + 1`
|
n=`expr $n + 1`
|
||||||
echo_i "testing rndc with hmac-sha1 ($n)"
|
echo_i "testing rndc with hmac-sha1 ($n)"
|
||||||
diff --git a/bin/tests/system/tsig/ns1/named.conf.in b/bin/tests/system/tsig/ns1/named.conf.in
|
diff --git a/bin/tests/system/tsig/ns1/named.conf.in b/bin/tests/system/tsig/ns1/named.conf.in
|
||||||
index 4905ffd..958d9fb 100644
|
index 3470c4f..cf539cd 100644
|
||||||
--- a/bin/tests/system/tsig/ns1/named.conf.in
|
--- a/bin/tests/system/tsig/ns1/named.conf.in
|
||||||
+++ b/bin/tests/system/tsig/ns1/named.conf.in
|
+++ b/bin/tests/system/tsig/ns1/named.conf.in
|
||||||
@@ -21,10 +21,7 @@ options {
|
@@ -21,10 +21,7 @@ options {
|
||||||
@ -1252,20 +825,20 @@ index 0000000..0682194
|
|||||||
+ algorithm hmac-md5-80;
|
+ algorithm hmac-md5-80;
|
||||||
+};
|
+};
|
||||||
diff --git a/bin/tests/system/tsig/setup.sh b/bin/tests/system/tsig/setup.sh
|
diff --git a/bin/tests/system/tsig/setup.sh b/bin/tests/system/tsig/setup.sh
|
||||||
index f42aa79..bfcf4a6 100644
|
index e3b4a45..ae21d04 100644
|
||||||
--- a/bin/tests/system/tsig/setup.sh
|
--- a/bin/tests/system/tsig/setup.sh
|
||||||
+++ b/bin/tests/system/tsig/setup.sh
|
+++ b/bin/tests/system/tsig/setup.sh
|
||||||
@@ -15,3 +15,8 @@ SYSTEMTESTTOP=..
|
@@ -15,3 +15,8 @@ SYSTEMTESTTOP=..
|
||||||
copy_setports ns1/named.conf.in ns1/named.conf
|
$SHELL clean.sh
|
||||||
|
|
||||||
test -r $RANDFILE || $GENRANDOM $RANDOMSIZE $RANDFILE
|
copy_setports ns1/named.conf.in ns1/named.conf
|
||||||
+
|
+
|
||||||
+if $FEATURETEST --md5
|
+if $FEATURETEST --md5
|
||||||
+then
|
+then
|
||||||
+ cat ns1/rndc5.conf.in >> ns1/named.conf
|
+ cat ns1/rndc5.conf.in >> ns1/named.conf
|
||||||
+fi
|
+fi
|
||||||
diff --git a/bin/tests/system/tsig/tests.sh b/bin/tests/system/tsig/tests.sh
|
diff --git a/bin/tests/system/tsig/tests.sh b/bin/tests/system/tsig/tests.sh
|
||||||
index e0c2903..327fa50 100644
|
index 38d842a..668aa6f 100644
|
||||||
--- a/bin/tests/system/tsig/tests.sh
|
--- a/bin/tests/system/tsig/tests.sh
|
||||||
+++ b/bin/tests/system/tsig/tests.sh
|
+++ b/bin/tests/system/tsig/tests.sh
|
||||||
@@ -26,20 +26,25 @@ sha512="jI/Pa4qRu96t76Pns5Z/Ndxbn3QCkwcxLOgt9vgvnJw5wqTRvNyk3FtD6yIMd1dWVlqZ+Y4f
|
@@ -26,20 +26,25 @@ sha512="jI/Pa4qRu96t76Pns5Z/Ndxbn3QCkwcxLOgt9vgvnJw5wqTRvNyk3FtD6yIMd1dWVlqZ+Y4f
|
||||||
@ -1355,19 +928,8 @@ index e0c2903..327fa50 100644
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
echo_i "fetching using hmac-sha1-80 (BADTRUNC)"
|
echo_i "fetching using hmac-sha1-80 (BADTRUNC)"
|
||||||
diff --git a/bin/tests/system/tsiggss/setup.sh b/bin/tests/system/tsiggss/setup.sh
|
|
||||||
index f04c907..09da5f9 100644
|
|
||||||
--- a/bin/tests/system/tsiggss/setup.sh
|
|
||||||
+++ b/bin/tests/system/tsiggss/setup.sh
|
|
||||||
@@ -16,5 +16,5 @@ test -r $RANDFILE || $GENRANDOM $RANDOMSIZE $RANDFILE
|
|
||||||
|
|
||||||
copy_setports ns1/named.conf.in ns1/named.conf
|
|
||||||
|
|
||||||
-key=`$KEYGEN -Cq -K ns1 -a DSA -b 512 -r $RANDFILE -n HOST -T KEY key.example.nil.`
|
|
||||||
+key=`$KEYGEN -Cq -K ns1 -a DSA -b 1024 -r $RANDFILE -n HOST -T KEY key.example.nil.`
|
|
||||||
cat ns1/example.nil.db.in ns1/${key}.key > ns1/example.nil.db
|
|
||||||
diff --git a/bin/tests/system/upforwd/ns1/named.conf.in b/bin/tests/system/upforwd/ns1/named.conf.in
|
diff --git a/bin/tests/system/upforwd/ns1/named.conf.in b/bin/tests/system/upforwd/ns1/named.conf.in
|
||||||
index 4ddd7a4..238f52a 100644
|
index 3873c7c..b359a5a 100644
|
||||||
--- a/bin/tests/system/upforwd/ns1/named.conf.in
|
--- a/bin/tests/system/upforwd/ns1/named.conf.in
|
||||||
+++ b/bin/tests/system/upforwd/ns1/named.conf.in
|
+++ b/bin/tests/system/upforwd/ns1/named.conf.in
|
||||||
@@ -10,7 +10,7 @@
|
@@ -10,7 +10,7 @@
|
||||||
@ -1380,10 +942,10 @@ index 4ddd7a4..238f52a 100644
|
|||||||
};
|
};
|
||||||
|
|
||||||
diff --git a/bin/tests/system/upforwd/tests.sh b/bin/tests/system/upforwd/tests.sh
|
diff --git a/bin/tests/system/upforwd/tests.sh b/bin/tests/system/upforwd/tests.sh
|
||||||
index 1cf8d3b..f4c3216 100644
|
index a50c896..8062d68 100644
|
||||||
--- a/bin/tests/system/upforwd/tests.sh
|
--- a/bin/tests/system/upforwd/tests.sh
|
||||||
+++ b/bin/tests/system/upforwd/tests.sh
|
+++ b/bin/tests/system/upforwd/tests.sh
|
||||||
@@ -68,7 +68,7 @@ if [ $ret != 0 ] ; then echo_i "failed"; status=`expr $status + $ret`; fi
|
@@ -79,7 +79,7 @@ if [ $ret != 0 ] ; then echo_i "failed"; status=`expr $status + $ret`; fi
|
||||||
|
|
||||||
echo_i "updating zone (signed) ($n)"
|
echo_i "updating zone (signed) ($n)"
|
||||||
ret=0
|
ret=0
|
||||||
@ -1393,5 +955,5 @@ index 1cf8d3b..f4c3216 100644
|
|||||||
update add updated.example. 600 A 10.10.10.1
|
update add updated.example. 600 A 10.10.10.1
|
||||||
update add updated.example. 600 TXT Foo
|
update add updated.example. 600 TXT Foo
|
||||||
--
|
--
|
||||||
2.31.1
|
2.26.2
|
||||||
|
|
||||||
|
@ -1,92 +0,0 @@
|
|||||||
From ec50eff97c259b5bfbfa4e050d69fe7b39b0f15a Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?Petr=20Men=C5=A1=C3=ADk?= <pemensik@redhat.com>
|
|
||||||
Date: Tue, 25 Sep 2018 18:08:46 +0200
|
|
||||||
Subject: [PATCH] Disable IDN from environment as documented
|
|
||||||
|
|
||||||
Manual page of host contained instructions to disable IDN processing
|
|
||||||
when it was built with libidn2. When refactoring IDN support however,
|
|
||||||
support for disabling IDN in host and nslookup was lost. Use also
|
|
||||||
environment variable and document it for nslookup, host and dig.
|
|
||||||
|
|
||||||
Support variable CHARSET=ASCII to disable IDN, supported in downstream
|
|
||||||
RH patch since RHEL 5.
|
|
||||||
---
|
|
||||||
bin/dig/dig.docbook | 4 +++-
|
|
||||||
bin/dig/dighost.c | 5 +++++
|
|
||||||
bin/dig/host.docbook | 2 +-
|
|
||||||
bin/dig/nslookup.docbook | 15 +++++++++++++++
|
|
||||||
4 files changed, 24 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/bin/dig/dig.docbook b/bin/dig/dig.docbook
|
|
||||||
index 5d19301..933af79 100644
|
|
||||||
--- a/bin/dig/dig.docbook
|
|
||||||
+++ b/bin/dig/dig.docbook
|
|
||||||
@@ -1312,7 +1312,9 @@ dig +qr www.isc.org any -x 127.0.0.1 isc.org ns +noqr
|
|
||||||
reply from the server.
|
|
||||||
If you'd like to turn off the IDN support for some reason, use
|
|
||||||
parameters <parameter>+noidnin</parameter> and
|
|
||||||
- <parameter>+noidnout</parameter>.
|
|
||||||
+ <parameter>+noidnout</parameter> or define
|
|
||||||
+ the <envar>IDN_DISABLE</envar> environment variable.
|
|
||||||
+
|
|
||||||
</para>
|
|
||||||
</refsection>
|
|
||||||
|
|
||||||
diff --git a/bin/dig/dighost.c b/bin/dig/dighost.c
|
|
||||||
index 5eabc1f..73aaab8 100644
|
|
||||||
--- a/bin/dig/dighost.c
|
|
||||||
+++ b/bin/dig/dighost.c
|
|
||||||
@@ -826,6 +826,11 @@ make_empty_lookup(void) {
|
|
||||||
looknew->badcookie = true;
|
|
||||||
#ifdef WITH_IDN_SUPPORT
|
|
||||||
looknew->idnin = isatty(1)?(getenv("IDN_DISABLE") == NULL):false;
|
|
||||||
+ if (looknew->idnin) {
|
|
||||||
+ const char *charset = getenv("CHARSET");
|
|
||||||
+ if (charset && !strcmp(charset, "ASCII"))
|
|
||||||
+ looknew->idnin = false;
|
|
||||||
+ }
|
|
||||||
#else
|
|
||||||
looknew->idnin = false;
|
|
||||||
#endif
|
|
||||||
diff --git a/bin/dig/host.docbook b/bin/dig/host.docbook
|
|
||||||
index da0f8fb..9689b5a 100644
|
|
||||||
--- a/bin/dig/host.docbook
|
|
||||||
+++ b/bin/dig/host.docbook
|
|
||||||
@@ -379,7 +379,7 @@
|
|
||||||
<command>host</command> appropriately converts character encoding of
|
|
||||||
domain name before sending a request to DNS server or displaying a
|
|
||||||
reply from the server.
|
|
||||||
- If you'd like to turn off the IDN support for some reason, defines
|
|
||||||
+ If you'd like to turn off the IDN support for some reason, define
|
|
||||||
the <envar>IDN_DISABLE</envar> environment variable.
|
|
||||||
The IDN support is disabled if the variable is set when
|
|
||||||
<command>host</command> runs.
|
|
||||||
diff --git a/bin/dig/nslookup.docbook b/bin/dig/nslookup.docbook
|
|
||||||
index d46fc2d..6d7d181 100644
|
|
||||||
--- a/bin/dig/nslookup.docbook
|
|
||||||
+++ b/bin/dig/nslookup.docbook
|
|
||||||
@@ -495,6 +495,21 @@ nslookup -query=hinfo -timeout=10
|
|
||||||
</para>
|
|
||||||
</refsection>
|
|
||||||
|
|
||||||
+ <refsection><info><title>IDN SUPPORT</title></info>
|
|
||||||
+
|
|
||||||
+ <para>
|
|
||||||
+ If <command>nslookup</command> has been built with IDN (internationalized
|
|
||||||
+ domain name) support, it can accept and display non-ASCII domain names.
|
|
||||||
+ <command>nslookup</command> appropriately converts character encoding of
|
|
||||||
+ domain name before sending a request to DNS server or displaying a
|
|
||||||
+ reply from the server.
|
|
||||||
+ If you'd like to turn off the IDN support for some reason, define
|
|
||||||
+ the <envar>IDN_DISABLE</envar> environment variable.
|
|
||||||
+ The IDN support is disabled if the variable is set when
|
|
||||||
+ <command>nslookup</command> runs.
|
|
||||||
+ </para>
|
|
||||||
+ </refsection>
|
|
||||||
+
|
|
||||||
<refsection><info><title>FILES</title></info>
|
|
||||||
|
|
||||||
<para><filename>/etc/resolv.conf</filename>
|
|
||||||
--
|
|
||||||
2.20.1
|
|
||||||
|
|
@ -1,50 +0,0 @@
|
|||||||
From cb6d2019766a6c8c5516fd8859cedf0052f03293 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Petr Mensik <pemensik@redhat.com>
|
|
||||||
Date: Thu, 25 Jul 2019 11:37:57 +0200
|
|
||||||
Subject: [PATCH] Skip support of jsoncpp
|
|
||||||
|
|
||||||
Bind cannot be compiled when jsoncpp-devel is installed. Remove support
|
|
||||||
for jsoncpp, use only json-c-devel. Bind 9.15 has already support for
|
|
||||||
--with-json-c, do not yet introduce it.
|
|
||||||
---
|
|
||||||
configure.ac | 17 ++---------------
|
|
||||||
1 file changed, 2 insertions(+), 15 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/configure.ac b/configure.ac
|
|
||||||
index 6d05337..5ce83b5 100644
|
|
||||||
--- a/configure.ac
|
|
||||||
+++ b/configure.ac
|
|
||||||
@@ -2594,15 +2594,7 @@ case "$use_libjson" in
|
|
||||||
auto|yes)
|
|
||||||
for d in /usr /usr/local /opt/local
|
|
||||||
do
|
|
||||||
- if test -f "${d}/include/json/json.h"
|
|
||||||
- then
|
|
||||||
- if test ${d} != /usr
|
|
||||||
- then
|
|
||||||
- libjson_cflags="-I ${d}/include"
|
|
||||||
- LIBS="$LIBS -L${d}/lib"
|
|
||||||
- fi
|
|
||||||
- have_libjson="yes"
|
|
||||||
- elif test -f "${d}/include/json-c/json.h"
|
|
||||||
+ if test -f "${d}/include/json-c/json.h"
|
|
||||||
then
|
|
||||||
if test ${d} != /usr
|
|
||||||
then
|
|
||||||
@@ -2615,12 +2607,7 @@ case "$use_libjson" in
|
|
||||||
done
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
- if test -f "${use_libjson}/include/json/json.h"
|
|
||||||
- then
|
|
||||||
- libjson_cflags="-I${use_libjson}/include"
|
|
||||||
- LIBS="$LIBS -L${use_libjson}/lib"
|
|
||||||
- have_libjson="yes"
|
|
||||||
- elif test -f "${use_libjson}/include/json-c/json.h"
|
|
||||||
+ if test -f "${use_libjson}/include/json-c/json.h"
|
|
||||||
then
|
|
||||||
libjson_cflags="-I${use_libjson}/include"
|
|
||||||
LIBS="$LIBS -L${use_libjson}/lib"
|
|
||||||
--
|
|
||||||
2.20.1
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
From a9b5785f174cf7fd74891fa64f6b69b9a9b55466 Mon Sep 17 00:00:00 2001
|
From 1241f2005d08673c28a595c5a6cd61350b95a929 Mon Sep 17 00:00:00 2001
|
||||||
From: =?UTF-8?q?Petr=20Men=C5=A1=C3=ADk?= <pemensik@redhat.com>
|
From: =?UTF-8?q?Petr=20Men=C5=A1=C3=ADk?= <pemensik@redhat.com>
|
||||||
Date: Tue, 2 Jan 2018 18:13:07 +0100
|
Date: Tue, 2 Jan 2018 18:13:07 +0100
|
||||||
Subject: [PATCH] Fix pkcs11 variants atf tests
|
Subject: [PATCH] Fix pkcs11 variants atf tests
|
||||||
@ -9,17 +9,14 @@ Add pkcs11 Kyuafile, fix dh_test to pass in pkcs11 mode
|
|||||||
---
|
---
|
||||||
configure.ac | 1 +
|
configure.ac | 1 +
|
||||||
lib/Kyuafile | 2 ++
|
lib/Kyuafile | 2 ++
|
||||||
lib/dns-pkcs11/tests/Makefile.in | 10 +++++-----
|
|
||||||
lib/dns-pkcs11/tests/dh_test.c | 3 ++-
|
lib/dns-pkcs11/tests/dh_test.c | 3 ++-
|
||||||
lib/isc-pkcs11/tests/Makefile.in | 6 +++---
|
3 files changed, 5 insertions(+), 1 deletion(-)
|
||||||
lib/isc-pkcs11/tests/hash_test.c | 32 +++++++++++++++++++++++++-------
|
|
||||||
6 files changed, 38 insertions(+), 16 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/configure.ac b/configure.ac
|
diff --git a/configure.ac b/configure.ac
|
||||||
index 62ecf56..0940a7d 100644
|
index d80ae31..0fb9328 100644
|
||||||
--- a/configure.ac
|
--- a/configure.ac
|
||||||
+++ b/configure.ac
|
+++ b/configure.ac
|
||||||
@@ -5476,6 +5476,7 @@ AC_CONFIG_FILES([
|
@@ -3090,6 +3090,7 @@ AC_CONFIG_FILES([
|
||||||
lib/dns-pkcs11/include/Makefile
|
lib/dns-pkcs11/include/Makefile
|
||||||
lib/dns-pkcs11/include/dns/Makefile
|
lib/dns-pkcs11/include/dns/Makefile
|
||||||
lib/dns-pkcs11/include/dst/Makefile
|
lib/dns-pkcs11/include/dst/Makefile
|
||||||
@ -28,7 +25,7 @@ index 62ecf56..0940a7d 100644
|
|||||||
lib/irs/include/Makefile
|
lib/irs/include/Makefile
|
||||||
lib/irs/include/irs/Makefile
|
lib/irs/include/irs/Makefile
|
||||||
diff --git a/lib/Kyuafile b/lib/Kyuafile
|
diff --git a/lib/Kyuafile b/lib/Kyuafile
|
||||||
index 7c8bab0..eec9564 100644
|
index 39ce986..037e5ef 100644
|
||||||
--- a/lib/Kyuafile
|
--- a/lib/Kyuafile
|
||||||
+++ b/lib/Kyuafile
|
+++ b/lib/Kyuafile
|
||||||
@@ -2,8 +2,10 @@ syntax(2)
|
@@ -2,8 +2,10 @@ syntax(2)
|
||||||
@ -38,37 +35,15 @@ index 7c8bab0..eec9564 100644
|
|||||||
+include('dns-pkcs11/Kyuafile')
|
+include('dns-pkcs11/Kyuafile')
|
||||||
include('irs/Kyuafile')
|
include('irs/Kyuafile')
|
||||||
include('isc/Kyuafile')
|
include('isc/Kyuafile')
|
||||||
+include('isc-pkcs11/Kyuafile')
|
|
||||||
include('isccc/Kyuafile')
|
include('isccc/Kyuafile')
|
||||||
include('isccfg/Kyuafile')
|
include('isccfg/Kyuafile')
|
||||||
include('lwres/Kyuafile')
|
include('ns/Kyuafile')
|
||||||
diff --git a/lib/dns-pkcs11/tests/Makefile.in b/lib/dns-pkcs11/tests/Makefile.in
|
+include('ns-pkcs11/Kyuafile')
|
||||||
index 22a06a8..5df5b15 100644
|
|
||||||
--- a/lib/dns-pkcs11/tests/Makefile.in
|
|
||||||
+++ b/lib/dns-pkcs11/tests/Makefile.in
|
|
||||||
@@ -17,12 +17,12 @@ VERSION=@BIND9_VERSION@
|
|
||||||
|
|
||||||
CINCLUDES = -I. -Iinclude ${DNS_INCLUDES} ${ISC_INCLUDES} \
|
|
||||||
@DST_OPENSSL_INC@ ${MAXMINDDB_CFLAGS}
|
|
||||||
-CDEFINES = @CRYPTO@ -DTESTS="\"${top_builddir}/lib/dns/tests/\""
|
|
||||||
+CDEFINES = @CRYPTO_PK11@ -DTESTS="\"${top_builddir}/lib/dns-pkcs11/tests/\""
|
|
||||||
|
|
||||||
-ISCLIBS = ../../isc/libisc.@A@
|
|
||||||
-ISCDEPLIBS = ../../isc/libisc.@A@
|
|
||||||
-DNSLIBS = ../libdns.@A@ ${MAXMINDDB_LIBS} @DNS_CRYPTO_LIBS@
|
|
||||||
-DNSDEPLIBS = ../libdns.@A@
|
|
||||||
+ISCLIBS = ../../isc-pkcs11/libisc-pkcs11.@A@
|
|
||||||
+ISCDEPLIBS = ../../isc-pkcs11/libisc-pkcs11.@A@
|
|
||||||
+DNSLIBS = ../libdns-pkcs11.@A@ ${MAXMINDDB_LIBS} @DNS_CRYPTO_LIBS@
|
|
||||||
+DNSDEPLIBS = ../libdns-pkcs11.@A@
|
|
||||||
|
|
||||||
LIBS = @LIBS@ @CMOCKA_LIBS@
|
|
||||||
CFLAGS = @CFLAGS@ @CMOCKA_CFLAGS@
|
|
||||||
diff --git a/lib/dns-pkcs11/tests/dh_test.c b/lib/dns-pkcs11/tests/dh_test.c
|
diff --git a/lib/dns-pkcs11/tests/dh_test.c b/lib/dns-pkcs11/tests/dh_test.c
|
||||||
index a5bf46c..9ff2b76 100644
|
index 934e8fd..658d1af 100644
|
||||||
--- a/lib/dns-pkcs11/tests/dh_test.c
|
--- a/lib/dns-pkcs11/tests/dh_test.c
|
||||||
+++ b/lib/dns-pkcs11/tests/dh_test.c
|
+++ b/lib/dns-pkcs11/tests/dh_test.c
|
||||||
@@ -88,7 +88,8 @@ dh_computesecret(void **state) {
|
@@ -87,7 +87,8 @@ dh_computesecret(void **state) {
|
||||||
result = dst_key_computesecret(key, key, &buf);
|
result = dst_key_computesecret(key, key, &buf);
|
||||||
assert_int_equal(result, DST_R_NOTPRIVATEKEY);
|
assert_int_equal(result, DST_R_NOTPRIVATEKEY);
|
||||||
result = key->func->computesecret(key, key, &buf);
|
result = key->func->computesecret(key, key, &buf);
|
||||||
@ -78,115 +53,6 @@ index a5bf46c..9ff2b76 100644
|
|||||||
|
|
||||||
dst_key_free(&key);
|
dst_key_free(&key);
|
||||||
}
|
}
|
||||||
diff --git a/lib/isc-pkcs11/tests/Makefile.in b/lib/isc-pkcs11/tests/Makefile.in
|
|
||||||
index 36d2207..00dfbc9 100644
|
|
||||||
--- a/lib/isc-pkcs11/tests/Makefile.in
|
|
||||||
+++ b/lib/isc-pkcs11/tests/Makefile.in
|
|
||||||
@@ -16,10 +16,10 @@ VERSION=@BIND9_VERSION@
|
|
||||||
@BIND9_MAKE_INCLUDES@
|
|
||||||
|
|
||||||
CINCLUDES = -I. -Iinclude ${ISC_INCLUDES} @ISC_OPENSSL_INC@
|
|
||||||
-CDEFINES = @CRYPTO@ -DTESTS="\"${top_builddir}/lib/isc/tests/\""
|
|
||||||
+CDEFINES = @CRYPTO_PK11@ -DTESTS="\"${top_builddir}/lib/isc-pkcs11/tests/\""
|
|
||||||
|
|
||||||
-ISCLIBS = ../libisc.@A@ @ISC_OPENSSL_LIBS@
|
|
||||||
-ISCDEPLIBS = ../libisc.@A@
|
|
||||||
+ISCLIBS = ../libisc-pkcs11.@A@ @ISC_OPENSSL_LIBS@
|
|
||||||
+ISCDEPLIBS = ../libisc-pkcs11.@A@
|
|
||||||
|
|
||||||
LIBS = @LIBS@ @CMOCKA_LIBS@
|
|
||||||
CFLAGS = @CFLAGS@ @CMOCKA_CFLAGS@
|
|
||||||
diff --git a/lib/isc-pkcs11/tests/hash_test.c b/lib/isc-pkcs11/tests/hash_test.c
|
|
||||||
index 4fafc38..5eb2be2 100644
|
|
||||||
--- a/lib/isc-pkcs11/tests/hash_test.c
|
|
||||||
+++ b/lib/isc-pkcs11/tests/hash_test.c
|
|
||||||
@@ -84,7 +84,7 @@ typedef struct hash_testcase {
|
|
||||||
|
|
||||||
typedef struct hash_test_key {
|
|
||||||
const char *key;
|
|
||||||
- const int len;
|
|
||||||
+ const unsigned len;
|
|
||||||
} hash_test_key_t;
|
|
||||||
|
|
||||||
/* non-hmac tests */
|
|
||||||
@@ -955,8 +955,11 @@ isc_hmacsha1_test(void **state) {
|
|
||||||
hash_test_key_t *test_key = test_keys;
|
|
||||||
|
|
||||||
while (testcase->input != NULL && testcase->result != NULL) {
|
|
||||||
+ int len = ISC_MAX(test_key->len, ISC_SHA1_DIGESTLENGTH);
|
|
||||||
+
|
|
||||||
+ memset(buffer, 0, ISC_SHA1_DIGESTLENGTH);
|
|
||||||
memmove(buffer, test_key->key, test_key->len);
|
|
||||||
- isc_hmacsha1_init(&hmacsha1, buffer, test_key->len);
|
|
||||||
+ isc_hmacsha1_init(&hmacsha1, buffer, len);
|
|
||||||
isc_hmacsha1_update(&hmacsha1,
|
|
||||||
(const uint8_t *) testcase->input,
|
|
||||||
testcase->input_len);
|
|
||||||
@@ -1115,8 +1118,11 @@ isc_hmacsha224_test(void **state) {
|
|
||||||
hash_test_key_t *test_key = test_keys;
|
|
||||||
|
|
||||||
while (testcase->input != NULL && testcase->result != NULL) {
|
|
||||||
+ int len = ISC_MAX(test_key->len, ISC_SHA224_DIGESTLENGTH);
|
|
||||||
+
|
|
||||||
+ memset(buffer, 0, ISC_SHA224_DIGESTLENGTH);
|
|
||||||
memmove(buffer, test_key->key, test_key->len);
|
|
||||||
- isc_hmacsha224_init(&hmacsha224, buffer, test_key->len);
|
|
||||||
+ isc_hmacsha224_init(&hmacsha224, buffer, len);
|
|
||||||
isc_hmacsha224_update(&hmacsha224,
|
|
||||||
(const uint8_t *) testcase->input,
|
|
||||||
testcase->input_len);
|
|
||||||
@@ -1276,8 +1282,11 @@ isc_hmacsha256_test(void **state) {
|
|
||||||
hash_test_key_t *test_key = test_keys;
|
|
||||||
|
|
||||||
while (testcase->input != NULL && testcase->result != NULL) {
|
|
||||||
+ int len = ISC_MAX(test_key->len, ISC_SHA256_DIGESTLENGTH);
|
|
||||||
+
|
|
||||||
+ memset(buffer, 0, ISC_SHA256_DIGESTLENGTH);
|
|
||||||
memmove(buffer, test_key->key, test_key->len);
|
|
||||||
- isc_hmacsha256_init(&hmacsha256, buffer, test_key->len);
|
|
||||||
+ isc_hmacsha256_init(&hmacsha256, buffer, len);
|
|
||||||
isc_hmacsha256_update(&hmacsha256,
|
|
||||||
(const uint8_t *) testcase->input,
|
|
||||||
testcase->input_len);
|
|
||||||
@@ -1443,8 +1452,11 @@ isc_hmacsha384_test(void **state) {
|
|
||||||
hash_test_key_t *test_key = test_keys;
|
|
||||||
|
|
||||||
while (testcase->input != NULL && testcase->result != NULL) {
|
|
||||||
+ int len = ISC_MAX(test_key->len, ISC_SHA384_DIGESTLENGTH);
|
|
||||||
+
|
|
||||||
+ memset(buffer, 0, ISC_SHA384_DIGESTLENGTH);
|
|
||||||
memmove(buffer, test_key->key, test_key->len);
|
|
||||||
- isc_hmacsha384_init(&hmacsha384, buffer, test_key->len);
|
|
||||||
+ isc_hmacsha384_init(&hmacsha384, buffer, len);
|
|
||||||
isc_hmacsha384_update(&hmacsha384,
|
|
||||||
(const uint8_t *) testcase->input,
|
|
||||||
testcase->input_len);
|
|
||||||
@@ -1610,8 +1622,11 @@ isc_hmacsha512_test(void **state) {
|
|
||||||
hash_test_key_t *test_key = test_keys;
|
|
||||||
|
|
||||||
while (testcase->input != NULL && testcase->result != NULL) {
|
|
||||||
+ int len = ISC_MAX(test_key->len, ISC_SHA512_DIGESTLENGTH);
|
|
||||||
+
|
|
||||||
+ memset(buffer, 0, ISC_SHA512_DIGESTLENGTH);
|
|
||||||
memmove(buffer, test_key->key, test_key->len);
|
|
||||||
- isc_hmacsha512_init(&hmacsha512, buffer, test_key->len);
|
|
||||||
+ isc_hmacsha512_init(&hmacsha512, buffer, len);
|
|
||||||
isc_hmacsha512_update(&hmacsha512,
|
|
||||||
(const uint8_t *) testcase->input,
|
|
||||||
testcase->input_len);
|
|
||||||
@@ -1754,8 +1769,11 @@ isc_hmacmd5_test(void **state) {
|
|
||||||
hash_test_key_t *test_key = test_keys;
|
|
||||||
|
|
||||||
while (testcase->input != NULL && testcase->result != NULL) {
|
|
||||||
+ int len = ISC_MAX(test_key->len, ISC_MD5_DIGESTLENGTH);
|
|
||||||
+
|
|
||||||
+ memset(buffer, 0, ISC_MD5_DIGESTLENGTH);
|
|
||||||
memmove(buffer, test_key->key, test_key->len);
|
|
||||||
- isc_hmacmd5_init(&hmacmd5, buffer, test_key->len);
|
|
||||||
+ isc_hmacmd5_init(&hmacmd5, buffer, len);
|
|
||||||
isc_hmacmd5_update(&hmacmd5,
|
|
||||||
(const uint8_t *) testcase->input,
|
|
||||||
testcase->input_len);
|
|
||||||
--
|
--
|
||||||
2.21.1
|
2.20.1
|
||||||
|
|
||||||
|
@ -1,256 +0,0 @@
|
|||||||
From 8ca95f47231822df2b9c171a4da1e93ca5b748eb Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?Petr=20Men=C5=A1=C3=ADk?= <pemensik@redhat.com>
|
|
||||||
Date: Wed, 25 Jul 2018 12:24:16 +0200
|
|
||||||
Subject: [PATCH] Use make automatic variables to install updated manuals
|
|
||||||
|
|
||||||
Make will choose modified manual from build directory or original from source
|
|
||||||
directory automagically. Take advantage of install tool feature.
|
|
||||||
Install all files in single command instead of iterating on each of them.
|
|
||||||
---
|
|
||||||
bin/check/Makefile.in | 8 +++++---
|
|
||||||
bin/confgen/Makefile.in | 9 +++++----
|
|
||||||
bin/delv/Makefile.in | 6 ++++--
|
|
||||||
bin/dig/Makefile.in | 8 ++++----
|
|
||||||
bin/dnssec/Makefile.in | 6 ++++--
|
|
||||||
bin/named/Makefile.in | 13 +++++++++----
|
|
||||||
bin/pkcs11/Makefile.in | 9 ++++-----
|
|
||||||
bin/python/Makefile.in | 8 ++++----
|
|
||||||
bin/tools/Makefile.in | 25 +++++++++++++++----------
|
|
||||||
9 files changed, 54 insertions(+), 38 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/bin/check/Makefile.in b/bin/check/Makefile.in
|
|
||||||
index c124e80..1174f8d 100644
|
|
||||||
--- a/bin/check/Makefile.in
|
|
||||||
+++ b/bin/check/Makefile.in
|
|
||||||
@@ -83,12 +83,14 @@ installdirs:
|
|
||||||
$(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${sbindir}
|
|
||||||
$(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${mandir}/man8
|
|
||||||
|
|
||||||
-install:: named-checkconf@EXEEXT@ named-checkzone@EXEEXT@ installdirs
|
|
||||||
+install-man8: ${MANPAGES}
|
|
||||||
+ ${INSTALL_DATA} $^ ${DESTDIR}${mandir}/man8
|
|
||||||
+ (cd ${DESTDIR}${mandir}/man8; rm -f named-compilezone.8; ${LINK_PROGRAM} named-checkzone.8 named-compilezone.8)
|
|
||||||
+
|
|
||||||
+install:: named-checkconf@EXEEXT@ named-checkzone@EXEEXT@ installdirs install-man8
|
|
||||||
${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} named-checkconf@EXEEXT@ ${DESTDIR}${sbindir}
|
|
||||||
${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} named-checkzone@EXEEXT@ ${DESTDIR}${sbindir}
|
|
||||||
(cd ${DESTDIR}${sbindir}; rm -f named-compilezone@EXEEXT@; ${LINK_PROGRAM} named-checkzone@EXEEXT@ named-compilezone@EXEEXT@)
|
|
||||||
- for m in ${MANPAGES}; do ${INSTALL_DATA} ${srcdir}/$$m ${DESTDIR}${mandir}/man8 || exit 1; done
|
|
||||||
- (cd ${DESTDIR}${mandir}/man8; rm -f named-compilezone.8; ${LINK_PROGRAM} named-checkzone.8 named-compilezone.8)
|
|
||||||
|
|
||||||
uninstall::
|
|
||||||
rm -f ${DESTDIR}${mandir}/man8/named-compilezone.8
|
|
||||||
diff --git a/bin/confgen/Makefile.in b/bin/confgen/Makefile.in
|
|
||||||
index 87f13dd..7865c0c 100644
|
|
||||||
--- a/bin/confgen/Makefile.in
|
|
||||||
+++ b/bin/confgen/Makefile.in
|
|
||||||
@@ -95,13 +95,14 @@ installdirs:
|
|
||||||
$(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${sbindir}
|
|
||||||
$(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${mandir}/man8
|
|
||||||
|
|
||||||
-install:: rndc-confgen@EXEEXT@ ddns-confgen@EXEEXT@ installdirs
|
|
||||||
+install-man8: rndc-confgen.8 ddns-confgen.8
|
|
||||||
+ ${INSTALL_DATA} $^ ${DESTDIR}${mandir}/man8
|
|
||||||
+ (cd ${DESTDIR}${mandir}/man8; rm -f tsig-keygen.8; ${LINK_PROGRAM} ddns-confgen.8 tsig-keygen.8)
|
|
||||||
+
|
|
||||||
+install:: rndc-confgen@EXEEXT@ ddns-confgen@EXEEXT@ installdirs install-man8
|
|
||||||
${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} rndc-confgen@EXEEXT@ ${DESTDIR}${sbindir}
|
|
||||||
${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} ddns-confgen@EXEEXT@ ${DESTDIR}${sbindir}
|
|
||||||
- ${INSTALL_DATA} ${srcdir}/rndc-confgen.8 ${DESTDIR}${mandir}/man8
|
|
||||||
- ${INSTALL_DATA} ${srcdir}/ddns-confgen.8 ${DESTDIR}${mandir}/man8
|
|
||||||
(cd ${DESTDIR}${sbindir}; rm -f tsig-keygen@EXEEXT@; ${LINK_PROGRAM} ddns-confgen@EXEEXT@ tsig-keygen@EXEEXT@)
|
|
||||||
- (cd ${DESTDIR}${mandir}/man8; rm -f tsig-keygen.8; ${LINK_PROGRAM} ddns-confgen.8 tsig-keygen.8)
|
|
||||||
|
|
||||||
uninstall::
|
|
||||||
rm -f ${DESTDIR}${mandir}/man8/tsig-keygen.8
|
|
||||||
diff --git a/bin/delv/Makefile.in b/bin/delv/Makefile.in
|
|
||||||
index e2d2802..19361a8 100644
|
|
||||||
--- a/bin/delv/Makefile.in
|
|
||||||
+++ b/bin/delv/Makefile.in
|
|
||||||
@@ -63,10 +63,12 @@ installdirs:
|
|
||||||
$(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${bindir}
|
|
||||||
$(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${mandir}/man1
|
|
||||||
|
|
||||||
-install:: delv@EXEEXT@ installdirs
|
|
||||||
+install-man1: delv.1
|
|
||||||
+ ${INSTALL_DATA} $^ ${DESTDIR}${mandir}/man1
|
|
||||||
+
|
|
||||||
+install:: delv@EXEEXT@ installdirs install-man1
|
|
||||||
${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} \
|
|
||||||
delv@EXEEXT@ ${DESTDIR}${bindir}
|
|
||||||
- ${INSTALL_DATA} ${srcdir}/delv.1 ${DESTDIR}${mandir}/man1
|
|
||||||
|
|
||||||
uninstall::
|
|
||||||
rm -f ${DESTDIR}${mandir}/man1/delv.1
|
|
||||||
diff --git a/bin/dig/Makefile.in b/bin/dig/Makefile.in
|
|
||||||
index a9830a9..d7ac0b6 100644
|
|
||||||
--- a/bin/dig/Makefile.in
|
|
||||||
+++ b/bin/dig/Makefile.in
|
|
||||||
@@ -91,16 +91,16 @@ installdirs:
|
|
||||||
$(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${bindir}
|
|
||||||
$(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${mandir}/man1
|
|
||||||
|
|
||||||
-install:: dig@EXEEXT@ host@EXEEXT@ nslookup@EXEEXT@ installdirs
|
|
||||||
+install-man1: ${MANPAGES}
|
|
||||||
+ ${INSTALL_DATA} $^ ${DESTDIR}${mandir}/man1
|
|
||||||
+
|
|
||||||
+install:: dig@EXEEXT@ host@EXEEXT@ nslookup@EXEEXT@ installdirs install-man1
|
|
||||||
${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} \
|
|
||||||
dig@EXEEXT@ ${DESTDIR}${bindir}
|
|
||||||
${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} \
|
|
||||||
host@EXEEXT@ ${DESTDIR}${bindir}
|
|
||||||
${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} \
|
|
||||||
nslookup@EXEEXT@ ${DESTDIR}${bindir}
|
|
||||||
- for m in ${MANPAGES}; do \
|
|
||||||
- ${INSTALL_DATA} ${srcdir}/$$m ${DESTDIR}${mandir}/man1 || exit 1; \
|
|
||||||
- done
|
|
||||||
|
|
||||||
uninstall::
|
|
||||||
for m in ${MANPAGES}; do \
|
|
||||||
diff --git a/bin/dnssec/Makefile.in b/bin/dnssec/Makefile.in
|
|
||||||
index 2239ad1..ce0a177 100644
|
|
||||||
--- a/bin/dnssec/Makefile.in
|
|
||||||
+++ b/bin/dnssec/Makefile.in
|
|
||||||
@@ -110,9 +110,11 @@ installdirs:
|
|
||||||
$(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${sbindir}
|
|
||||||
$(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${mandir}/man8
|
|
||||||
|
|
||||||
-install:: ${TARGETS} installdirs
|
|
||||||
+install-man8: ${MANPAGES}
|
|
||||||
+ ${INSTALL_DATA} $^ ${DESTDIR}${mandir}/man8
|
|
||||||
+
|
|
||||||
+install:: ${TARGETS} installdirs install-man8
|
|
||||||
for t in ${TARGETS}; do ${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} $$t ${DESTDIR}${sbindir} || exit 1; done
|
|
||||||
- for m in ${MANPAGES}; do ${INSTALL_DATA} ${srcdir}/$$m ${DESTDIR}${mandir}/man8 || exit 1; done
|
|
||||||
|
|
||||||
uninstall::
|
|
||||||
for m in ${MANPAGES}; do rm -f ${DESTDIR}${mandir}/man8/$$m || exit 1; done
|
|
||||||
diff --git a/bin/named/Makefile.in b/bin/named/Makefile.in
|
|
||||||
index e1f85a9..d92bc9a 100644
|
|
||||||
--- a/bin/named/Makefile.in
|
|
||||||
+++ b/bin/named/Makefile.in
|
|
||||||
@@ -176,12 +176,17 @@ installdirs:
|
|
||||||
$(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${mandir}/man5
|
|
||||||
$(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${mandir}/man8
|
|
||||||
|
|
||||||
-install:: named@EXEEXT@ lwresd@EXEEXT@ installdirs
|
|
||||||
+install-man5: named.conf.5
|
|
||||||
+ ${INSTALL_DATA} $^ ${DESTDIR}${mandir}/man5
|
|
||||||
+
|
|
||||||
+install-man8: named.8 lwresd.8
|
|
||||||
+ ${INSTALL_DATA} $^ ${DESTDIR}${mandir}/man8
|
|
||||||
+
|
|
||||||
+install-man: install-man5 install-man8
|
|
||||||
+
|
|
||||||
+install:: named@EXEEXT@ lwresd@EXEEXT@ installdirs install-man
|
|
||||||
${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} named@EXEEXT@ ${DESTDIR}${sbindir}
|
|
||||||
(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
|
|
||||||
- ${INSTALL_DATA} ${srcdir}/named.conf.5 ${DESTDIR}${mandir}/man5
|
|
||||||
|
|
||||||
uninstall::
|
|
||||||
rm -f ${DESTDIR}${mandir}/man5/named.conf.5
|
|
||||||
diff --git a/bin/pkcs11/Makefile.in b/bin/pkcs11/Makefile.in
|
|
||||||
index ae90616..a058c91 100644
|
|
||||||
--- a/bin/pkcs11/Makefile.in
|
|
||||||
+++ b/bin/pkcs11/Makefile.in
|
|
||||||
@@ -71,7 +71,10 @@ installdirs:
|
|
||||||
$(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${sbindir}
|
|
||||||
$(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${mandir}/man8
|
|
||||||
|
|
||||||
-install:: ${TARGETS} installdirs
|
|
||||||
+install-man8: ${MANPAGES}
|
|
||||||
+ ${INSTALL_DATA} $^ ${DESTDIR}${mandir}/man8
|
|
||||||
+
|
|
||||||
+install:: ${TARGETS} installdirs install-man8
|
|
||||||
${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} pkcs11-list@EXEEXT@ \
|
|
||||||
${DESTDIR}${sbindir}
|
|
||||||
${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} pkcs11-destroy@EXEEXT@ \
|
|
||||||
@@ -80,10 +83,6 @@ install:: ${TARGETS} installdirs
|
|
||||||
${DESTDIR}${sbindir}
|
|
||||||
${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} pkcs11-tokens@EXEEXT@ \
|
|
||||||
${DESTDIR}${sbindir}
|
|
||||||
- ${INSTALL_DATA} ${srcdir}/pkcs11-list.8 ${DESTDIR}${mandir}/man8
|
|
||||||
- ${INSTALL_DATA} ${srcdir}/pkcs11-destroy.8 ${DESTDIR}${mandir}/man8
|
|
||||||
- ${INSTALL_DATA} ${srcdir}/pkcs11-keygen.8 ${DESTDIR}${mandir}/man8
|
|
||||||
- ${INSTALL_DATA} ${srcdir}/pkcs11-tokens.8 ${DESTDIR}${mandir}/man8
|
|
||||||
|
|
||||||
uninstall::
|
|
||||||
rm -f ${DESTDIR}${mandir}/man8/pkcs11-tokens.8
|
|
||||||
diff --git a/bin/python/Makefile.in b/bin/python/Makefile.in
|
|
||||||
index aa678d4..064c404 100644
|
|
||||||
--- a/bin/python/Makefile.in
|
|
||||||
+++ b/bin/python/Makefile.in
|
|
||||||
@@ -47,13 +47,13 @@ installdirs:
|
|
||||||
$(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${sbindir}
|
|
||||||
$(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${mandir}/man8
|
|
||||||
|
|
||||||
-install:: ${TARGETS} installdirs
|
|
||||||
+install-man8: ${MANPAGES}
|
|
||||||
+ ${INSTALL_DATA} $^ ${DESTDIR}${mandir}/man8
|
|
||||||
+
|
|
||||||
+install:: ${TARGETS} installdirs install-man8
|
|
||||||
${INSTALL_SCRIPT} dnssec-checkds ${DESTDIR}${sbindir}
|
|
||||||
${INSTALL_SCRIPT} dnssec-coverage ${DESTDIR}${sbindir}
|
|
||||||
${INSTALL_SCRIPT} dnssec-keymgr ${DESTDIR}${sbindir}
|
|
||||||
- ${INSTALL_DATA} ${srcdir}/dnssec-checkds.8 ${DESTDIR}${mandir}/man8
|
|
||||||
- ${INSTALL_DATA} ${srcdir}/dnssec-coverage.8 ${DESTDIR}${mandir}/man8
|
|
||||||
- ${INSTALL_DATA} ${srcdir}/dnssec-keymgr.8 ${DESTDIR}${mandir}/man8
|
|
||||||
if test -n "${PYTHON}" ; then \
|
|
||||||
if test -n "${DESTDIR}" ; then \
|
|
||||||
${PYTHON} ${srcdir}/setup.py install --root=${DESTDIR} --prefix=${prefix} @PYTHON_INSTALL_LIB@ ; \
|
|
||||||
diff --git a/bin/tools/Makefile.in b/bin/tools/Makefile.in
|
|
||||||
index 7bf2af4..c395bc7 100644
|
|
||||||
--- a/bin/tools/Makefile.in
|
|
||||||
+++ b/bin/tools/Makefile.in
|
|
||||||
@@ -119,17 +119,27 @@ installdirs:
|
|
||||||
$(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${mandir}/man1
|
|
||||||
$(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${mandir}/man8
|
|
||||||
|
|
||||||
-nzd:
|
|
||||||
+nzd-man: named-nzd2nzf.8
|
|
||||||
+ ${INSTALL_DATA} $^ ${DESTDIR}${mandir}/man8
|
|
||||||
+
|
|
||||||
+nzd: nzd-man
|
|
||||||
${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} named-nzd2nzf@EXEEXT@ \
|
|
||||||
${DESTDIR}${sbindir}
|
|
||||||
- ${INSTALL_DATA} ${srcdir}/named-nzd2nzf.8 ${DESTDIR}${mandir}/man8
|
|
||||||
|
|
||||||
-dnstap:
|
|
||||||
+dnstap-man: dnstap-read.1
|
|
||||||
+ ${INSTALL_DATA} $^ ${DESTDIR}${mandir}/man1
|
|
||||||
+
|
|
||||||
+dnstap: dnstap-man
|
|
||||||
${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} dnstap-read@EXEEXT@ \
|
|
||||||
${DESTDIR}${bindir}
|
|
||||||
- ${INSTALL_DATA} ${srcdir}/dnstap-read.1 ${DESTDIR}${mandir}/man1
|
|
||||||
|
|
||||||
-install:: ${TARGETS} installdirs @DNSTAP@ @NZD_TOOLS@
|
|
||||||
+install-man1: arpaname.1 named-rrchecker.1 mdig.1
|
|
||||||
+ ${INSTALL_DATA} $^ ${DESTDIR}${mandir}/man1
|
|
||||||
+
|
|
||||||
+install-man8: named-journalprint.8 nsec3hash.8
|
|
||||||
+ ${INSTALL_DATA} $^ ${DESTDIR}${mandir}/man8
|
|
||||||
+
|
|
||||||
+install:: ${TARGETS} installdirs @DNSTAP@ @NZD_TOOLS@ install-man1 install-man8
|
|
||||||
${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} arpaname@EXEEXT@ \
|
|
||||||
${DESTDIR}${bindir}
|
|
||||||
${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} named-journalprint@EXEEXT@ \
|
|
||||||
@@ -144,13 +154,8 @@ install:: ${TARGETS} installdirs @DNSTAP@ @NZD_TOOLS@
|
|
||||||
${DESTDIR}${sbindir}
|
|
||||||
${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} mdig@EXEEXT@ \
|
|
||||||
${DESTDIR}${bindir}
|
|
||||||
- ${INSTALL_DATA} ${srcdir}/arpaname.1 ${DESTDIR}${mandir}/man1
|
|
||||||
${INSTALL_DATA} ${srcdir}/isc-hmac-fixup.8 ${DESTDIR}${mandir}/man8
|
|
||||||
- ${INSTALL_DATA} ${srcdir}/named-journalprint.8 ${DESTDIR}${mandir}/man8
|
|
||||||
- ${INSTALL_DATA} ${srcdir}/named-rrchecker.1 ${DESTDIR}${mandir}/man1
|
|
||||||
- ${INSTALL_DATA} ${srcdir}/nsec3hash.8 ${DESTDIR}${mandir}/man8
|
|
||||||
${INSTALL_DATA} ${srcdir}/genrandom.8 ${DESTDIR}${mandir}/man8
|
|
||||||
- ${INSTALL_DATA} ${srcdir}/mdig.1 ${DESTDIR}${mandir}/man1
|
|
||||||
|
|
||||||
uninstall::
|
|
||||||
rm -f ${DESTDIR}${mandir}/man1/mdig.1
|
|
||||||
--
|
|
||||||
2.14.4
|
|
||||||
|
|
@ -1,27 +0,0 @@
|
|||||||
diff --git a/lib/dns/dst_internal.h b/lib/dns/dst_internal.h
|
|
||||||
index 640519a..fc40472 100644
|
|
||||||
--- a/lib/dns/dst_internal.h
|
|
||||||
+++ b/lib/dns/dst_internal.h
|
|
||||||
@@ -59,6 +59,9 @@
|
|
||||||
#include <openssl/objects.h>
|
|
||||||
#include <openssl/rsa.h>
|
|
||||||
#endif
|
|
||||||
+#if PKCS11CRYPTO
|
|
||||||
+#include <pk11/pk11.h>
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
ISC_LANG_BEGINDECLS
|
|
||||||
|
|
||||||
diff --git a/lib/isc/include/pk11/internal.h b/lib/isc/include/pk11/internal.h
|
|
||||||
index aa8907a..603712a 100644
|
|
||||||
--- a/lib/isc/include/pk11/internal.h
|
|
||||||
+++ b/lib/isc/include/pk11/internal.h
|
|
||||||
@@ -13,6 +13,8 @@
|
|
||||||
#ifndef PK11_INTERNAL_H
|
|
||||||
#define PK11_INTERNAL_H 1
|
|
||||||
|
|
||||||
+#include <pk11/pk11.h>
|
|
||||||
+
|
|
||||||
/*! \file pk11/internal.h */
|
|
||||||
|
|
||||||
ISC_LANG_BEGINDECLS
|
|
@ -1,120 +0,0 @@
|
|||||||
From 90416594843a56550e40b11561807786219ce1c4 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Evan Hunt <each@isc.org>
|
|
||||||
Date: Mon, 11 Sep 2017 15:01:36 -0700
|
|
||||||
Subject: [PATCH] remap getaddrinfo() to irs_getgetaddrinfo()
|
|
||||||
|
|
||||||
The libirs version of getaddrinfo() cannot be called from within BIND9.
|
|
||||||
|
|
||||||
fix prototypes
|
|
||||||
---
|
|
||||||
lib/irs/include/irs/netdb.h.in | 94 ++++++++++++++++++++++++++++++++++++++++++
|
|
||||||
1 file changed, 94 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/lib/irs/include/irs/netdb.h.in b/lib/irs/include/irs/netdb.h.in
|
|
||||||
index 23dcd37..f36113d 100644
|
|
||||||
--- a/lib/irs/include/irs/netdb.h.in
|
|
||||||
+++ b/lib/irs/include/irs/netdb.h.in
|
|
||||||
@@ -150,6 +150,100 @@ struct addrinfo {
|
|
||||||
#define NI_DGRAM 0x00000010
|
|
||||||
|
|
||||||
/*
|
|
||||||
+ * Define to map into irs_ namespace.
|
|
||||||
+ */
|
|
||||||
+
|
|
||||||
+#define IRS_NAMESPACE
|
|
||||||
+
|
|
||||||
+#ifdef IRS_NAMESPACE
|
|
||||||
+
|
|
||||||
+/*
|
|
||||||
+ * Use our versions not the ones from the C library.
|
|
||||||
+ */
|
|
||||||
+
|
|
||||||
+#ifdef getnameinfo
|
|
||||||
+#undef getnameinfo
|
|
||||||
+#endif
|
|
||||||
+#define getnameinfo irs_getnameinfo
|
|
||||||
+
|
|
||||||
+#ifdef getaddrinfo
|
|
||||||
+#undef getaddrinfo
|
|
||||||
+#endif
|
|
||||||
+#define getaddrinfo irs_getaddrinfo
|
|
||||||
+
|
|
||||||
+#ifdef freeaddrinfo
|
|
||||||
+#undef freeaddrinfo
|
|
||||||
+#endif
|
|
||||||
+#define freeaddrinfo irs_freeaddrinfo
|
|
||||||
+
|
|
||||||
+#ifdef gai_strerror
|
|
||||||
+#undef gai_strerror
|
|
||||||
+#endif
|
|
||||||
+#define gai_strerror irs_gai_strerror
|
|
||||||
+
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
+extern int getaddrinfo (const char *name,
|
|
||||||
+ const char *service,
|
|
||||||
+ const struct addrinfo *req,
|
|
||||||
+ struct addrinfo **pai);
|
|
||||||
+extern int getnameinfo (const struct sockaddr *sa,
|
|
||||||
+ socklen_t salen, char *host,
|
|
||||||
+ socklen_t hostlen, char *serv,
|
|
||||||
+ socklen_t servlen, int flags);
|
|
||||||
+extern void freeaddrinfo (struct addrinfo *ai);
|
|
||||||
+extern const char *gai_strerror (int ecode);
|
|
||||||
+
|
|
||||||
+/*
|
|
||||||
+ * Define to map into irs_ namespace.
|
|
||||||
+ */
|
|
||||||
+
|
|
||||||
+#define IRS_NAMESPACE
|
|
||||||
+
|
|
||||||
+#ifdef IRS_NAMESPACE
|
|
||||||
+
|
|
||||||
+/*
|
|
||||||
+ * Use our versions not the ones from the C library.
|
|
||||||
+ */
|
|
||||||
+
|
|
||||||
+#ifdef getnameinfo
|
|
||||||
+#undef getnameinfo
|
|
||||||
+#endif
|
|
||||||
+#define getnameinfo irs_getnameinfo
|
|
||||||
+
|
|
||||||
+#ifdef getaddrinfo
|
|
||||||
+#undef getaddrinfo
|
|
||||||
+#endif
|
|
||||||
+#define getaddrinfo irs_getaddrinfo
|
|
||||||
+
|
|
||||||
+#ifdef freeaddrinfo
|
|
||||||
+#undef freeaddrinfo
|
|
||||||
+#endif
|
|
||||||
+#define freeaddrinfo irs_freeaddrinfo
|
|
||||||
+
|
|
||||||
+#ifdef gai_strerror
|
|
||||||
+#undef gai_strerror
|
|
||||||
+#endif
|
|
||||||
+#define gai_strerror irs_gai_strerror
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+getaddrinfo(const char *hostname, const char *servname,
|
|
||||||
+ const struct addrinfo *hints, struct addrinfo **res);
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+getnameinfo(const struct sockaddr *sa, IRS_GETNAMEINFO_SOCKLEN_T salen,
|
|
||||||
+ char *host, IRS_GETNAMEINFO_BUFLEN_T hostlen,
|
|
||||||
+ char *serv, IRS_GETNAMEINFO_BUFLEN_T servlen,
|
|
||||||
+ IRS_GETNAMEINFO_FLAGS_T flags);
|
|
||||||
+
|
|
||||||
+void freeaddrinfo (struct addrinfo *ai);
|
|
||||||
+
|
|
||||||
+IRS_GAISTRERROR_RETURN_T
|
|
||||||
+gai_strerror(int ecode);
|
|
||||||
+
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
+/*
|
|
||||||
* Tell Emacs to use C mode on this file.
|
|
||||||
* Local variables:
|
|
||||||
* mode: c
|
|
||||||
--
|
|
||||||
2.9.5
|
|
||||||
|
|
@ -1,16 +0,0 @@
|
|||||||
diff --git a/lib/dns/dyndb.c b/lib/dns/dyndb.c
|
|
||||||
index 15561ce..e4449b0 100644
|
|
||||||
--- a/lib/dns/dyndb.c
|
|
||||||
+++ b/lib/dns/dyndb.c
|
|
||||||
@@ -133,8 +133,11 @@ load_library(isc_mem_t *mctx, const char *filename, const char *instname,
|
|
||||||
instname, filename);
|
|
||||||
|
|
||||||
flags = RTLD_NOW|RTLD_LOCAL;
|
|
||||||
+#if 0
|
|
||||||
+ /* Shared global namespace is required for dns-pkcs11 library */
|
|
||||||
#if defined(RTLD_DEEPBIND) && !__SANITIZE_ADDRESS__
|
|
||||||
flags |= RTLD_DEEPBIND;
|
|
||||||
+#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
handle = dlopen(filename, flags);
|
|
29
SOURCES/bind-9.11-rh1666814.patch
Normal file
29
SOURCES/bind-9.11-rh1666814.patch
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
From 0f03071080e7fa68433b322359d46abaca2cc5ad Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Petr=20Men=C5=A1=C3=ADk?= <pemensik@redhat.com>
|
||||||
|
Date: Wed, 16 Jan 2019 16:27:33 +0100
|
||||||
|
Subject: [PATCH] Fix possible crash when loading corrupted file
|
||||||
|
|
||||||
|
Some values passes internal triggers by coincidence. Fix the check and
|
||||||
|
check also first_node_offset before even passing it further.
|
||||||
|
---
|
||||||
|
lib/dns/rbt.c | 4 +++-
|
||||||
|
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/lib/dns/rbt.c b/lib/dns/rbt.c
|
||||||
|
index 5aee5f6..7f2c2d2 100644
|
||||||
|
--- a/lib/dns/rbt.c
|
||||||
|
+++ b/lib/dns/rbt.c
|
||||||
|
@@ -945,7 +945,9 @@ dns_rbt_deserialize_tree(void *base_address, size_t filesize,
|
||||||
|
rbt->root = (dns_rbtnode_t *)((char *)base_address + header_offset +
|
||||||
|
header->first_node_offset);
|
||||||
|
|
||||||
|
- if ((header->nodecount * sizeof(dns_rbtnode_t)) > filesize) {
|
||||||
|
+ if ((header->nodecount * sizeof(dns_rbtnode_t)) > filesize
|
||||||
|
+ || header->first_node_offset > filesize) {
|
||||||
|
+
|
||||||
|
result = ISC_R_INVALIDFILE;
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.31.1
|
||||||
|
|
@ -1,37 +0,0 @@
|
|||||||
From 16c1bd61384e993fef13d7be88fdd34551a2b3ce Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?Petr=20Men=C5=A1=C3=ADk?= <pemensik@redhat.com>
|
|
||||||
Date: Wed, 23 Jan 2019 20:12:51 +0100
|
|
||||||
Subject: [PATCH] Use custom random generator only for bind build
|
|
||||||
|
|
||||||
Do not test random entropy on startup when used by DHCP. On most cases
|
|
||||||
random entropy is not even used by DHCP. In cases it is (LDAP SSL), fail
|
|
||||||
whenever it is not available.
|
|
||||||
|
|
||||||
Resolves: rhbz#1668682
|
|
||||||
---
|
|
||||||
lib/dns/openssl_link.c | 2 ++
|
|
||||||
1 file changed, 2 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/lib/dns/openssl_link.c b/lib/dns/openssl_link.c
|
|
||||||
index 91e87d0..2551b0a 100644
|
|
||||||
--- a/lib/dns/openssl_link.c
|
|
||||||
+++ b/lib/dns/openssl_link.c
|
|
||||||
@@ -289,6 +289,7 @@ dst__openssl_init(const char *engine) {
|
|
||||||
#endif
|
|
||||||
#endif /* !defined(OPENSSL_NO_ENGINE) */
|
|
||||||
|
|
||||||
+#ifdef ISC_PLATFORM_USETHREADS
|
|
||||||
/* Protect ourselves against unseeded PRNG */
|
|
||||||
if (RAND_status() != 1) {
|
|
||||||
FATAL_ERROR(__FILE__, __LINE__,
|
|
||||||
@@ -296,6 +297,7 @@ dst__openssl_init(const char *engine) {
|
|
||||||
"cannot be initialized (see the `PRNG not "
|
|
||||||
"seeded' message in the OpenSSL FAQ)");
|
|
||||||
}
|
|
||||||
+#endif /* ISC_PLATFORM_USETHREADS */
|
|
||||||
|
|
||||||
return (ISC_R_SUCCESS);
|
|
||||||
|
|
||||||
--
|
|
||||||
2.20.1
|
|
||||||
|
|
@ -1,32 +0,0 @@
|
|||||||
From a503519533eb375a5ce1f7566bfc153aac980d87 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Petr Mensik <pemensik@redhat.com>
|
|
||||||
Date: Fri, 9 Jul 2021 20:52:21 +0200
|
|
||||||
Subject: [PATCH] Use proper entropy to initialize tsig keyname
|
|
||||||
|
|
||||||
Random names used on GSS backed nsupdate can conflict in specific
|
|
||||||
situations. That might include starting a lot of machines from
|
|
||||||
containers, where they took all similar time to start. PID and timestamp
|
|
||||||
would be similar and therefore randomness is quite low. Use entropy to
|
|
||||||
generate more random identifier and reduce chance of conflict.
|
|
||||||
---
|
|
||||||
bin/nsupdate/nsupdate.c | 4 +++-
|
|
||||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/bin/nsupdate/nsupdate.c b/bin/nsupdate/nsupdate.c
|
|
||||||
index 458aa76..d9e5a2b 100644
|
|
||||||
--- a/bin/nsupdate/nsupdate.c
|
|
||||||
+++ b/bin/nsupdate/nsupdate.c
|
|
||||||
@@ -2941,7 +2941,9 @@ start_gssrequest(dns_name_t *master) {
|
|
||||||
|
|
||||||
keyname = dns_fixedname_initname(&fkname);
|
|
||||||
|
|
||||||
- isc_random_get(&val);
|
|
||||||
+ result = isc_entropy_getdata(entropy, &val, sizeof(val), NULL, 0);
|
|
||||||
+ if (result != ISC_R_SUCCESS)
|
|
||||||
+ isc_random_get(&val);
|
|
||||||
result = isc_string_printf(mykeystr, sizeof(mykeystr), "%u.sig-%s",
|
|
||||||
val, namestr);
|
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
--
|
|
||||||
2.31.1
|
|
||||||
|
|
@ -1,232 +0,0 @@
|
|||||||
From fff2960981a3294ac641968a17558c8d7eecf74d Mon Sep 17 00:00:00 2001
|
|
||||||
From: Mark Andrews <marka@isc.org>
|
|
||||||
Date: Wed, 24 Aug 2022 12:21:50 +1000
|
|
||||||
Subject: [PATCH] Have dns_zt_apply lock the zone table
|
|
||||||
|
|
||||||
There where a number of places where the zone table should have
|
|
||||||
been locked, but wasn't, when dns_zt_apply was called.
|
|
||||||
|
|
||||||
Added a isc_rwlocktype_t type parameter to dns_zt_apply and adjusted
|
|
||||||
all calls to using it. Removed locks in callers.
|
|
||||||
|
|
||||||
Modified upstream commit for v9_11
|
|
||||||
---
|
|
||||||
bin/named/server.c | 11 ++++++-----
|
|
||||||
bin/named/statschannel.c | 8 ++++----
|
|
||||||
lib/dns/include/dns/zt.h | 4 ++--
|
|
||||||
lib/dns/tests/zt_test.c | 3 ++-
|
|
||||||
lib/dns/view.c | 3 ++-
|
|
||||||
lib/dns/zt.c | 34 +++++++++++++++++++---------------
|
|
||||||
6 files changed, 35 insertions(+), 28 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/bin/named/server.c b/bin/named/server.c
|
|
||||||
index 9826588e6d..0b4b309461 100644
|
|
||||||
--- a/bin/named/server.c
|
|
||||||
+++ b/bin/named/server.c
|
|
||||||
@@ -8723,8 +8723,8 @@ load_configuration(const char *filename, ns_server_t *server,
|
|
||||||
strcmp(view->name, "_bind") != 0)
|
|
||||||
{
|
|
||||||
dns_view_setviewrevert(view);
|
|
||||||
- (void)dns_zt_apply(view->zonetable, false,
|
|
||||||
- removed, view);
|
|
||||||
+ (void)dns_zt_apply(view->zonetable, isc_rwlocktype_read,
|
|
||||||
+ false, removed, view);
|
|
||||||
}
|
|
||||||
dns_view_detach(&view);
|
|
||||||
}
|
|
||||||
@@ -10090,8 +10090,8 @@ add_view_tolist(struct dumpcontext *dctx, dns_view_t *view) {
|
|
||||||
ISC_LIST_INIT(vle->zonelist);
|
|
||||||
ISC_LIST_APPEND(dctx->viewlist, vle, link);
|
|
||||||
if (dctx->dumpzones)
|
|
||||||
- result = dns_zt_apply(view->zonetable, true,
|
|
||||||
- add_zone_tolist, dctx);
|
|
||||||
+ result = dns_zt_apply(view->zonetable, isc_rwlocktype_read,
|
|
||||||
+ true, add_zone_tolist, dctx);
|
|
||||||
return (result);
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -11367,7 +11367,8 @@ ns_server_sync(ns_server_t *server, isc_lex_t *lex, isc_buffer_t **text) {
|
|
||||||
for (view = ISC_LIST_HEAD(server->viewlist);
|
|
||||||
view != NULL;
|
|
||||||
view = ISC_LIST_NEXT(view, link)) {
|
|
||||||
- result = dns_zt_apply(view->zonetable, false,
|
|
||||||
+ result = dns_zt_apply(view->zonetable,
|
|
||||||
+ isc_rwlocktype_none, false,
|
|
||||||
synczone, &cleanup);
|
|
||||||
if (result != ISC_R_SUCCESS &&
|
|
||||||
tresult == ISC_R_SUCCESS)
|
|
||||||
diff --git a/bin/named/statschannel.c b/bin/named/statschannel.c
|
|
||||||
index 12ab048469..9828df0f4e 100644
|
|
||||||
--- a/bin/named/statschannel.c
|
|
||||||
+++ b/bin/named/statschannel.c
|
|
||||||
@@ -1833,8 +1833,8 @@ generatexml(ns_server_t *server, uint32_t flags,
|
|
||||||
if ((flags & STATS_XML_ZONES) != 0) {
|
|
||||||
TRY0(xmlTextWriterStartElement(writer,
|
|
||||||
ISC_XMLCHAR "zones"));
|
|
||||||
- result = dns_zt_apply(view->zonetable, true,
|
|
||||||
- zone_xmlrender, writer);
|
|
||||||
+ result = dns_zt_apply(view->zonetable, isc_rwlocktype_read,
|
|
||||||
+ true, zone_xmlrender, writer);
|
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto error;
|
|
||||||
TRY0(xmlTextWriterEndElement(writer)); /* /zones */
|
|
||||||
@@ -2489,8 +2489,8 @@ generatejson(ns_server_t *server, size_t *msglen,
|
|
||||||
CHECKMEM(za);
|
|
||||||
|
|
||||||
if ((flags & STATS_JSON_ZONES) != 0) {
|
|
||||||
- result = dns_zt_apply(view->zonetable, true,
|
|
||||||
- zone_jsonrender, za);
|
|
||||||
+ result = dns_zt_apply(view->zonetable, isc_rwlocktype_read,
|
|
||||||
+ true, zone_jsonrender, za);
|
|
||||||
if (result != ISC_R_SUCCESS) {
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
diff --git a/lib/dns/include/dns/zt.h b/lib/dns/include/dns/zt.h
|
|
||||||
index e658e5bb67..94212250da 100644
|
|
||||||
--- a/lib/dns/include/dns/zt.h
|
|
||||||
+++ b/lib/dns/include/dns/zt.h
|
|
||||||
@@ -177,11 +177,11 @@ dns_zt_freezezones(dns_zt_t *zt, bool freeze);
|
|
||||||
*/
|
|
||||||
|
|
||||||
isc_result_t
|
|
||||||
-dns_zt_apply(dns_zt_t *zt, bool stop,
|
|
||||||
+dns_zt_apply(dns_zt_t *zt, isc_rwlocktype_t lock, bool stop,
|
|
||||||
isc_result_t (*action)(dns_zone_t *, void *), void *uap);
|
|
||||||
|
|
||||||
isc_result_t
|
|
||||||
-dns_zt_apply2(dns_zt_t *zt, bool stop, isc_result_t *sub,
|
|
||||||
+dns_zt_apply2(dns_zt_t *zt, isc_rwlocktype_t lock, bool stop, isc_result_t *sub,
|
|
||||||
isc_result_t (*action)(dns_zone_t *, void *), void *uap);
|
|
||||||
/*%<
|
|
||||||
* Apply a given 'action' to all zone zones in the table.
|
|
||||||
diff --git a/lib/dns/tests/zt_test.c b/lib/dns/tests/zt_test.c
|
|
||||||
index 3f1e812d60..ee75303a50 100644
|
|
||||||
--- a/lib/dns/tests/zt_test.c
|
|
||||||
+++ b/lib/dns/tests/zt_test.c
|
|
||||||
@@ -145,7 +145,8 @@ apply(void **state) {
|
|
||||||
assert_non_null(view->zonetable);
|
|
||||||
|
|
||||||
assert_int_equal(nzones, 0);
|
|
||||||
- result = dns_zt_apply(view->zonetable, false, count_zone, &nzones);
|
|
||||||
+ result = dns_zt_apply2(view->zonetable, isc_rwlocktype_read, false, NULL,
|
|
||||||
+ count_zone, &nzones);
|
|
||||||
assert_int_equal(result, ISC_R_SUCCESS);
|
|
||||||
assert_int_equal(nzones, 1);
|
|
||||||
|
|
||||||
diff --git a/lib/dns/view.c b/lib/dns/view.c
|
|
||||||
index f01b4dea0f..bd1ced2863 100644
|
|
||||||
--- a/lib/dns/view.c
|
|
||||||
+++ b/lib/dns/view.c
|
|
||||||
@@ -676,7 +676,8 @@ dns_view_dialup(dns_view_t *view) {
|
|
||||||
REQUIRE(DNS_VIEW_VALID(view));
|
|
||||||
REQUIRE(view->zonetable != NULL);
|
|
||||||
|
|
||||||
- (void)dns_zt_apply(view->zonetable, false, dialup, NULL);
|
|
||||||
+ (void)dns_zt_apply2(view->zonetable, isc_rwlocktype_read, false, NULL,
|
|
||||||
+ dialup, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
diff --git a/lib/dns/zt.c b/lib/dns/zt.c
|
|
||||||
index 3f12e247e0..af65740325 100644
|
|
||||||
--- a/lib/dns/zt.c
|
|
||||||
+++ b/lib/dns/zt.c
|
|
||||||
@@ -202,7 +202,8 @@ flush(dns_zone_t *zone, void *uap) {
|
|
||||||
static void
|
|
||||||
zt_destroy(dns_zt_t *zt) {
|
|
||||||
if (zt->flush) {
|
|
||||||
- (void)dns_zt_apply(zt, false, flush, NULL);
|
|
||||||
+ (void)dns_zt_apply(zt, isc_rwlocktype_none,
|
|
||||||
+ false, flush, NULL);
|
|
||||||
}
|
|
||||||
isc_refcount_destroy(&zt->references);
|
|
||||||
dns_rbt_destroy(&zt->table);
|
|
||||||
@@ -249,9 +250,7 @@ dns_zt_load(dns_zt_t *zt, bool stop) {
|
|
||||||
|
|
||||||
REQUIRE(VALID_ZT(zt));
|
|
||||||
|
|
||||||
- RWLOCK(&zt->rwlock, isc_rwlocktype_read);
|
|
||||||
- result = dns_zt_apply(zt, stop, load, NULL);
|
|
||||||
- RWUNLOCK(&zt->rwlock, isc_rwlocktype_read);
|
|
||||||
+ result = dns_zt_apply2(zt, isc_rwlocktype_read, stop, NULL, load, NULL);
|
|
||||||
return (result);
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -293,7 +292,7 @@ dns_zt_asyncload2(dns_zt_t *zt, dns_zt_allloaded_t alldone, void *arg,
|
|
||||||
* Prevent loads_pending going to zero while kicking off the loads.
|
|
||||||
*/
|
|
||||||
zt->loads_pending++;
|
|
||||||
- result = dns_zt_apply2(zt, false, NULL, asyncload, ¶ms);
|
|
||||||
+ result = dns_zt_apply2(zt, isc_rwlocktype_none, false, NULL, asyncload, ¶ms);
|
|
||||||
pending = --zt->loads_pending;
|
|
||||||
if (pending != 0) {
|
|
||||||
zt->loaddone = alldone;
|
|
||||||
@@ -342,9 +341,7 @@ dns_zt_loadnew(dns_zt_t *zt, bool stop) {
|
|
||||||
|
|
||||||
REQUIRE(VALID_ZT(zt));
|
|
||||||
|
|
||||||
- RWLOCK(&zt->rwlock, isc_rwlocktype_read);
|
|
||||||
- result = dns_zt_apply(zt, stop, loadnew, NULL);
|
|
||||||
- RWUNLOCK(&zt->rwlock, isc_rwlocktype_read);
|
|
||||||
+ result = dns_zt_apply(zt, isc_rwlocktype_read, stop, loadnew, NULL);
|
|
||||||
return (result);
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -366,9 +363,7 @@ dns_zt_freezezones(dns_zt_t *zt, bool freeze) {
|
|
||||||
|
|
||||||
REQUIRE(VALID_ZT(zt));
|
|
||||||
|
|
||||||
- RWLOCK(&zt->rwlock, isc_rwlocktype_read);
|
|
||||||
- result = dns_zt_apply2(zt, false, &tresult, freezezones, &freeze);
|
|
||||||
- RWUNLOCK(&zt->rwlock, isc_rwlocktype_read);
|
|
||||||
+ result = dns_zt_apply2(zt, isc_rwlocktype_read, false, &tresult, freezezones, &freeze);
|
|
||||||
if (tresult == ISC_R_NOTFOUND)
|
|
||||||
tresult = ISC_R_SUCCESS;
|
|
||||||
return ((result == ISC_R_SUCCESS) ? tresult : result);
|
|
||||||
@@ -490,14 +485,14 @@ dns_zt_setviewrevert(dns_zt_t *zt) {
|
|
||||||
}
|
|
||||||
|
|
||||||
isc_result_t
|
|
||||||
-dns_zt_apply(dns_zt_t *zt, bool stop,
|
|
||||||
+dns_zt_apply(dns_zt_t *zt, isc_rwlocktype_t lock, bool stop,
|
|
||||||
isc_result_t (*action)(dns_zone_t *, void *), void *uap)
|
|
||||||
{
|
|
||||||
- return (dns_zt_apply2(zt, stop, NULL, action, uap));
|
|
||||||
+ return (dns_zt_apply2(zt, lock, stop, NULL, action, uap));
|
|
||||||
}
|
|
||||||
|
|
||||||
isc_result_t
|
|
||||||
-dns_zt_apply2(dns_zt_t *zt, bool stop, isc_result_t *sub,
|
|
||||||
+dns_zt_apply2(dns_zt_t *zt, isc_rwlocktype_t lock, bool stop, isc_result_t *sub,
|
|
||||||
isc_result_t (*action)(dns_zone_t *, void *), void *uap)
|
|
||||||
{
|
|
||||||
dns_rbtnode_t *node;
|
|
||||||
@@ -508,6 +503,10 @@ dns_zt_apply2(dns_zt_t *zt, bool stop, isc_result_t *sub,
|
|
||||||
REQUIRE(VALID_ZT(zt));
|
|
||||||
REQUIRE(action != NULL);
|
|
||||||
|
|
||||||
+ if (lock != isc_rwlocktype_none) {
|
|
||||||
+ RWLOCK(&zt->rwlock, lock);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
dns_rbtnodechain_init(&chain, zt->mctx);
|
|
||||||
result = dns_rbtnodechain_first(&chain, zt->table, NULL, NULL);
|
|
||||||
if (result == ISC_R_NOTFOUND) {
|
|
||||||
@@ -538,8 +537,13 @@ dns_zt_apply2(dns_zt_t *zt, bool stop, isc_result_t *sub,
|
|
||||||
|
|
||||||
cleanup:
|
|
||||||
dns_rbtnodechain_invalidate(&chain);
|
|
||||||
- if (sub != NULL)
|
|
||||||
+ if (sub != NULL) {
|
|
||||||
*sub = tresult;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (lock != isc_rwlocktype_none) {
|
|
||||||
+ RWUNLOCK(&zt->rwlock, lock);
|
|
||||||
+ }
|
|
||||||
|
|
||||||
return (result);
|
|
||||||
}
|
|
||||||
--
|
|
||||||
2.37.2
|
|
||||||
|
|
@ -1,26 +0,0 @@
|
|||||||
From c8f5b31f0637315c1c45d0287f05fcad2250f40f Mon Sep 17 00:00:00 2001
|
|
||||||
From: Petr Mensik <pemensik@redhat.com>
|
|
||||||
Date: Thu, 13 Oct 2022 15:35:46 +0200
|
|
||||||
Subject: [PATCH] Add include to rwlocktype_t to dns/zt.h
|
|
||||||
|
|
||||||
It got broken as part of bug #2101712 fix. Introduced new definition,
|
|
||||||
which passes during bind build, but breaks bind-dyndb-ldap build.
|
|
||||||
---
|
|
||||||
lib/dns/include/dns/zt.h | 1 +
|
|
||||||
1 file changed, 1 insertion(+)
|
|
||||||
|
|
||||||
diff --git a/lib/dns/include/dns/zt.h b/lib/dns/include/dns/zt.h
|
|
||||||
index 9421225..64c24d6 100644
|
|
||||||
--- a/lib/dns/include/dns/zt.h
|
|
||||||
+++ b/lib/dns/include/dns/zt.h
|
|
||||||
@@ -18,6 +18,7 @@
|
|
||||||
#include <stdbool.h>
|
|
||||||
|
|
||||||
#include <isc/lang.h>
|
|
||||||
+#include <isc/rwlock.h>
|
|
||||||
|
|
||||||
#include <dns/types.h>
|
|
||||||
|
|
||||||
--
|
|
||||||
2.37.3
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
@ -1,780 +0,0 @@
|
|||||||
From af3b530773231f8cff6548e36962ad1f25e38c5d Mon Sep 17 00:00:00 2001
|
|
||||||
From: Evan Hunt <each@isc.org>
|
|
||||||
Date: Thu, 28 Sep 2017 10:09:22 -0700
|
|
||||||
Subject: [PATCH] completed and corrected the crypto-random change
|
|
||||||
|
|
||||||
4724. [func] By default, BIND now uses the random number
|
|
||||||
functions provided by the crypto library (i.e.,
|
|
||||||
OpenSSL or a PKCS#11 provider) as a source of
|
|
||||||
randomness rather than /dev/random. This is
|
|
||||||
suitable for virtual machine environments
|
|
||||||
which have limited entropy pools and lack
|
|
||||||
hardware random number generators.
|
|
||||||
|
|
||||||
This can be overridden by specifying another
|
|
||||||
entropy source via the "random-device" option
|
|
||||||
in named.conf, or via the -r command line option;
|
|
||||||
however, for functions requiring full cryptographic
|
|
||||||
strength, such as DNSSEC key generation, this
|
|
||||||
cannot be overridden. In particular, the -r
|
|
||||||
command line option no longer has any effect on
|
|
||||||
dnssec-keygen.
|
|
||||||
|
|
||||||
This can be disabled by building with
|
|
||||||
"configure --disable-crypto-rand".
|
|
||||||
[RT #31459] [RT #46047]
|
|
||||||
---
|
|
||||||
bin/confgen/keygen.c | 12 +++---
|
|
||||||
bin/dnssec/dnssec-keygen.docbook | 24 +++++++----
|
|
||||||
bin/dnssec/dnssectool.c | 12 +++---
|
|
||||||
bin/named/client.c | 3 +-
|
|
||||||
bin/named/config.c | 4 +-
|
|
||||||
bin/named/controlconf.c | 19 +++++---
|
|
||||||
bin/named/include/named/server.h | 2 +
|
|
||||||
bin/named/interfacemgr.c | 1 +
|
|
||||||
bin/named/query.c | 1 +
|
|
||||||
bin/named/server.c | 52 ++++++++++++++--------
|
|
||||||
bin/nsupdate/nsupdate.c | 4 +-
|
|
||||||
bin/tests/system/pipelined/pipequeries.c | 4 +-
|
|
||||||
bin/tests/system/tkey/keycreate.c | 4 +-
|
|
||||||
bin/tests/system/tkey/keydelete.c | 5 +--
|
|
||||||
doc/arm/Bv9ARM-book.xml | 55 +++++++++++++++++-------
|
|
||||||
doc/arm/notes-rh-changes.xml | 42 ++++++++++++++++++
|
|
||||||
doc/arm/notes.xml | 1 +
|
|
||||||
lib/dns/dst_api.c | 4 +-
|
|
||||||
lib/dns/include/dst/dst.h | 14 +++++-
|
|
||||||
lib/dns/openssl_link.c | 3 +-
|
|
||||||
lib/isc/include/isc/entropy.h | 48 +++++++++++++++------
|
|
||||||
lib/isc/include/isc/random.h | 26 +++++++----
|
|
||||||
lib/isccfg/namedconf.c | 2 +-
|
|
||||||
23 files changed, 240 insertions(+), 102 deletions(-)
|
|
||||||
create mode 100644 doc/arm/notes-rh-changes.xml
|
|
||||||
|
|
||||||
diff --git a/bin/confgen/keygen.c b/bin/confgen/keygen.c
|
|
||||||
index bd269e7..1ac775f 100644
|
|
||||||
--- a/bin/confgen/keygen.c
|
|
||||||
+++ b/bin/confgen/keygen.c
|
|
||||||
@@ -161,17 +161,15 @@ generate_key(isc_mem_t *mctx, const char *randomfile, dns_secalg_t alg,
|
|
||||||
|
|
||||||
DO("create entropy context", isc_entropy_create(mctx, &ectx));
|
|
||||||
|
|
||||||
- if (randomfile != NULL && strcmp(randomfile, "keyboard") == 0) {
|
|
||||||
- randomfile = NULL;
|
|
||||||
- open_keyboard = ISC_ENTROPY_KEYBOARDYES;
|
|
||||||
- }
|
|
||||||
#ifdef ISC_PLATFORM_CRYPTORANDOM
|
|
||||||
- if (randomfile != NULL &&
|
|
||||||
- strcmp(randomfile, ISC_PLATFORM_CRYPTORANDOM) == 0) {
|
|
||||||
- randomfile = NULL;
|
|
||||||
+ if (randomfile == NULL) {
|
|
||||||
isc_entropy_usehook(ectx, true);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
+ if (randomfile != NULL && strcmp(randomfile, "keyboard") == 0) {
|
|
||||||
+ randomfile = NULL;
|
|
||||||
+ open_keyboard = ISC_ENTROPY_KEYBOARDYES;
|
|
||||||
+ }
|
|
||||||
DO("start entropy source", isc_entropy_usebestsource(ectx,
|
|
||||||
&entropy_source,
|
|
||||||
randomfile,
|
|
||||||
diff --git a/bin/dnssec/dnssec-keygen.docbook b/bin/dnssec/dnssec-keygen.docbook
|
|
||||||
index bd19e1d..2c09b30 100644
|
|
||||||
--- a/bin/dnssec/dnssec-keygen.docbook
|
|
||||||
+++ b/bin/dnssec/dnssec-keygen.docbook
|
|
||||||
@@ -349,15 +349,23 @@
|
|
||||||
<term>-r <replaceable class="parameter">randomdev</replaceable></term>
|
|
||||||
<listitem>
|
|
||||||
<para>
|
|
||||||
- Specifies the source of randomness. If the operating
|
|
||||||
- system does not provide a <filename>/dev/random</filename>
|
|
||||||
- or equivalent device, the default source of randomness
|
|
||||||
- is keyboard input. <filename>randomdev</filename>
|
|
||||||
- specifies
|
|
||||||
+ Specifies a source of randomness. Normally, when generating
|
|
||||||
+ DNSSEC keys, this option has no effect; the random number
|
|
||||||
+ generation function provided by the cryptographic library will
|
|
||||||
+ be used.
|
|
||||||
+ </para>
|
|
||||||
+ <para>
|
|
||||||
+ If that behavior is disabled at compile time, however,
|
|
||||||
+ the specified file will be used as entropy source
|
|
||||||
+ for key generation. <filename>randomdev</filename> is
|
|
||||||
the name of a character device or file containing random
|
|
||||||
- data to be used instead of the default. The special value
|
|
||||||
- <filename>keyboard</filename> indicates that keyboard
|
|
||||||
- input should be used.
|
|
||||||
+ data to be used. The special value <filename>keyboard</filename>
|
|
||||||
+ indicates that keyboard input should be used.
|
|
||||||
+ </para>
|
|
||||||
+ <para>
|
|
||||||
+ The default is <filename>/dev/random</filename> if the
|
|
||||||
+ operating system provides it or an equivalent device;
|
|
||||||
+ if not, the default source of randomness is keyboard input.
|
|
||||||
</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
diff --git a/bin/dnssec/dnssectool.c b/bin/dnssec/dnssectool.c
|
|
||||||
index 2a0f9c6..6fcd411 100644
|
|
||||||
--- a/bin/dnssec/dnssectool.c
|
|
||||||
+++ b/bin/dnssec/dnssectool.c
|
|
||||||
@@ -241,18 +241,16 @@ setup_entropy(isc_mem_t *mctx, const char *randomfile, isc_entropy_t **ectx) {
|
|
||||||
ISC_LIST_INIT(sources);
|
|
||||||
}
|
|
||||||
|
|
||||||
+#ifdef ISC_PLATFORM_CRYPTORANDOM
|
|
||||||
+ if (randomfile == NULL) {
|
|
||||||
+ isc_entropy_usehook(*ectx, true);
|
|
||||||
+ }
|
|
||||||
+#endif
|
|
||||||
if (randomfile != NULL && strcmp(randomfile, "keyboard") == 0) {
|
|
||||||
usekeyboard = ISC_ENTROPY_KEYBOARDYES;
|
|
||||||
randomfile = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
-#ifdef ISC_PLATFORM_CRYPTORANDOM
|
|
||||||
- if (randomfile != NULL &&
|
|
||||||
- strcmp(randomfile, ISC_PLATFORM_CRYPTORANDOM) == 0) {
|
|
||||||
- randomfile = NULL;
|
|
||||||
- isc_entropy_usehook(*ectx, true);
|
|
||||||
- }
|
|
||||||
-#endif
|
|
||||||
result = isc_entropy_usebestsource(*ectx, &source, randomfile,
|
|
||||||
usekeyboard);
|
|
||||||
|
|
||||||
diff --git a/bin/named/client.c b/bin/named/client.c
|
|
||||||
index 4a50ad9..4d140e8 100644
|
|
||||||
--- a/bin/named/client.c
|
|
||||||
+++ b/bin/named/client.c
|
|
||||||
@@ -1768,7 +1768,8 @@ ns_client_addopt(ns_client_t *client, dns_message_t *message,
|
|
||||||
|
|
||||||
isc_buffer_init(&buf, cookie, sizeof(cookie));
|
|
||||||
isc_stdtime_get(&now);
|
|
||||||
- isc_random_get(&nonce);
|
|
||||||
+ nonce = ((isc_rng_random(ns_g_server->rngctx) << 16) |
|
|
||||||
+ isc_rng_random(ns_g_server->rngctx));
|
|
||||||
|
|
||||||
compute_cookie(client, now, nonce, ns_g_server->secret, &buf);
|
|
||||||
|
|
||||||
diff --git a/bin/named/config.c b/bin/named/config.c
|
|
||||||
index 9b343fa..5e663c6 100644
|
|
||||||
--- a/bin/named/config.c
|
|
||||||
+++ b/bin/named/config.c
|
|
||||||
@@ -98,7 +98,9 @@ options {\n\
|
|
||||||
# pid-file \"" NS_LOCALSTATEDIR "/run/named/named.pid\"; /* or /lwresd.pid */\n\
|
|
||||||
port 53;\n\
|
|
||||||
prefetch 2 9;\n"
|
|
||||||
-#ifdef PATH_RANDOMDEV
|
|
||||||
+#if defined(ISC_PLATFORM_CRYPTORANDOM)
|
|
||||||
+" random-device none;\n"
|
|
||||||
+#elif defined(PATH_RANDOMDEV)
|
|
||||||
" random-device \"" PATH_RANDOMDEV "\";\n"
|
|
||||||
#endif
|
|
||||||
" recursing-file \"named.recursing\";\n\
|
|
||||||
diff --git a/bin/named/controlconf.c b/bin/named/controlconf.c
|
|
||||||
index 9fdf49b..42128dc 100644
|
|
||||||
--- a/bin/named/controlconf.c
|
|
||||||
+++ b/bin/named/controlconf.c
|
|
||||||
@@ -327,9 +327,10 @@ log_invalid(isccc_ccmsg_t *ccmsg, isc_result_t result) {
|
|
||||||
|
|
||||||
static void
|
|
||||||
control_recvmessage(isc_task_t *task, isc_event_t *event) {
|
|
||||||
- controlconnection_t *conn;
|
|
||||||
- controllistener_t *listener;
|
|
||||||
- controlkey_t *key;
|
|
||||||
+ controlconnection_t *conn = NULL;
|
|
||||||
+ controllistener_t *listener = NULL;
|
|
||||||
+ ns_server_t *server = NULL;
|
|
||||||
+ controlkey_t *key = NULL;
|
|
||||||
isccc_sexpr_t *request = NULL;
|
|
||||||
isccc_sexpr_t *response = NULL;
|
|
||||||
uint32_t algorithm;
|
|
||||||
@@ -340,16 +341,17 @@ control_recvmessage(isc_task_t *task, isc_event_t *event) {
|
|
||||||
isc_buffer_t *text;
|
|
||||||
isc_result_t result;
|
|
||||||
isc_result_t eresult;
|
|
||||||
- isccc_sexpr_t *_ctrl;
|
|
||||||
+ isccc_sexpr_t *_ctrl = NULL;
|
|
||||||
isccc_time_t sent;
|
|
||||||
isccc_time_t exp;
|
|
||||||
uint32_t nonce;
|
|
||||||
- isccc_sexpr_t *data;
|
|
||||||
+ isccc_sexpr_t *data = NULL;
|
|
||||||
|
|
||||||
REQUIRE(event->ev_type == ISCCC_EVENT_CCMSG);
|
|
||||||
|
|
||||||
conn = event->ev_arg;
|
|
||||||
listener = conn->listener;
|
|
||||||
+ server = listener->controls->server;
|
|
||||||
algorithm = DST_ALG_UNKNOWN;
|
|
||||||
secret.rstart = NULL;
|
|
||||||
text = NULL;
|
|
||||||
@@ -462,8 +464,11 @@ control_recvmessage(isc_task_t *task, isc_event_t *event) {
|
|
||||||
* Establish nonce.
|
|
||||||
*/
|
|
||||||
if (conn->nonce == 0) {
|
|
||||||
- while (conn->nonce == 0)
|
|
||||||
- isc_random_get(&conn->nonce);
|
|
||||||
+ while (conn->nonce == 0) {
|
|
||||||
+ uint16_t r1 = isc_rng_random(server->rngctx);
|
|
||||||
+ uint16_t r2 = isc_rng_random(server->rngctx);
|
|
||||||
+ conn->nonce = (r1 << 16) | r2;
|
|
||||||
+ }
|
|
||||||
eresult = ISC_R_SUCCESS;
|
|
||||||
} else
|
|
||||||
eresult = ns_control_docommand(request, listener->readonly, &text);
|
|
||||||
diff --git a/bin/named/include/named/server.h b/bin/named/include/named/server.h
|
|
||||||
index 4fd0194..0ba2627 100644
|
|
||||||
--- a/bin/named/include/named/server.h
|
|
||||||
+++ b/bin/named/include/named/server.h
|
|
||||||
@@ -20,6 +20,7 @@
|
|
||||||
#include <isc/log.h>
|
|
||||||
#include <isc/magic.h>
|
|
||||||
#include <isc/quota.h>
|
|
||||||
+#include <isc/random.h>
|
|
||||||
#include <isc/sockaddr.h>
|
|
||||||
#include <isc/types.h>
|
|
||||||
#include <isc/xml.h>
|
|
||||||
@@ -135,6 +136,7 @@ struct ns_server {
|
|
||||||
char * lockfile;
|
|
||||||
|
|
||||||
uint16_t transfer_tcp_message_size;
|
|
||||||
+ isc_rng_t * rngctx;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct ns_altsecret {
|
|
||||||
diff --git a/bin/named/interfacemgr.c b/bin/named/interfacemgr.c
|
|
||||||
index 93aac31..e12fad9 100644
|
|
||||||
--- a/bin/named/interfacemgr.c
|
|
||||||
+++ b/bin/named/interfacemgr.c
|
|
||||||
@@ -17,6 +17,7 @@
|
|
||||||
|
|
||||||
#include <isc/interfaceiter.h>
|
|
||||||
#include <isc/os.h>
|
|
||||||
+#include <isc/random.h>
|
|
||||||
#include <isc/string.h>
|
|
||||||
#include <isc/task.h>
|
|
||||||
#include <isc/util.h>
|
|
||||||
diff --git a/bin/named/query.c b/bin/named/query.c
|
|
||||||
index 58b5914..edf42d2 100644
|
|
||||||
--- a/bin/named/query.c
|
|
||||||
+++ b/bin/named/query.c
|
|
||||||
@@ -20,6 +20,7 @@
|
|
||||||
#include <isc/mem.h>
|
|
||||||
#include <isc/platform.h>
|
|
||||||
#include <isc/print.h>
|
|
||||||
+#include <isc/random.h>
|
|
||||||
#include <isc/rwlock.h>
|
|
||||||
#include <isc/serial.h>
|
|
||||||
#include <isc/stats.h>
|
|
||||||
diff --git a/bin/named/server.c b/bin/named/server.c
|
|
||||||
index b2ae57c..cca7fe8 100644
|
|
||||||
--- a/bin/named/server.c
|
|
||||||
+++ b/bin/named/server.c
|
|
||||||
@@ -8279,21 +8279,32 @@ load_configuration(const char *filename, ns_server_t *server,
|
|
||||||
* Open the source of entropy.
|
|
||||||
*/
|
|
||||||
if (first_time) {
|
|
||||||
+ const char *randomdev = NULL;
|
|
||||||
+ int level = ISC_LOG_ERROR;
|
|
||||||
obj = NULL;
|
|
||||||
result = ns_config_get(maps, "random-device", &obj);
|
|
||||||
- if (result != ISC_R_SUCCESS) {
|
|
||||||
+ if (result == ISC_R_SUCCESS) {
|
|
||||||
+ if (!cfg_obj_isvoid(obj)) {
|
|
||||||
+ level = ISC_LOG_INFO;
|
|
||||||
+ randomdev = cfg_obj_asstring(obj);
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ if (randomdev == NULL) {
|
|
||||||
+#ifdef ISC_PLATFORM_CRYPTORANDOM
|
|
||||||
+ isc_entropy_usehook(ns_g_entropy, true);
|
|
||||||
+#else
|
|
||||||
+ if ((obj != NULL) && !cfg_obj_isvoid(obj))
|
|
||||||
+ level = ISC_LOG_INFO;
|
|
||||||
isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL,
|
|
||||||
- NS_LOGMODULE_SERVER, ISC_LOG_INFO,
|
|
||||||
+ NS_LOGMODULE_SERVER, level,
|
|
||||||
"no source of entropy found");
|
|
||||||
+ if ((obj == NULL) || cfg_obj_isvoid(obj)) {
|
|
||||||
+ CHECK(ISC_R_FAILURE);
|
|
||||||
+ }
|
|
||||||
+#endif
|
|
||||||
} else {
|
|
||||||
- const char *randomdev = cfg_obj_asstring(obj);
|
|
||||||
-#ifdef ISC_PLATFORM_CRYPTORANDOM
|
|
||||||
- if (strcmp(randomdev, ISC_PLATFORM_CRYPTORANDOM) == 0)
|
|
||||||
- isc_entropy_usehook(ns_g_entropy, true);
|
|
||||||
-#else
|
|
||||||
- int level = ISC_LOG_ERROR;
|
|
||||||
result = isc_entropy_createfilesource(ns_g_entropy,
|
|
||||||
- randomdev);
|
|
||||||
+ randomdev);
|
|
||||||
#ifdef PATH_RANDOMDEV
|
|
||||||
if (ns_g_fallbackentropy != NULL) {
|
|
||||||
level = ISC_LOG_INFO;
|
|
||||||
@@ -8304,8 +8315,8 @@ load_configuration(const char *filename, ns_server_t *server,
|
|
||||||
NS_LOGCATEGORY_GENERAL,
|
|
||||||
NS_LOGMODULE_SERVER,
|
|
||||||
level,
|
|
||||||
- "could not open entropy source "
|
|
||||||
- "%s: %s",
|
|
||||||
+ "could not open "
|
|
||||||
+ "entropy source %s: %s",
|
|
||||||
randomdev,
|
|
||||||
isc_result_totext(result));
|
|
||||||
}
|
|
||||||
@@ -8325,7 +8336,6 @@ load_configuration(const char *filename, ns_server_t *server,
|
|
||||||
}
|
|
||||||
isc_entropy_detach(&ns_g_fallbackentropy);
|
|
||||||
}
|
|
||||||
-#endif
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -9097,6 +9107,7 @@ ns_server_create(isc_mem_t *mctx, ns_server_t **serverp) {
|
|
||||||
server->in_roothints = NULL;
|
|
||||||
server->blackholeacl = NULL;
|
|
||||||
server->keepresporder = NULL;
|
|
||||||
+ server->rngctx = NULL;
|
|
||||||
|
|
||||||
/* Must be first. */
|
|
||||||
CHECKFATAL(dst_lib_init2(ns_g_mctx, ns_g_entropy,
|
|
||||||
@@ -9123,6 +9134,9 @@ ns_server_create(isc_mem_t *mctx, ns_server_t **serverp) {
|
|
||||||
CHECKFATAL(dns_tkeyctx_create(ns_g_mctx, ns_g_entropy,
|
|
||||||
&server->tkeyctx),
|
|
||||||
"creating TKEY context");
|
|
||||||
+ server->rngctx = NULL;
|
|
||||||
+ CHECKFATAL(isc_rng_create(ns_g_mctx, ns_g_entropy, &server->rngctx),
|
|
||||||
+ "creating random numbers context");
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Setup the server task, which is responsible for coordinating
|
|
||||||
@@ -9329,7 +9343,8 @@ ns_server_destroy(ns_server_t **serverp) {
|
|
||||||
|
|
||||||
if (server->zonemgr != NULL)
|
|
||||||
dns_zonemgr_detach(&server->zonemgr);
|
|
||||||
-
|
|
||||||
+ if (server->rngctx != NULL)
|
|
||||||
+ isc_rng_detach(&server->rngctx);
|
|
||||||
if (server->tkeyctx != NULL)
|
|
||||||
dns_tkeyctx_destroy(&server->tkeyctx);
|
|
||||||
|
|
||||||
@@ -13366,10 +13381,10 @@ newzone_cfgctx_destroy(void **cfgp) {
|
|
||||||
|
|
||||||
static isc_result_t
|
|
||||||
generate_salt(unsigned char *salt, size_t saltlen) {
|
|
||||||
- int i, n;
|
|
||||||
+ size_t i, n;
|
|
||||||
union {
|
|
||||||
unsigned char rnd[256];
|
|
||||||
- uint32_t rnd32[64];
|
|
||||||
+ uint16_t rnd16[128];
|
|
||||||
} rnd;
|
|
||||||
unsigned char text[512 + 1];
|
|
||||||
isc_region_t r;
|
|
||||||
@@ -13379,9 +13394,10 @@ generate_salt(unsigned char *salt, size_t saltlen) {
|
|
||||||
if (saltlen > 256U)
|
|
||||||
return (ISC_R_RANGE);
|
|
||||||
|
|
||||||
- n = (int) (saltlen + sizeof(uint32_t) - 1) / sizeof(uint32_t);
|
|
||||||
- for (i = 0; i < n; i++)
|
|
||||||
- isc_random_get(&rnd.rnd32[i]);
|
|
||||||
+ n = (saltlen + sizeof(uint16_t) - 1) / sizeof(uint16_t);
|
|
||||||
+ for (i = 0; i < n; i++) {
|
|
||||||
+ rnd.rnd16[i] = isc_rng_random(ns_g_server->rngctx);
|
|
||||||
+ }
|
|
||||||
|
|
||||||
memmove(salt, rnd.rnd, saltlen);
|
|
||||||
|
|
||||||
diff --git a/bin/nsupdate/nsupdate.c b/bin/nsupdate/nsupdate.c
|
|
||||||
index 7f15cbc..458aa76 100644
|
|
||||||
--- a/bin/nsupdate/nsupdate.c
|
|
||||||
+++ b/bin/nsupdate/nsupdate.c
|
|
||||||
@@ -289,9 +289,7 @@ setup_entropy(isc_mem_t *mctx, const char *randomfile, isc_entropy_t **ectx) {
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef ISC_PLATFORM_CRYPTORANDOM
|
|
||||||
- if (randomfile != NULL &&
|
|
||||||
- strcmp(randomfile, ISC_PLATFORM_CRYPTORANDOM) == 0) {
|
|
||||||
- randomfile = NULL;
|
|
||||||
+ if (randomfile == NULL) {
|
|
||||||
isc_entropy_usehook(*ectx, true);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
diff --git a/bin/tests/system/pipelined/pipequeries.c b/bin/tests/system/pipelined/pipequeries.c
|
|
||||||
index 95b65bf..7a81d4e 100644
|
|
||||||
--- a/bin/tests/system/pipelined/pipequeries.c
|
|
||||||
+++ b/bin/tests/system/pipelined/pipequeries.c
|
|
||||||
@@ -280,9 +280,7 @@ main(int argc, char *argv[]) {
|
|
||||||
ectx = NULL;
|
|
||||||
RUNCHECK(isc_entropy_create(mctx, &ectx));
|
|
||||||
#ifdef ISC_PLATFORM_CRYPTORANDOM
|
|
||||||
- if (randomfile != NULL &&
|
|
||||||
- strcmp(randomfile, ISC_PLATFORM_CRYPTORANDOM) == 0) {
|
|
||||||
- randomfile = NULL;
|
|
||||||
+ if (randomfile == NULL) {
|
|
||||||
isc_entropy_usehook(ectx, true);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
diff --git a/bin/tests/system/tkey/keycreate.c b/bin/tests/system/tkey/keycreate.c
|
|
||||||
index 3236968..4fa77b6 100644
|
|
||||||
--- a/bin/tests/system/tkey/keycreate.c
|
|
||||||
+++ b/bin/tests/system/tkey/keycreate.c
|
|
||||||
@@ -255,9 +255,7 @@ main(int argc, char *argv[]) {
|
|
||||||
ectx = NULL;
|
|
||||||
RUNCHECK(isc_entropy_create(mctx, &ectx));
|
|
||||||
#ifdef ISC_PLATFORM_CRYPTORANDOM
|
|
||||||
- if (randomfile != NULL &&
|
|
||||||
- strcmp(randomfile, ISC_PLATFORM_CRYPTORANDOM) == 0) {
|
|
||||||
- randomfile = NULL;
|
|
||||||
+ if (randomfile == NULL) {
|
|
||||||
isc_entropy_usehook(ectx, true);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
diff --git a/bin/tests/system/tkey/keydelete.c b/bin/tests/system/tkey/keydelete.c
|
|
||||||
index 43fb6b0..105e151 100644
|
|
||||||
--- a/bin/tests/system/tkey/keydelete.c
|
|
||||||
+++ b/bin/tests/system/tkey/keydelete.c
|
|
||||||
@@ -171,6 +171,7 @@ main(int argc, char **argv) {
|
|
||||||
randomfile = argv[2];
|
|
||||||
argv += 2;
|
|
||||||
argc -= 2;
|
|
||||||
+ POST(argc);
|
|
||||||
}
|
|
||||||
keyname = argv[1];
|
|
||||||
|
|
||||||
@@ -182,9 +183,7 @@ main(int argc, char **argv) {
|
|
||||||
ectx = NULL;
|
|
||||||
RUNCHECK(isc_entropy_create(mctx, &ectx));
|
|
||||||
#ifdef ISC_PLATFORM_CRYPTORANDOM
|
|
||||||
- if (randomfile != NULL &&
|
|
||||||
- strcmp(randomfile, ISC_PLATFORM_CRYPTORANDOM) == 0) {
|
|
||||||
- randomfile = NULL;
|
|
||||||
+ if (randomfile == NULL) {
|
|
||||||
isc_entropy_usehook(ectx, true);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
diff --git a/doc/arm/Bv9ARM-book.xml b/doc/arm/Bv9ARM-book.xml
|
|
||||||
index ca98726..1f9df2c 100644
|
|
||||||
--- a/doc/arm/Bv9ARM-book.xml
|
|
||||||
+++ b/doc/arm/Bv9ARM-book.xml
|
|
||||||
@@ -5034,22 +5034,45 @@ badresp:1,adberr:0,findfail:0,valfail:0]
|
|
||||||
<term><command>random-device</command></term>
|
|
||||||
<listitem>
|
|
||||||
<para>
|
|
||||||
- This specifies a source of entropy to be used by the server. Entropy is
|
|
||||||
- primarily needed
|
|
||||||
- for DNSSEC operations, such as TKEY transactions and dynamic
|
|
||||||
- update of signed
|
|
||||||
- zones. This option specifies the device (or file) from which
|
|
||||||
- to read
|
|
||||||
- entropy. If it is a file, operations requiring entropy will
|
|
||||||
- fail when the
|
|
||||||
- file has been exhausted. If <command>random-device</command> is not specified, the default value
|
|
||||||
- is
|
|
||||||
- <filename>/dev/random</filename>
|
|
||||||
- (or equivalent) when present, and none otherwise. The
|
|
||||||
- <command>random-device</command> option takes
|
|
||||||
- effect during
|
|
||||||
- the initial configuration load at server startup time and
|
|
||||||
- is ignored on subsequent reloads.
|
|
||||||
+ Specifies a source of entropy to be used by the server.
|
|
||||||
+ This is a device or file from which to read entropy.
|
|
||||||
+ If it is a file, operations requiring entropy
|
|
||||||
+ will fail when the file has been exhausted.
|
|
||||||
+ </para>
|
|
||||||
+ <para>
|
|
||||||
+ Entropy is needed for cryptographic operations such as
|
|
||||||
+ TKEY transactions, dynamic update of signed zones, and
|
|
||||||
+ generation of TSIG session keys. It is also used for
|
|
||||||
+ seeding and stirring the pseudo-random number generator,
|
|
||||||
+ which is used for less critical functions requiring
|
|
||||||
+ randomness such as generation of DNS message transaction
|
|
||||||
+ ID's.
|
|
||||||
+ </para>
|
|
||||||
+ <para>
|
|
||||||
+ If <command>random-device</command> is not specified, or
|
|
||||||
+ if it is set to <literal>none</literal>, entropy will be
|
|
||||||
+ read from the random number generation function supplied
|
|
||||||
+ by the cryptographic library with which BIND was linked
|
|
||||||
+ (i.e. OpenSSL or a PKCS#11 provider).
|
|
||||||
+ </para>
|
|
||||||
+ <para>
|
|
||||||
+ The <command>random-device</command> option takes
|
|
||||||
+ effect during the initial configuration load at server
|
|
||||||
+ startup time and is ignored on subsequent reloads.
|
|
||||||
+ </para>
|
|
||||||
+ <para>
|
|
||||||
+ If BIND is built with
|
|
||||||
+ <command>configure --disable-crypto-rand</command>, then
|
|
||||||
+ entropy is <emphasis>not</emphasis> sourced from the
|
|
||||||
+ cryptographic library. In this case, if
|
|
||||||
+ <command>random-device</command> is not specified, the
|
|
||||||
+ default value is the system random device,
|
|
||||||
+ <filename>/dev/random</filename> or the equivalent.
|
|
||||||
+ This default can be overridden with
|
|
||||||
+ <command>configure --with-randomdev</command>.
|
|
||||||
+ If no system random device exists, then no entropy source
|
|
||||||
+ will be configured, and <command>named</command> will only
|
|
||||||
+ be able to use pseudo-random numbers.
|
|
||||||
</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
diff --git a/doc/arm/notes-rh-changes.xml b/doc/arm/notes-rh-changes.xml
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000..89a4961
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/doc/arm/notes-rh-changes.xml
|
|
||||||
@@ -0,0 +1,42 @@
|
|
||||||
+<!--
|
|
||||||
+ - Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
|
||||||
+ -
|
|
||||||
+ - This Source Code Form is subject to the terms of the Mozilla Public
|
|
||||||
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
||||||
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
||||||
+ -
|
|
||||||
+ - See the COPYRIGHT file distributed with this work for additional
|
|
||||||
+ - information regarding copyright ownership.
|
|
||||||
+-->
|
|
||||||
+
|
|
||||||
+<section xml:id="relnotes_rh_changes"><info><title>Red Hat Specific Changes</title></info>
|
|
||||||
+ <itemizedlist>
|
|
||||||
+ <listitem>
|
|
||||||
+ <para>
|
|
||||||
+ By default, BIND now uses the random number generation functions
|
|
||||||
+ in the cryptographic library (i.e., OpenSSL or a PKCS#11
|
|
||||||
+ provider) as a source of high-quality randomness rather than
|
|
||||||
+ <filename>/dev/random</filename>. This is suitable for virtual
|
|
||||||
+ machine environments, which may have limited entropy pools and
|
|
||||||
+ lack hardware random number generators.
|
|
||||||
+ </para>
|
|
||||||
+ <para>
|
|
||||||
+ This can be overridden by specifying another entropy source via
|
|
||||||
+ the <command>random-device</command> option in
|
|
||||||
+ <filename>named.conf</filename>, or via the <command>-r</command>
|
|
||||||
+ command line option. However, for functions requiring full
|
|
||||||
+ cryptographic strength, such as DNSSEC key generation, this
|
|
||||||
+ <emphasis>cannot</emphasis> be overridden. In particular, the
|
|
||||||
+ <command>-r</command> command line option no longer has any
|
|
||||||
+ effect on <command>dnssec-keygen</command>.
|
|
||||||
+ </para>
|
|
||||||
+ <para>
|
|
||||||
+ This can be disabled by building with
|
|
||||||
+ <command>configure --disable-crypto-rand</command>, in which
|
|
||||||
+ case <filename>/dev/random</filename> will be the default
|
|
||||||
+ entropy source. [RT #31459] [RT #46047]
|
|
||||||
+ </para>
|
|
||||||
+ </listitem>
|
|
||||||
+ </itemizedlist>
|
|
||||||
+</section>
|
|
||||||
+
|
|
||||||
diff --git a/doc/arm/notes.xml b/doc/arm/notes.xml
|
|
||||||
index a5e42c0..f8cb1f9 100644
|
|
||||||
--- a/doc/arm/notes.xml
|
|
||||||
+++ b/doc/arm/notes.xml
|
|
||||||
@@ -47,6 +47,7 @@
|
|
||||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="notes-9.11.1.xml"/>
|
|
||||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="notes-9.11.0.xml"/>
|
|
||||||
|
|
||||||
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="notes-rh-changes.xml"/>
|
|
||||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="notes-eol.xml"/>
|
|
||||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="notes-thankyou.xml"/>
|
|
||||||
</section>
|
|
||||||
diff --git a/lib/dns/dst_api.c b/lib/dns/dst_api.c
|
|
||||||
index aa54afc..2156384 100644
|
|
||||||
--- a/lib/dns/dst_api.c
|
|
||||||
+++ b/lib/dns/dst_api.c
|
|
||||||
@@ -2017,10 +2017,12 @@ dst__entropy_getdata(void *buf, unsigned int len, bool pseudo) {
|
|
||||||
else
|
|
||||||
flags |= ISC_ENTROPY_BLOCKING;
|
|
||||||
#ifdef ISC_PLATFORM_CRYPTORANDOM
|
|
||||||
+ /* get entropy directly from crypto provider */
|
|
||||||
return (dst_random_getdata(buf, len, NULL, flags));
|
|
||||||
#else
|
|
||||||
+ /* get entropy from entropy source or hook function */
|
|
||||||
return (isc_entropy_getdata(dst_entropy_pool, buf, len, NULL, flags));
|
|
||||||
-#endif
|
|
||||||
+#endif /* ISC_PLATFORM_CRYPTORANDOM */
|
|
||||||
#endif /* PKCS11CRYPTO */
|
|
||||||
}
|
|
||||||
|
|
||||||
diff --git a/lib/dns/include/dst/dst.h b/lib/dns/include/dst/dst.h
|
|
||||||
index 3aba028..180c841 100644
|
|
||||||
--- a/lib/dns/include/dst/dst.h
|
|
||||||
+++ b/lib/dns/include/dst/dst.h
|
|
||||||
@@ -163,8 +163,18 @@ isc_result_t
|
|
||||||
dst_random_getdata(void *data, unsigned int length,
|
|
||||||
unsigned int *returned, unsigned int flags);
|
|
||||||
/*%<
|
|
||||||
- * \brief Return data from the crypto random generator.
|
|
||||||
- * Specialization of isc_entropy_getdata().
|
|
||||||
+ * Gets random data from the random generator provided by the
|
|
||||||
+ * crypto library, if BIND was built with --enable-crypto-rand.
|
|
||||||
+ *
|
|
||||||
+ * See isc_entropy_getdata() for parameter usage. Normally when
|
|
||||||
+ * this function is available, it will be set up as a hook in the
|
|
||||||
+ * entropy context, so that isc_entropy_getdata() is a front-end to
|
|
||||||
+ * this function.
|
|
||||||
+ *
|
|
||||||
+ * Returns:
|
|
||||||
+ * \li ISC_R_SUCCESS on success
|
|
||||||
+ * \li ISC_R_NOTIMPLEMENTED if BIND is built with --disable-crypto-rand
|
|
||||||
+ * \li DST_R_OPENSSLFAILURE, DST_R_CRYPTOFAILURE, or other codes on error
|
|
||||||
*/
|
|
||||||
|
|
||||||
bool
|
|
||||||
diff --git a/lib/dns/openssl_link.c b/lib/dns/openssl_link.c
|
|
||||||
index 3f4f822..cfdc757 100644
|
|
||||||
--- a/lib/dns/openssl_link.c
|
|
||||||
+++ b/lib/dns/openssl_link.c
|
|
||||||
@@ -484,7 +484,8 @@ dst__openssl_getengine(const char *engine) {
|
|
||||||
|
|
||||||
isc_result_t
|
|
||||||
dst_random_getdata(void *data, unsigned int length,
|
|
||||||
- unsigned int *returned, unsigned int flags) {
|
|
||||||
+ unsigned int *returned, unsigned int flags)
|
|
||||||
+{
|
|
||||||
#ifdef ISC_PLATFORM_CRYPTORANDOM
|
|
||||||
#ifndef DONT_REQUIRE_DST_LIB_INIT
|
|
||||||
INSIST(dst__memory_pool != NULL);
|
|
||||||
diff --git a/lib/isc/include/isc/entropy.h b/lib/isc/include/isc/entropy.h
|
|
||||||
index f32c9dc..bed276b 100644
|
|
||||||
--- a/lib/isc/include/isc/entropy.h
|
|
||||||
+++ b/lib/isc/include/isc/entropy.h
|
|
||||||
@@ -189,9 +189,8 @@ isc_entropy_createcallbacksource(isc_entropy_t *ent,
|
|
||||||
/*!<
|
|
||||||
* \brief Create an entropy source that is polled via a callback.
|
|
||||||
*
|
|
||||||
- * This would
|
|
||||||
- * be used when keyboard input is used, or a GUI input method. It can
|
|
||||||
- * also be used to hook in any external entropy source.
|
|
||||||
+ * This would be used when keyboard input is used, or a GUI input method.
|
|
||||||
+ * It can also be used to hook in any external entropy source.
|
|
||||||
*
|
|
||||||
* Samples are added via isc_entropy_addcallbacksample(), below.
|
|
||||||
* _addcallbacksample() is the only function which may be called from
|
|
||||||
@@ -232,15 +231,32 @@ isc_result_t
|
|
||||||
isc_entropy_getdata(isc_entropy_t *ent, void *data, unsigned int length,
|
|
||||||
unsigned int *returned, unsigned int flags);
|
|
||||||
/*!<
|
|
||||||
- * \brief Extract data from the entropy pool. This may load the pool from various
|
|
||||||
- * sources.
|
|
||||||
+ * \brief Get random data from entropy pool 'ent'.
|
|
||||||
*
|
|
||||||
- * Do this by stirring the pool and returning a part of hash as randomness.
|
|
||||||
- * Note that no secrets are given away here since parts of the hash are
|
|
||||||
- * xored together before returned.
|
|
||||||
+ * If a hook has been set up using isc_entropy_sethook() and
|
|
||||||
+ * isc_entropy_usehook(), then the hook function will be called to get
|
|
||||||
+ * random data.
|
|
||||||
*
|
|
||||||
- * Honor the request from the caller to only return good data, any data,
|
|
||||||
- * etc.
|
|
||||||
+ * Otherwise, randomness is extracted from the entropy pool set up in BIND.
|
|
||||||
+ * This may cause the pool to be loaded from various sources. Ths is done
|
|
||||||
+ * by stirring the pool and returning a part of hash as randomness.
|
|
||||||
+ * (Note that no secrets are given away here since parts of the hash are
|
|
||||||
+ * XORed together before returning.)
|
|
||||||
+ *
|
|
||||||
+ * 'flags' may contain ISC_ENTROPY_GOODONLY, ISC_ENTROPY_PARTIAL, or
|
|
||||||
+ * ISC_ENTROPY_BLOCKING. These will be honored if the hook function is
|
|
||||||
+ * not in use. If it is, the flags will be passed to the hook function
|
|
||||||
+ * but it may ignore them.
|
|
||||||
+ *
|
|
||||||
+ * Up to 'length' bytes of randomness are retrieved and copied into 'data'.
|
|
||||||
+ * (If 'returned' is not NULL, and the number of bytes copied is less than
|
|
||||||
+ * 'length' - which may happen if ISC_ENTROPY_PARTIAL was used - then the
|
|
||||||
+ * number of bytes copied will be stored in *returned.)
|
|
||||||
+ *
|
|
||||||
+ * Returns:
|
|
||||||
+ * \li ISC_R_SUCCESS on success
|
|
||||||
+ * \li ISC_R_NOENTROPY if entropy pool is empty
|
|
||||||
+ * \li other error codes are possible when a hook is in use
|
|
||||||
*/
|
|
||||||
|
|
||||||
void
|
|
||||||
@@ -305,13 +321,21 @@ isc_entropy_usebestsource(isc_entropy_t *ectx, isc_entropysource_t **source,
|
|
||||||
void
|
|
||||||
isc_entropy_usehook(isc_entropy_t *ectx, bool onoff);
|
|
||||||
/*!<
|
|
||||||
- * \brief Mark/unmark the given entropy structure as being hooked.
|
|
||||||
+ * \brief Configure entropy context 'ectx' to use the hook function
|
|
||||||
+ *
|
|
||||||
+ * Sets the entropy context to call the hook function for random number
|
|
||||||
+ * generation, if such a function has been configured via
|
|
||||||
+ * isc_entropy_sethook(), whenever isc_entropy_getdata() is called.
|
|
||||||
*/
|
|
||||||
|
|
||||||
void
|
|
||||||
isc_entropy_sethook(isc_entropy_getdata_t myhook);
|
|
||||||
/*!<
|
|
||||||
- * \brief Set the getdata hook (e.g., for a crypto random generator).
|
|
||||||
+ * \brief Set the hook function.
|
|
||||||
+ *
|
|
||||||
+ * The hook function is a global value: only one hook function
|
|
||||||
+ * can be set in the system. Individual entropy contexts may be
|
|
||||||
+ * configured to use it, or not, by calling isc_entropy_usehook().
|
|
||||||
*/
|
|
||||||
|
|
||||||
ISC_LANG_ENDDECLS
|
|
||||||
diff --git a/lib/isc/include/isc/random.h b/lib/isc/include/isc/random.h
|
|
||||||
index f38e80d..3cb1c56 100644
|
|
||||||
--- a/lib/isc/include/isc/random.h
|
|
||||||
+++ b/lib/isc/include/isc/random.h
|
|
||||||
@@ -19,13 +19,23 @@
|
|
||||||
#include <isc/mutex.h>
|
|
||||||
|
|
||||||
/*! \file isc/random.h
|
|
||||||
- * \brief Implements a random state pool which will let the caller return a
|
|
||||||
- * series of possibly non-reproducible random values.
|
|
||||||
+ * \brief Implements pseudo random number generators.
|
|
||||||
*
|
|
||||||
- * Note that the
|
|
||||||
- * strength of these numbers is not all that high, and should not be
|
|
||||||
- * used in cryptography functions. It is useful for jittering values
|
|
||||||
- * a bit here and there, such as timeouts, etc.
|
|
||||||
+ * Two pseudo-random number generators are implemented, in isc_random_*
|
|
||||||
+ * and isc_rng_*. Neither one is very strong; they should not be used
|
|
||||||
+ * in cryptography functions.
|
|
||||||
+ *
|
|
||||||
+ * isc_random_* is based on arc4random if it is available on the system.
|
|
||||||
+ * Otherwise it is based on the posix srand() and rand() functions.
|
|
||||||
+ * It is useful for jittering values a bit here and there, such as
|
|
||||||
+ * timeouts, etc, but should not be relied upon to generate
|
|
||||||
+ * unpredictable sequences (for example, when choosing transaction IDs).
|
|
||||||
+ *
|
|
||||||
+ * isc_rng_* is based on ChaCha20, and is seeded and stirred from the
|
|
||||||
+ * system entropy source. It is stronger than isc_random_* and can
|
|
||||||
+ * be used for generating unpredictable sequences. It is still not as
|
|
||||||
+ * good as using system entropy directly (see entropy.h) and should not
|
|
||||||
+ * be used for cryptographic functions such as key generation.
|
|
||||||
*/
|
|
||||||
|
|
||||||
ISC_LANG_BEGINDECLS
|
|
||||||
@@ -113,8 +123,8 @@ isc_rng_random(isc_rng_t *rngctx);
|
|
||||||
uint16_t
|
|
||||||
isc_rng_uniformrandom(isc_rng_t *rngctx, uint16_t upper_bound);
|
|
||||||
/*%<
|
|
||||||
- * Returns a uniformly distributed pseudo random 16-bit unsigned
|
|
||||||
- * integer.
|
|
||||||
+ * Returns a uniformly distributed pseudo-random 16-bit unsigned integer
|
|
||||||
+ * less than 'upper_bound'.
|
|
||||||
*/
|
|
||||||
|
|
||||||
ISC_LANG_ENDDECLS
|
|
||||||
diff --git a/lib/isccfg/namedconf.c b/lib/isccfg/namedconf.c
|
|
||||||
index e74c93b..212194e 100644
|
|
||||||
--- a/lib/isccfg/namedconf.c
|
|
||||||
+++ b/lib/isccfg/namedconf.c
|
|
||||||
@@ -1109,7 +1109,7 @@ options_clauses[] = {
|
|
||||||
{ "pid-file", &cfg_type_qstringornone, 0 },
|
|
||||||
{ "port", &cfg_type_uint32, 0 },
|
|
||||||
{ "querylog", &cfg_type_boolean, 0 },
|
|
||||||
- { "random-device", &cfg_type_qstring, 0 },
|
|
||||||
+ { "random-device", &cfg_type_qstringornone, 0 },
|
|
||||||
{ "recursing-file", &cfg_type_qstring, 0 },
|
|
||||||
{ "recursive-clients", &cfg_type_uint32, 0 },
|
|
||||||
{ "reserved-sockets", &cfg_type_uint32, 0 },
|
|
||||||
--
|
|
||||||
2.26.2
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
@ -1,65 +0,0 @@
|
|||||||
From 8a7bff93037432fcfe8532752e89f150ea3030a4 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Petr Mensik <pemensik@redhat.com>
|
|
||||||
Date: Mon, 9 Oct 2023 19:00:12 +0200
|
|
||||||
Subject: [PATCH] Do not keep stale records by default
|
|
||||||
|
|
||||||
By default set max-stale-ttl to 0, unless stale-answer-enable yes. This
|
|
||||||
were enabled by mistake when backporting fix for CVE-2023-2828. It
|
|
||||||
causes increased cache usage on servers not wanting to serve stale
|
|
||||||
records. Fix that by setting smart defaults based on stale answers
|
|
||||||
enabled with possible manual tuning.
|
|
||||||
---
|
|
||||||
bin/named/server.c | 25 +++++++++++++++++++------
|
|
||||||
1 file changed, 19 insertions(+), 6 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/bin/named/server.c b/bin/named/server.c
|
|
||||||
index 7af90d0..afdc4fa 100644
|
|
||||||
--- a/bin/named/server.c
|
|
||||||
+++ b/bin/named/server.c
|
|
||||||
@@ -3295,7 +3295,7 @@ configure_view(dns_view_t *view, dns_viewlist_t *viewlist,
|
|
||||||
size_t max_acache_size;
|
|
||||||
size_t max_adb_size;
|
|
||||||
uint32_t lame_ttl, fail_ttl;
|
|
||||||
- uint32_t max_stale_ttl;
|
|
||||||
+ uint32_t max_stale_ttl = 0;
|
|
||||||
dns_tsig_keyring_t *ring = NULL;
|
|
||||||
dns_view_t *pview = NULL; /* Production view */
|
|
||||||
isc_mem_t *cmctx = NULL, *hmctx = NULL;
|
|
||||||
@@ -3739,16 +3739,29 @@ configure_view(dns_view_t *view, dns_viewlist_t *viewlist,
|
|
||||||
if (view->maxncachettl > 7 * 24 * 3600)
|
|
||||||
view->maxncachettl = 7 * 24 * 3600;
|
|
||||||
|
|
||||||
- obj = NULL;
|
|
||||||
- result = ns_config_get(maps, "max-stale-ttl", &obj);
|
|
||||||
- INSIST(result == ISC_R_SUCCESS);
|
|
||||||
- max_stale_ttl = cfg_obj_asuint32(obj);
|
|
||||||
-
|
|
||||||
obj = NULL;
|
|
||||||
result = ns_config_get(maps, "stale-answer-enable", &obj);
|
|
||||||
INSIST(result == ISC_R_SUCCESS);
|
|
||||||
view->staleanswersenable = cfg_obj_asboolean(obj);
|
|
||||||
|
|
||||||
+ // RHEL-11785 -- set the stale-ttl to non-zero value only if enabled
|
|
||||||
+ obj = NULL;
|
|
||||||
+ if (view->staleanswersenable) {
|
|
||||||
+ result = ns_config_get(maps, "max-stale-ttl", &obj);
|
|
||||||
+ INSIST(result == ISC_R_SUCCESS);
|
|
||||||
+ max_stale_ttl = cfg_obj_asuint32(obj);
|
|
||||||
+ /*
|
|
||||||
+ * If 'stale-answer-enable' is false, max_stale_ttl is set
|
|
||||||
+ * to 0, meaning keeping stale RRsets in cache is disabled.
|
|
||||||
+ */
|
|
||||||
+ } else {
|
|
||||||
+ /* Do not use default value if stale is disabled,
|
|
||||||
+ * but allow manual overriding, like 'stale-cache-enable' */
|
|
||||||
+ result = ns_config_get(optionmaps, "max-stale-ttl", &obj);
|
|
||||||
+ if (result == ISC_R_SUCCESS)
|
|
||||||
+ max_stale_ttl = cfg_obj_asuint32(obj);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
result = dns_viewlist_find(&ns_g_server->viewlist, view->name,
|
|
||||||
view->rdclass, &pview);
|
|
||||||
if (result == ISC_R_SUCCESS) {
|
|
||||||
--
|
|
||||||
2.41.0
|
|
||||||
|
|
65
SOURCES/bind-9.11-tests-variants.patch
Normal file
65
SOURCES/bind-9.11-tests-variants.patch
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
From 607cec78382b016aad0fe041f2e1895b6896c647 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Petr Mensik <pemensik@redhat.com>
|
||||||
|
Date: Fri, 1 Mar 2019 15:48:20 +0100
|
||||||
|
Subject: [PATCH] Make alternative named builds testable in system tests
|
||||||
|
|
||||||
|
Red Hat has alternative variant builds of named, which are not ever
|
||||||
|
tested by system tests. New variables make it relatively easy to test
|
||||||
|
alternative variants.
|
||||||
|
|
||||||
|
For sdb variant use:
|
||||||
|
export NAMED_VARIANT=-sdb DNSSEC_VARIANT=
|
||||||
|
|
||||||
|
For pkcs variant use:
|
||||||
|
export NAMED_VARIANT=-pkcs11 DNSSEC_VARIANT=-pkcs11
|
||||||
|
---
|
||||||
|
bin/tests/system/conf.sh.in | 18 +++++++++---------
|
||||||
|
1 file changed, 9 insertions(+), 9 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/bin/tests/system/conf.sh.in b/bin/tests/system/conf.sh.in
|
||||||
|
index d859909..9152f07 100644
|
||||||
|
--- a/bin/tests/system/conf.sh.in
|
||||||
|
+++ b/bin/tests/system/conf.sh.in
|
||||||
|
@@ -37,17 +37,17 @@ DDNSCONFGEN=$TOP/bin/confgen/ddns-confgen
|
||||||
|
DELV=$TOP/bin/delv/delv
|
||||||
|
DIG=$TOP/bin/dig/dig
|
||||||
|
DNSTAPREAD=$TOP/bin/tools/dnstap-read
|
||||||
|
-DSFROMKEY=$TOP/bin/dnssec/dnssec-dsfromkey
|
||||||
|
-FEATURETEST=$TOP/bin/named/feature-test
|
||||||
|
+DSFROMKEY=$TOP/bin/dnssec${DNSSEC_VARIANT}/dnssec-dsfromkey${DNSSEC_VARIANT}
|
||||||
|
+FEATURETEST=$TOP/bin/named${NAMED_VARIANT}/feature-test${NAMED_VARIANT}
|
||||||
|
FSTRM_CAPTURE=@FSTRM_CAPTURE@
|
||||||
|
HOST=$TOP/bin/dig/host
|
||||||
|
-IMPORTKEY=$TOP/bin/dnssec/dnssec-importkey
|
||||||
|
+IMPORTKEY=$TOP/bin/dnssec${DNSSEC_VARIANT}/dnssec-importkey${DNSSEC_VARIANT}
|
||||||
|
JOURNALPRINT=$TOP/bin/tools/named-journalprint
|
||||||
|
-KEYFRLAB=$TOP/bin/dnssec/dnssec-keyfromlabel
|
||||||
|
-KEYGEN=$TOP/bin/dnssec/dnssec-keygen
|
||||||
|
+KEYFRLAB=$TOP/bin/dnssec${DNSSEC_VARIANT}/dnssec-keyfromlabel${DNSSEC_VARIANT}
|
||||||
|
+KEYGEN=$TOP/bin/dnssec${DNSSEC_VARIANT}/dnssec-keygen${DNSSEC_VARIANT}
|
||||||
|
KEYMGR=$TOP/bin/python/dnssec-keymgr
|
||||||
|
MDIG=$TOP/bin/tools/mdig
|
||||||
|
-NAMED=$TOP/bin/named/named
|
||||||
|
+NAMED=$TOP/bin/named${NAMED_VARIANT}/named${NAMED_VARIANT}
|
||||||
|
NSEC3HASH=$TOP/bin/tools/nsec3hash
|
||||||
|
NSLOOKUP=$TOP/bin/dig/nslookup
|
||||||
|
NSUPDATE=$TOP/bin/nsupdate/nsupdate
|
||||||
|
@@ -56,12 +56,12 @@ PK11DEL="$TOP/bin/pkcs11/pkcs11-destroy -s ${SLOT:-0} -p ${HSMPIN:-1234} -w 0"
|
||||||
|
PK11GEN="$TOP/bin/pkcs11/pkcs11-keygen -q -s ${SLOT:-0} -p ${HSMPIN:-1234}"
|
||||||
|
PK11LIST="$TOP/bin/pkcs11/pkcs11-list -s ${SLOT:-0} -p ${HSMPIN:-1234}"
|
||||||
|
RESOLVE=$TOP/bin/tests/system/resolve
|
||||||
|
-REVOKE=$TOP/bin/dnssec/dnssec-revoke
|
||||||
|
+REVOKE=$TOP/bin/dnssec${DNSSEC_VARIANT}/dnssec-revoke${DNSSEC_VARIANT}
|
||||||
|
RNDC=$TOP/bin/rndc/rndc
|
||||||
|
RNDCCONFGEN=$TOP/bin/confgen/rndc-confgen
|
||||||
|
RRCHECKER=$TOP/bin/tools/named-rrchecker
|
||||||
|
-SETTIME=$TOP/bin/dnssec/dnssec-settime
|
||||||
|
-SIGNER=$TOP/bin/dnssec/dnssec-signzone
|
||||||
|
+SETTIME=$TOP/bin/dnssec${DNSSEC_VARIANT}/dnssec-settime${DNSSEC_VARIANT}
|
||||||
|
+SIGNER=$TOP/bin/dnssec${DNSSEC_VARIANT}/dnssec-signzone${DNSSEC_VARIANT}
|
||||||
|
TSIGKEYGEN=$TOP/bin/confgen/tsig-keygen
|
||||||
|
VERIFY=$TOP/bin/dnssec/dnssec-verify
|
||||||
|
WIRETEST=$TOP/bin/tests/wire_test
|
||||||
|
--
|
||||||
|
2.26.3
|
||||||
|
|
@ -1,30 +0,0 @@
|
|||||||
From 373f07148217a8e70e33446f5108fb42d1079ba6 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Petr Mensik <pemensik@redhat.com>
|
|
||||||
Date: Thu, 21 Feb 2019 22:42:27 +0100
|
|
||||||
Subject: [PATCH] Disable random_test
|
|
||||||
|
|
||||||
It fails too often on some architecture, failing the whole build along.
|
|
||||||
Because it runs two times for pkcs11 and normal build and any of
|
|
||||||
subtests can occasionally fail, stop it.
|
|
||||||
|
|
||||||
It can be used again by defining 'unstable' variable in Kyuafile.
|
|
||||||
---
|
|
||||||
lib/isc/tests/Kyuafile | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/lib/isc/tests/Kyuafile b/lib/isc/tests/Kyuafile
|
|
||||||
index 4cd2574..9df2340 100644
|
|
||||||
--- a/lib/isc/tests/Kyuafile
|
|
||||||
+++ b/lib/isc/tests/Kyuafile
|
|
||||||
@@ -19,7 +19,7 @@ tap_test_program{name='pool_test'}
|
|
||||||
tap_test_program{name='print_test'}
|
|
||||||
tap_test_program{name='queue_test'}
|
|
||||||
tap_test_program{name='radix_test'}
|
|
||||||
-tap_test_program{name='random_test'}
|
|
||||||
+tap_test_program{name='random_test', required_configs='unstable'}
|
|
||||||
tap_test_program{name='regex_test'}
|
|
||||||
tap_test_program{name='result_test'}
|
|
||||||
tap_test_program{name='safe_test'}
|
|
||||||
--
|
|
||||||
2.20.1
|
|
||||||
|
|
@ -1,195 +0,0 @@
|
|||||||
From 9683a4d2524b870c4cee09259cb5eb7b8075a507 Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?Petr=20Men=C5=A1=C3=ADk?= <pemensik@redhat.com>
|
|
||||||
Date: Tue, 18 Dec 2018 16:06:26 +0100
|
|
||||||
Subject: [PATCH] Make absolute hostname by dns API instead of strings
|
|
||||||
|
|
||||||
Duplicate all strings in dc_list. Free allocated memory on each record.
|
|
||||||
---
|
|
||||||
bin/sdb_tools/zone2ldap.c | 70 +++++++++++++++++++++++++--------------
|
|
||||||
1 file changed, 45 insertions(+), 25 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/bin/sdb_tools/zone2ldap.c b/bin/sdb_tools/zone2ldap.c
|
|
||||||
index d59936c..9ba73b8 100644
|
|
||||||
--- a/bin/sdb_tools/zone2ldap.c
|
|
||||||
+++ b/bin/sdb_tools/zone2ldap.c
|
|
||||||
@@ -84,6 +84,10 @@ int get_attr_list_size (char **tmp);
|
|
||||||
/* Get a DN */
|
|
||||||
char *build_dn_from_dc_list (char **dc_list, unsigned int ttl, int flag, char *zone);
|
|
||||||
|
|
||||||
+/* Free a DN list */
|
|
||||||
+static void
|
|
||||||
+free_dc_list(char **dc_list);
|
|
||||||
+
|
|
||||||
/* Add to RR list */
|
|
||||||
void add_to_rr_list (char *dn, char *name, char *type, char *data,
|
|
||||||
unsigned int ttl, unsigned int flags);
|
|
||||||
@@ -120,6 +124,7 @@ static char dNSTTL []="dNSTTL";
|
|
||||||
static char zoneName []="zoneName";
|
|
||||||
static char dc []="dc";
|
|
||||||
static char sameZone []="@";
|
|
||||||
+static char dot []=".";
|
|
||||||
/* LDAPMod mod_values: */
|
|
||||||
static char *objectClasses []= { &(topClass[0]), &(dNSZoneClass[0]), NULL };
|
|
||||||
static char *topObjectClasses []= { &(topClass[0]), &(dcObjectClass[0]), &(dNSZoneClass[0]), NULL };
|
|
||||||
@@ -391,6 +396,8 @@ main (int argc, char **argv)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+ free_dc_list(dc_list);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
@@ -446,12 +453,18 @@ generate_ldap (dns_name_t * dnsname, dns_rdata_t * rdata, unsigned int ttl)
|
|
||||||
char data[2048];
|
|
||||||
char **dc_list;
|
|
||||||
char *dn;
|
|
||||||
+ size_t argzone_len;
|
|
||||||
+ bool omit_dot;
|
|
||||||
|
|
||||||
isc_buffer_t buff;
|
|
||||||
isc_result_t result;
|
|
||||||
|
|
||||||
isc_buffer_init (&buff, name, sizeof (name));
|
|
||||||
result = dns_name_totext (dnsname, true, &buff);
|
|
||||||
+ argzone_len = strlen(argzone);
|
|
||||||
+ /* If argzone is absolute, output absolute name too */
|
|
||||||
+ omit_dot = (!(argzone_len > 0 && argzone[argzone_len-1] == '.'));
|
|
||||||
+ result = dns_name_totext (dnsname, omit_dot, &buff);
|
|
||||||
isc_result_check (result, "dns_name_totext");
|
|
||||||
name[isc_buffer_usedlength (&buff)] = 0;
|
|
||||||
|
|
||||||
@@ -473,6 +486,7 @@ generate_ldap (dns_name_t * dnsname, dns_rdata_t * rdata, unsigned int ttl)
|
|
||||||
printf ("Adding %s (%s %s) to run queue list.\n", dn, type, data);
|
|
||||||
|
|
||||||
add_to_rr_list (dn, dc_list[len], (char*)type, (char*)data, ttl, DNS_OBJECT);
|
|
||||||
+ free_dc_list(dc_list);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@@ -533,12 +547,9 @@ add_to_rr_list (char *dn, char *name, char *type,
|
|
||||||
if (tmp->attrs == (LDAPMod **) NULL)
|
|
||||||
fatal("calloc");
|
|
||||||
|
|
||||||
- for (i = 0; i < (int)flags; i++)
|
|
||||||
- {
|
|
||||||
- tmp->attrs[i] = (LDAPMod *) malloc (sizeof (LDAPMod));
|
|
||||||
- if (tmp->attrs[i] == (LDAPMod *) NULL)
|
|
||||||
- fatal("malloc");
|
|
||||||
- }
|
|
||||||
+ tmp->attrs[0] = (LDAPMod *) malloc (sizeof (LDAPMod));
|
|
||||||
+ if (tmp->attrs[0] == (LDAPMod *) NULL)
|
|
||||||
+ fatal("malloc");
|
|
||||||
tmp->attrs[0]->mod_op = LDAP_MOD_ADD;
|
|
||||||
tmp->attrs[0]->mod_type = objectClass;
|
|
||||||
|
|
||||||
@@ -554,9 +565,18 @@ add_to_rr_list (char *dn, char *name, char *type,
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ for (i = 1; i < (int)flags-1; i++)
|
|
||||||
+ {
|
|
||||||
+ tmp->attrs[i] = (LDAPMod *) malloc (sizeof (LDAPMod));
|
|
||||||
+ if (tmp->attrs[i] == (LDAPMod *) NULL)
|
|
||||||
+ fatal("malloc");
|
|
||||||
+ }
|
|
||||||
+ tmp->attrs[i] = NULL;
|
|
||||||
+
|
|
||||||
+
|
|
||||||
tmp->attrs[1]->mod_op = LDAP_MOD_ADD;
|
|
||||||
tmp->attrs[1]->mod_type = relativeDomainName;
|
|
||||||
- tmp->attrs[1]->mod_values = (char **) calloc (sizeof (char *), 2);
|
|
||||||
+ tmp->attrs[1]->mod_values = (char **) calloc (sizeof (char *), 3);
|
|
||||||
|
|
||||||
if (tmp->attrs[1]->mod_values == (char **)NULL)
|
|
||||||
fatal("calloc");
|
|
||||||
@@ -701,24 +721,16 @@ hostname_to_dn_list (char *hostname, char *zone, unsigned int flags)
|
|
||||||
{
|
|
||||||
char *tmp;
|
|
||||||
int i = 0;
|
|
||||||
+ int j = 0;
|
|
||||||
char *hname=0L, *last=0L;
|
|
||||||
int hlen=strlen(hostname), zlen=(strlen(zone));
|
|
||||||
|
|
||||||
/* printf("hostname: %s zone: %s\n",hostname, zone); */
|
|
||||||
- hname=0L;
|
|
||||||
if(flags == DNS_OBJECT)
|
|
||||||
{
|
|
||||||
- if( (zone[ zlen - 1 ] == '.') && (hostname[hlen - 1] != '.') )
|
|
||||||
- {
|
|
||||||
- hname=(char*)malloc(hlen + 1);
|
|
||||||
- hlen += 1;
|
|
||||||
- sprintf(hname, "%s.", hostname);
|
|
||||||
- hostname = hname;
|
|
||||||
- }
|
|
||||||
if(strcmp(hostname, zone) == 0)
|
|
||||||
{
|
|
||||||
- if( hname == 0 )
|
|
||||||
- hname=strdup(hostname);
|
|
||||||
+ hname= strdup(hostname);
|
|
||||||
last = strdup(sameZone);
|
|
||||||
}else
|
|
||||||
{
|
|
||||||
@@ -726,8 +738,6 @@ hostname_to_dn_list (char *hostname, char *zone, unsigned int flags)
|
|
||||||
||( strcmp( hostname + (hlen - zlen), zone ) != 0)
|
|
||||||
)
|
|
||||||
{
|
|
||||||
- if( hname != 0 )
|
|
||||||
- free(hname);
|
|
||||||
hname=(char*)malloc( hlen + zlen + 1);
|
|
||||||
if( *zone == '.' )
|
|
||||||
sprintf(hname, "%s%s", hostname, zone);
|
|
||||||
@@ -735,8 +745,7 @@ hostname_to_dn_list (char *hostname, char *zone, unsigned int flags)
|
|
||||||
sprintf(hname,"%s",zone);
|
|
||||||
}else
|
|
||||||
{
|
|
||||||
- if( hname == 0 )
|
|
||||||
- hname = strdup(hostname);
|
|
||||||
+ hname = strdup(hostname);
|
|
||||||
}
|
|
||||||
last = hname;
|
|
||||||
}
|
|
||||||
@@ -749,18 +758,21 @@ hostname_to_dn_list (char *hostname, char *zone, unsigned int flags)
|
|
||||||
for (tmp = strrchr (hname, '.'); tmp != (char *) 0;
|
|
||||||
tmp = strrchr (hname, '.'))
|
|
||||||
{
|
|
||||||
- if( *( tmp + 1 ) != '\0' )
|
|
||||||
+ tmp[0] = '\0';
|
|
||||||
+ if( tmp[1] != '\0' )
|
|
||||||
{
|
|
||||||
- *tmp = '\0';
|
|
||||||
dn_buffer[i++] = ++tmp;
|
|
||||||
}else
|
|
||||||
{ /* trailing '.' ! */
|
|
||||||
- dn_buffer[i++] = strdup(".");
|
|
||||||
- *tmp = '\0';
|
|
||||||
+ dn_buffer[i++] = dot;
|
|
||||||
if( tmp == hname )
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+ for (j=0; j<i; j++)
|
|
||||||
+ {
|
|
||||||
+ dn_buffer[j] = strdup(dn_buffer[j]);
|
|
||||||
+ }
|
|
||||||
if( ( last != hname ) && (tmp != hname) )
|
|
||||||
dn_buffer[i++] = hname;
|
|
||||||
dn_buffer[i++] = last;
|
|
||||||
@@ -820,6 +832,14 @@ build_dn_from_dc_list (char **dc_list, unsigned int ttl, int flag, char *zone)
|
|
||||||
return dn;
|
|
||||||
}
|
|
||||||
|
|
||||||
+static void
|
|
||||||
+free_dc_list(char **dc_list)
|
|
||||||
+{
|
|
||||||
+ for (; *dc_list; dc_list++) {
|
|
||||||
+ free(*dc_list);
|
|
||||||
+ *dc_list=NULL;
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
|
|
||||||
/* Initialize LDAP Conn */
|
|
||||||
void
|
|
||||||
--
|
|
||||||
2.21.1
|
|
||||||
|
|
83
SOURCES/bind-9.14-config-pkcs11.patch
Normal file
83
SOURCES/bind-9.14-config-pkcs11.patch
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
From e6ab9c67f0a14adc23c1067e03a106da1b1651b7 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Petr Mensik <pemensik@redhat.com>
|
||||||
|
Date: Fri, 18 Oct 2019 21:30:52 +0200
|
||||||
|
Subject: [PATCH] Move USE_PKCS11 and USE_OPENSSL out of config.h
|
||||||
|
|
||||||
|
Building two variants with the same common code requires to unset
|
||||||
|
USE_PKCS11 on part of build. That is not possible with config.h value.
|
||||||
|
Move it as normal define to CDEFINES.
|
||||||
|
---
|
||||||
|
bin/confgen/Makefile.in | 2 +-
|
||||||
|
configure.ac | 8 ++++++--
|
||||||
|
lib/dns/dst_internal.h | 12 +++++++++---
|
||||||
|
3 files changed, 16 insertions(+), 6 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/bin/confgen/Makefile.in b/bin/confgen/Makefile.in
|
||||||
|
index 1b7512d..c126bf3 100644
|
||||||
|
--- a/bin/confgen/Makefile.in
|
||||||
|
+++ b/bin/confgen/Makefile.in
|
||||||
|
@@ -22,7 +22,7 @@ VERSION=@BIND9_VERSION@
|
||||||
|
CINCLUDES = -I${srcdir}/include ${ISC_INCLUDES} ${ISCCC_INCLUDES} \
|
||||||
|
${ISCCFG_INCLUDES} ${DNS_INCLUDES} ${BIND9_INCLUDES}
|
||||||
|
|
||||||
|
-CDEFINES =
|
||||||
|
+CDEFINES = @USE_PKCS11@
|
||||||
|
CWARNINGS =
|
||||||
|
|
||||||
|
ISCCFGLIBS = ../../lib/isccfg/libisccfg.@A@
|
||||||
|
diff --git a/configure.ac b/configure.ac
|
||||||
|
index f5483fe..08a7d8a 100644
|
||||||
|
--- a/configure.ac
|
||||||
|
+++ b/configure.ac
|
||||||
|
@@ -935,10 +935,14 @@ AC_SUBST([PKCS11_TEST])
|
||||||
|
AC_SUBST([PKCS11_TOOLS])
|
||||||
|
AC_SUBST([PKCS11_MANS])
|
||||||
|
|
||||||
|
+USE_PKCS11='-DUSE_PKCS11=0'
|
||||||
|
+USE_OPENSSL='-DUSE_OPENSSL=0'
|
||||||
|
AC_SUBST([CRYPTO])
|
||||||
|
AS_CASE([$CRYPTO],
|
||||||
|
- [pkcs11],[AC_DEFINE([USE_PKCS11], [1], [define if PKCS11 is used for Public-Key Cryptography])],
|
||||||
|
- [AC_DEFINE([USE_OPENSSL], [1], [define if OpenSSL is used for Public-Key Cryptography])])
|
||||||
|
+ [pkcs11],[USE_PKCS11='-DUSE_PKCS11=1'],
|
||||||
|
+ [USE_OPENSSL='-DUSE_OPENSSL=1'])
|
||||||
|
+AC_SUBST(USE_PKCS11)
|
||||||
|
+AC_SUBST(USE_OPENSSL)
|
||||||
|
|
||||||
|
# preparation for automake
|
||||||
|
# AM_CONDITIONAL([PKCS11_TOOLS], [test "$with_native_pkcs11" = "yes"])
|
||||||
|
diff --git a/lib/dns/dst_internal.h b/lib/dns/dst_internal.h
|
||||||
|
index 2c3b4a3..55e9dc4 100644
|
||||||
|
--- a/lib/dns/dst_internal.h
|
||||||
|
+++ b/lib/dns/dst_internal.h
|
||||||
|
@@ -38,6 +38,13 @@
|
||||||
|
#include <isc/stdtime.h>
|
||||||
|
#include <isc/types.h>
|
||||||
|
|
||||||
|
+#ifndef USE_PKCS11
|
||||||
|
+#define USE_PKCS11 0
|
||||||
|
+#endif
|
||||||
|
+#ifndef USE_OPENSSL
|
||||||
|
+#define USE_OPENSSL (! USE_PKCS11)
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
#if USE_PKCS11
|
||||||
|
#include <pk11/pk11.h>
|
||||||
|
#include <pk11/site.h>
|
||||||
|
@@ -116,11 +123,10 @@ struct dst_key {
|
||||||
|
void *generic;
|
||||||
|
dns_gss_ctx_id_t gssctx;
|
||||||
|
DH *dh;
|
||||||
|
-#if USE_OPENSSL
|
||||||
|
- EVP_PKEY *pkey;
|
||||||
|
-#endif /* if USE_OPENSSL */
|
||||||
|
#if USE_PKCS11
|
||||||
|
pk11_object_t *pkey;
|
||||||
|
+#else
|
||||||
|
+ EVP_PKEY *pkey;
|
||||||
|
#endif /* if USE_PKCS11 */
|
||||||
|
dst_hmac_key_t *hmac_key;
|
||||||
|
} keydata; /*%< pointer to key in crypto pkg fmt */
|
||||||
|
--
|
||||||
|
2.26.2
|
||||||
|
|
@ -1,58 +0,0 @@
|
|||||||
From 6d6acf236841da5c2511f8afcd3e4a89af4c5658 Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?Witold=20Kr=C4=99cicki?= <wpk@isc.org>
|
|
||||||
Date: Fri, 14 Feb 2020 09:18:48 +0100
|
|
||||||
Subject: [PATCH] Use RESOLVER_NTASKS_PERCPU - 32 for regular tuning, 8 for
|
|
||||||
small
|
|
||||||
|
|
||||||
Modify original upstream commit 0d80266f7e3, add high limit of used
|
|
||||||
tasks. Minimum would be lower on machines with few cpus, but maximum
|
|
||||||
would stay unchanged. Should prevent negatives of this change.
|
|
||||||
|
|
||||||
Signed-off-by: Petr Mensik <pemensik@redhat.com>
|
|
||||||
---
|
|
||||||
bin/named/server.c | 12 ++++++++----
|
|
||||||
1 file changed, 8 insertions(+), 4 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/bin/named/server.c b/bin/named/server.c
|
|
||||||
index 39b1124..94b4daa 100644
|
|
||||||
--- a/bin/named/server.c
|
|
||||||
+++ b/bin/named/server.c
|
|
||||||
@@ -148,11 +148,13 @@
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef TUNE_LARGE
|
|
||||||
-#define RESOLVER_NTASKS 523
|
|
||||||
+#define RESOLVER_NTASKS_MAX 523
|
|
||||||
+#define RESOLVER_NTASKS_PERCPU 32
|
|
||||||
#define UDPBUFFERS 32768
|
|
||||||
#define EXCLBUFFERS 32768
|
|
||||||
#else
|
|
||||||
-#define RESOLVER_NTASKS 31
|
|
||||||
+#define RESOLVER_NTASKS_MAX 31
|
|
||||||
+#define RESOLVER_NTASKS_PERCPU 8
|
|
||||||
#define UDPBUFFERS 1000
|
|
||||||
#define EXCLBUFFERS 4096
|
|
||||||
#endif /* TUNE_LARGE */
|
|
||||||
@@ -3318,7 +3320,7 @@ configure_view(dns_view_t *view, dns_viewlist_t *viewlist,
|
|
||||||
ns_cache_t *nsc;
|
|
||||||
bool zero_no_soattl;
|
|
||||||
dns_acl_t *clients = NULL, *mapped = NULL, *excluded = NULL;
|
|
||||||
- unsigned int query_timeout, ndisp;
|
|
||||||
+ unsigned int query_timeout, ndisp, ntasks;
|
|
||||||
bool old_rpz_ok = false;
|
|
||||||
isc_dscp_t dscp4 = -1, dscp6 = -1;
|
|
||||||
dns_dyndbctx_t *dctx = NULL;
|
|
||||||
@@ -3926,7 +3928,9 @@ configure_view(dns_view_t *view, dns_viewlist_t *viewlist,
|
|
||||||
dns_view_setresquerystats(view, resquerystats);
|
|
||||||
|
|
||||||
ndisp = 4 * ISC_MIN(ns_g_udpdisp, MAX_UDP_DISPATCH);
|
|
||||||
- CHECK(dns_view_createresolver(view, ns_g_taskmgr, RESOLVER_NTASKS,
|
|
||||||
+ ntasks = ISC_MIN(RESOLVER_NTASKS_PERCPU * ns_g_cpus,
|
|
||||||
+ RESOLVER_NTASKS_MAX);
|
|
||||||
+ CHECK(dns_view_createresolver(view, ns_g_taskmgr, ntasks,
|
|
||||||
ndisp, ns_g_socketmgr, ns_g_timermgr,
|
|
||||||
resopts, ns_g_dispatchmgr,
|
|
||||||
dispatch4, dispatch6));
|
|
||||||
--
|
|
||||||
2.34.1
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
From 800ef75553881527e2406f22887e976bb1ba3bfe Mon Sep 17 00:00:00 2001
|
From bd8fdeb2d1ece6db6dfe9fdc024f3a81440c1c0c Mon Sep 17 00:00:00 2001
|
||||||
From: Mark Andrews <marka@isc.org>
|
From: Mark Andrews <marka@isc.org>
|
||||||
Date: Tue, 18 Jan 2022 00:19:47 +1100
|
Date: Tue, 18 Jan 2022 00:19:47 +1100
|
||||||
Subject: [PATCH] Add tests for forwarder cache poisoning scenarios
|
Subject: [PATCH] Add tests for forwarder cache poisoning scenarios
|
||||||
@ -15,43 +15,39 @@ Subject: [PATCH] Add tests for forwarder cache poisoning scenarios
|
|||||||
not cached (this was already working correctly, but was not explicitly
|
not cached (this was already working correctly, but was not explicitly
|
||||||
tested before).
|
tested before).
|
||||||
|
|
||||||
- v9_11 backport: Revert primary/secondary to master/slave,
|
|
||||||
backport rndc helper, backport ns8 config.
|
|
||||||
|
|
||||||
(cherry picked from commit bf3fffff67e1de78e9387a93674d471bf4291604)
|
(cherry picked from commit bf3fffff67e1de78e9387a93674d471bf4291604)
|
||||||
(cherry picked from commit 29f08170f05c2c96fb67f3b561b46aa0bae356f7)
|
(cherry picked from commit 59d1eb3ff810145c8098a0a4fbf93ef4380ad739)
|
||||||
---
|
---
|
||||||
bin/tests/system/forward/ans11/ans.py | 136 ++++++++++++++++++
|
bin/tests/system/forward/ans11/ans.py | 136 ++++++++++++++++++
|
||||||
bin/tests/system/forward/clean.sh | 2 +
|
bin/tests/system/forward/clean.sh | 2 +
|
||||||
bin/tests/system/forward/ns1/diditwork.net.db | 20 +++
|
bin/tests/system/forward/ns1/diditwork.net.db | 22 +++
|
||||||
bin/tests/system/forward/ns1/named.conf.in | 20 +++
|
bin/tests/system/forward/ns1/named.conf.in | 20 +++
|
||||||
bin/tests/system/forward/ns1/net.example.lll | 13 ++
|
bin/tests/system/forward/ns1/net.example.lll | 15 ++
|
||||||
bin/tests/system/forward/ns1/spoofed.net.db | 20 +++
|
bin/tests/system/forward/ns1/spoofed.net.db | 22 +++
|
||||||
bin/tests/system/forward/ns1/sub.local.net.db | 20 +++
|
bin/tests/system/forward/ns1/sub.local.net.db | 22 +++
|
||||||
bin/tests/system/forward/ns10/fakenet.zone | 15 ++
|
bin/tests/system/forward/ns10/fakenet.zone | 17 +++
|
||||||
bin/tests/system/forward/ns10/fakenet2.zone | 13 ++
|
bin/tests/system/forward/ns10/fakenet2.zone | 15 ++
|
||||||
.../system/forward/ns10/fakesublocalnet.zone | 13 ++
|
.../system/forward/ns10/fakesublocalnet.zone | 15 ++
|
||||||
.../system/forward/ns10/fakesublocaltld.zone | 13 ++
|
.../system/forward/ns10/fakesublocaltld.zone | 15 ++
|
||||||
bin/tests/system/forward/ns10/named.conf.in | 51 +++++++
|
bin/tests/system/forward/ns10/named.conf.in | 53 +++++++
|
||||||
bin/tests/system/forward/ns10/net.example.lll | 13 ++
|
bin/tests/system/forward/ns10/net.example.lll | 15 ++
|
||||||
bin/tests/system/forward/ns10/spoofednet.zone | 14 ++
|
bin/tests/system/forward/ns10/spoofednet.zone | 16 +++
|
||||||
|
bin/tests/system/forward/ns2/tld.db | 6 +
|
||||||
bin/tests/system/forward/ns4/named.conf.in | 5 +
|
bin/tests/system/forward/ns4/named.conf.in | 5 +
|
||||||
bin/tests/system/forward/ns4/sibling.tld.db | 20 +++
|
bin/tests/system/forward/ns4/sibling.tld.db | 22 +++
|
||||||
bin/tests/system/forward/ns8/named.conf.in | 33 +++++
|
bin/tests/system/forward/ns8/named.conf.in | 5 +
|
||||||
bin/tests/system/forward/ns8/root.db | 11 ++
|
bin/tests/system/forward/ns8/sub.local.tld.db | 15 ++
|
||||||
bin/tests/system/forward/ns8/sub.local.tld.db | 13 ++
|
bin/tests/system/forward/ns9/local.net.db | 16 +++
|
||||||
bin/tests/system/forward/ns9/local.net.db | 14 ++
|
bin/tests/system/forward/ns9/local.tld.db | 15 ++
|
||||||
bin/tests/system/forward/ns9/local.tld.db | 13 ++
|
bin/tests/system/forward/ns9/named1.conf.in | 67 +++++++++
|
||||||
bin/tests/system/forward/ns9/named1.conf.in | 65 +++++++++
|
bin/tests/system/forward/ns9/named2.conf.in | 70 +++++++++
|
||||||
bin/tests/system/forward/ns9/named2.conf.in | 68 +++++++++
|
bin/tests/system/forward/ns9/named3.conf.in | 50 +++++++
|
||||||
bin/tests/system/forward/ns9/named3.conf.in | 48 +++++++
|
bin/tests/system/forward/ns9/named4.conf.in | 47 ++++++
|
||||||
bin/tests/system/forward/ns9/named4.conf.in | 45 ++++++
|
bin/tests/system/forward/ns9/root.db | 13 ++
|
||||||
bin/tests/system/forward/ns9/root.db | 11 ++
|
bin/tests/system/forward/setup.sh | 2 +
|
||||||
bin/tests/system/forward/prereq.sh | 14 ++
|
bin/tests/system/forward/tests.sh | 122 ++++++++++++++++
|
||||||
bin/tests/system/forward/setup.sh | 3 +
|
|
||||||
bin/tests/system/forward/tests.sh | 126 ++++++++++++++++
|
|
||||||
bin/tests/system/ifconfig.sh | 8 +-
|
bin/tests/system/ifconfig.sh | 8 +-
|
||||||
30 files changed, 856 insertions(+), 4 deletions(-)
|
29 files changed, 844 insertions(+), 4 deletions(-)
|
||||||
create mode 100644 bin/tests/system/forward/ans11/ans.py
|
create mode 100644 bin/tests/system/forward/ans11/ans.py
|
||||||
create mode 100644 bin/tests/system/forward/ns1/diditwork.net.db
|
create mode 100644 bin/tests/system/forward/ns1/diditwork.net.db
|
||||||
create mode 100644 bin/tests/system/forward/ns1/net.example.lll
|
create mode 100644 bin/tests/system/forward/ns1/net.example.lll
|
||||||
@ -65,8 +61,6 @@ Subject: [PATCH] Add tests for forwarder cache poisoning scenarios
|
|||||||
create mode 100644 bin/tests/system/forward/ns10/net.example.lll
|
create mode 100644 bin/tests/system/forward/ns10/net.example.lll
|
||||||
create mode 100644 bin/tests/system/forward/ns10/spoofednet.zone
|
create mode 100644 bin/tests/system/forward/ns10/spoofednet.zone
|
||||||
create mode 100644 bin/tests/system/forward/ns4/sibling.tld.db
|
create mode 100644 bin/tests/system/forward/ns4/sibling.tld.db
|
||||||
create mode 100644 bin/tests/system/forward/ns8/named.conf.in
|
|
||||||
create mode 100644 bin/tests/system/forward/ns8/root.db
|
|
||||||
create mode 100644 bin/tests/system/forward/ns8/sub.local.tld.db
|
create mode 100644 bin/tests/system/forward/ns8/sub.local.tld.db
|
||||||
create mode 100644 bin/tests/system/forward/ns9/local.net.db
|
create mode 100644 bin/tests/system/forward/ns9/local.net.db
|
||||||
create mode 100644 bin/tests/system/forward/ns9/local.tld.db
|
create mode 100644 bin/tests/system/forward/ns9/local.tld.db
|
||||||
@ -78,20 +72,20 @@ Subject: [PATCH] Add tests for forwarder cache poisoning scenarios
|
|||||||
|
|
||||||
diff --git a/bin/tests/system/forward/ans11/ans.py b/bin/tests/system/forward/ans11/ans.py
|
diff --git a/bin/tests/system/forward/ans11/ans.py b/bin/tests/system/forward/ans11/ans.py
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000000..2956cf6eff
|
index 0000000000..1d35b3d3f1
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/bin/tests/system/forward/ans11/ans.py
|
+++ b/bin/tests/system/forward/ans11/ans.py
|
||||||
@@ -0,0 +1,136 @@
|
@@ -0,0 +1,136 @@
|
||||||
+############################################################################
|
|
||||||
+# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
+# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
||||||
+#
|
+#
|
||||||
|
+# SPDX-License-Identifier: MPL-2.0
|
||||||
|
+#
|
||||||
+# This Source Code Form is subject to the terms of the Mozilla Public
|
+# This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
+# License, v. 2.0. If a copy of the MPL was not distributed with this
|
+# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
+# file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
+# file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
||||||
+#
|
+#
|
||||||
+# See the COPYRIGHT file distributed with this work for additional
|
+# See the COPYRIGHT file distributed with this work for additional
|
||||||
+# information regarding copyright ownership.
|
+# information regarding copyright ownership.
|
||||||
+############################################################################
|
|
||||||
+
|
+
|
||||||
+from __future__ import print_function
|
+from __future__ import print_function
|
||||||
+import os
|
+import os
|
||||||
@ -219,10 +213,10 @@ index 0000000000..2956cf6eff
|
|||||||
+ if not running:
|
+ if not running:
|
||||||
+ break
|
+ break
|
||||||
diff --git a/bin/tests/system/forward/clean.sh b/bin/tests/system/forward/clean.sh
|
diff --git a/bin/tests/system/forward/clean.sh b/bin/tests/system/forward/clean.sh
|
||||||
index 26e4e76db6..26a550db49 100644
|
index bc04eadb2c..b65b092680 100644
|
||||||
--- a/bin/tests/system/forward/clean.sh
|
--- a/bin/tests/system/forward/clean.sh
|
||||||
+++ b/bin/tests/system/forward/clean.sh
|
+++ b/bin/tests/system/forward/clean.sh
|
||||||
@@ -10,8 +10,10 @@
|
@@ -10,10 +10,12 @@
|
||||||
#
|
#
|
||||||
# Clean up after forward tests.
|
# Clean up after forward tests.
|
||||||
#
|
#
|
||||||
@ -233,14 +227,18 @@ index 26e4e76db6..26a550db49 100644
|
|||||||
rm -f ./*/named.run ./*/named.run.prev
|
rm -f ./*/named.run ./*/named.run.prev
|
||||||
+rm -f ./*/named_dump.db
|
+rm -f ./*/named_dump.db
|
||||||
rm -f ./ns*/named.lock
|
rm -f ./ns*/named.lock
|
||||||
|
rm -f ./ns*/managed-keys.bind*
|
||||||
|
rm -f ./ns1/root.db ./ns1/root.db.signed
|
||||||
diff --git a/bin/tests/system/forward/ns1/diditwork.net.db b/bin/tests/system/forward/ns1/diditwork.net.db
|
diff --git a/bin/tests/system/forward/ns1/diditwork.net.db b/bin/tests/system/forward/ns1/diditwork.net.db
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000000..be9a7f72bc
|
index 0000000000..fd9a46eb0c
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/bin/tests/system/forward/ns1/diditwork.net.db
|
+++ b/bin/tests/system/forward/ns1/diditwork.net.db
|
||||||
@@ -0,0 +1,20 @@
|
@@ -0,0 +1,22 @@
|
||||||
+; Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
+; Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
||||||
+;
|
+;
|
||||||
|
+; SPDX-License-Identifier: MPL-2.0
|
||||||
|
+;
|
||||||
+; This Source Code Form is subject to the terms of the Mozilla Public
|
+; This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
+; License, v. 2.0. If a copy of the MPL was not distributed with this
|
+; License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
+; file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
+; file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
||||||
@ -260,26 +258,26 @@ index 0000000000..be9a7f72bc
|
|||||||
+ TXT "recursed"
|
+ TXT "recursed"
|
||||||
+ns A 10.53.0.1
|
+ns A 10.53.0.1
|
||||||
diff --git a/bin/tests/system/forward/ns1/named.conf.in b/bin/tests/system/forward/ns1/named.conf.in
|
diff --git a/bin/tests/system/forward/ns1/named.conf.in b/bin/tests/system/forward/ns1/named.conf.in
|
||||||
index 9904f37ef5..1c31d84608 100644
|
index 4aef4e55e5..c5fb2eb172 100644
|
||||||
--- a/bin/tests/system/forward/ns1/named.conf.in
|
--- a/bin/tests/system/forward/ns1/named.conf.in
|
||||||
+++ b/bin/tests/system/forward/ns1/named.conf.in
|
+++ b/bin/tests/system/forward/ns1/named.conf.in
|
||||||
@@ -54,3 +54,23 @@ zone "example5." {
|
@@ -63,3 +63,23 @@ zone "sld.tld" {
|
||||||
zone "example6" {
|
zone "example6" {
|
||||||
type forward;
|
type forward;
|
||||||
};
|
};
|
||||||
+
|
+
|
||||||
+zone "diditwork.net" {
|
+zone "diditwork.net" {
|
||||||
+ type master;
|
+ type primary;
|
||||||
+ file "diditwork.net.db";
|
+ file "diditwork.net.db";
|
||||||
+};
|
+};
|
||||||
+
|
+
|
||||||
+zone "spoofed.net" {
|
+zone "spoofed.net" {
|
||||||
+ type master;
|
+ type primary;
|
||||||
+ file "spoofed.net.db";
|
+ file "spoofed.net.db";
|
||||||
+};
|
+};
|
||||||
+
|
+
|
||||||
+zone "sub.local.net" {
|
+zone "sub.local.net" {
|
||||||
+ type master;
|
+ type primary;
|
||||||
+ file "sub.local.net.db";
|
+ file "sub.local.net.db";
|
||||||
+};
|
+};
|
||||||
+
|
+
|
||||||
@ -289,12 +287,14 @@ index 9904f37ef5..1c31d84608 100644
|
|||||||
+};
|
+};
|
||||||
diff --git a/bin/tests/system/forward/ns1/net.example.lll b/bin/tests/system/forward/ns1/net.example.lll
|
diff --git a/bin/tests/system/forward/ns1/net.example.lll b/bin/tests/system/forward/ns1/net.example.lll
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000000..d179853fa5
|
index 0000000000..ba0804fd75
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/bin/tests/system/forward/ns1/net.example.lll
|
+++ b/bin/tests/system/forward/ns1/net.example.lll
|
||||||
@@ -0,0 +1,13 @@
|
@@ -0,0 +1,15 @@
|
||||||
+; Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
+; Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
||||||
+;
|
+;
|
||||||
|
+; SPDX-License-Identifier: MPL-2.0
|
||||||
|
+;
|
||||||
+; This Source Code Form is subject to the terms of the Mozilla Public
|
+; This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
+; License, v. 2.0. If a copy of the MPL was not distributed with this
|
+; License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
+; file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
+; file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
||||||
@ -308,12 +308,14 @@ index 0000000000..d179853fa5
|
|||||||
+didItWork.net.example.lll. TXT "if you can see this record the attack worked"
|
+didItWork.net.example.lll. TXT "if you can see this record the attack worked"
|
||||||
diff --git a/bin/tests/system/forward/ns1/spoofed.net.db b/bin/tests/system/forward/ns1/spoofed.net.db
|
diff --git a/bin/tests/system/forward/ns1/spoofed.net.db b/bin/tests/system/forward/ns1/spoofed.net.db
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000000..d498d5fa0d
|
index 0000000000..eedc46f5c0
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/bin/tests/system/forward/ns1/spoofed.net.db
|
+++ b/bin/tests/system/forward/ns1/spoofed.net.db
|
||||||
@@ -0,0 +1,20 @@
|
@@ -0,0 +1,22 @@
|
||||||
+; Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
+; Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
||||||
+;
|
+;
|
||||||
|
+; SPDX-License-Identifier: MPL-2.0
|
||||||
|
+;
|
||||||
+; This Source Code Form is subject to the terms of the Mozilla Public
|
+; This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
+; License, v. 2.0. If a copy of the MPL was not distributed with this
|
+; License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
+; file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
+; file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
||||||
@ -334,12 +336,14 @@ index 0000000000..d498d5fa0d
|
|||||||
+sub TXT "recursed"
|
+sub TXT "recursed"
|
||||||
diff --git a/bin/tests/system/forward/ns1/sub.local.net.db b/bin/tests/system/forward/ns1/sub.local.net.db
|
diff --git a/bin/tests/system/forward/ns1/sub.local.net.db b/bin/tests/system/forward/ns1/sub.local.net.db
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000000..be9a7f72bc
|
index 0000000000..fd9a46eb0c
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/bin/tests/system/forward/ns1/sub.local.net.db
|
+++ b/bin/tests/system/forward/ns1/sub.local.net.db
|
||||||
@@ -0,0 +1,20 @@
|
@@ -0,0 +1,22 @@
|
||||||
+; Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
+; Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
||||||
+;
|
+;
|
||||||
|
+; SPDX-License-Identifier: MPL-2.0
|
||||||
|
+;
|
||||||
+; This Source Code Form is subject to the terms of the Mozilla Public
|
+; This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
+; License, v. 2.0. If a copy of the MPL was not distributed with this
|
+; License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
+; file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
+; file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
||||||
@ -360,12 +364,14 @@ index 0000000000..be9a7f72bc
|
|||||||
+ns A 10.53.0.1
|
+ns A 10.53.0.1
|
||||||
diff --git a/bin/tests/system/forward/ns10/fakenet.zone b/bin/tests/system/forward/ns10/fakenet.zone
|
diff --git a/bin/tests/system/forward/ns10/fakenet.zone b/bin/tests/system/forward/ns10/fakenet.zone
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000000..14e5c777cb
|
index 0000000000..b655a32459
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/bin/tests/system/forward/ns10/fakenet.zone
|
+++ b/bin/tests/system/forward/ns10/fakenet.zone
|
||||||
@@ -0,0 +1,15 @@
|
@@ -0,0 +1,17 @@
|
||||||
+; Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
+; Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
||||||
+;
|
+;
|
||||||
|
+; SPDX-License-Identifier: MPL-2.0
|
||||||
|
+;
|
||||||
+; This Source Code Form is subject to the terms of the Mozilla Public
|
+; This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
+; License, v. 2.0. If a copy of the MPL was not distributed with this
|
+; License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
+; file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
+; file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
||||||
@ -381,12 +387,14 @@ index 0000000000..14e5c777cb
|
|||||||
+ns.spoofed.net. A 10.53.0.10
|
+ns.spoofed.net. A 10.53.0.10
|
||||||
diff --git a/bin/tests/system/forward/ns10/fakenet2.zone b/bin/tests/system/forward/ns10/fakenet2.zone
|
diff --git a/bin/tests/system/forward/ns10/fakenet2.zone b/bin/tests/system/forward/ns10/fakenet2.zone
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000000..7ca28a934e
|
index 0000000000..cd1e6e9944
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/bin/tests/system/forward/ns10/fakenet2.zone
|
+++ b/bin/tests/system/forward/ns10/fakenet2.zone
|
||||||
@@ -0,0 +1,13 @@
|
@@ -0,0 +1,15 @@
|
||||||
+; Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
+; Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
||||||
+;
|
+;
|
||||||
|
+; SPDX-License-Identifier: MPL-2.0
|
||||||
|
+;
|
||||||
+; This Source Code Form is subject to the terms of the Mozilla Public
|
+; This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
+; License, v. 2.0. If a copy of the MPL was not distributed with this
|
+; License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
+; file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
+; file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
||||||
@ -400,12 +408,14 @@ index 0000000000..7ca28a934e
|
|||||||
+net2. DNAME net.example.lll.
|
+net2. DNAME net.example.lll.
|
||||||
diff --git a/bin/tests/system/forward/ns10/fakesublocalnet.zone b/bin/tests/system/forward/ns10/fakesublocalnet.zone
|
diff --git a/bin/tests/system/forward/ns10/fakesublocalnet.zone b/bin/tests/system/forward/ns10/fakesublocalnet.zone
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000000..6caa071891
|
index 0000000000..160b5332b2
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/bin/tests/system/forward/ns10/fakesublocalnet.zone
|
+++ b/bin/tests/system/forward/ns10/fakesublocalnet.zone
|
||||||
@@ -0,0 +1,13 @@
|
@@ -0,0 +1,15 @@
|
||||||
+; Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
+; Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
||||||
+;
|
+;
|
||||||
|
+; SPDX-License-Identifier: MPL-2.0
|
||||||
|
+;
|
||||||
+; This Source Code Form is subject to the terms of the Mozilla Public
|
+; This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
+; License, v. 2.0. If a copy of the MPL was not distributed with this
|
+; License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
+; file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
+; file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
||||||
@ -419,12 +429,14 @@ index 0000000000..6caa071891
|
|||||||
+sub.local.net. TXT "if you see this attacker overrode local delegation"
|
+sub.local.net. TXT "if you see this attacker overrode local delegation"
|
||||||
diff --git a/bin/tests/system/forward/ns10/fakesublocaltld.zone b/bin/tests/system/forward/ns10/fakesublocaltld.zone
|
diff --git a/bin/tests/system/forward/ns10/fakesublocaltld.zone b/bin/tests/system/forward/ns10/fakesublocaltld.zone
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000000..6a431de47f
|
index 0000000000..f78cbc77f6
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/bin/tests/system/forward/ns10/fakesublocaltld.zone
|
+++ b/bin/tests/system/forward/ns10/fakesublocaltld.zone
|
||||||
@@ -0,0 +1,13 @@
|
@@ -0,0 +1,15 @@
|
||||||
+; Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
+; Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
||||||
+;
|
+;
|
||||||
|
+; SPDX-License-Identifier: MPL-2.0
|
||||||
|
+;
|
||||||
+; This Source Code Form is subject to the terms of the Mozilla Public
|
+; This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
+; License, v. 2.0. If a copy of the MPL was not distributed with this
|
+; License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
+; file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
+; file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
||||||
@ -438,13 +450,15 @@ index 0000000000..6a431de47f
|
|||||||
+ns.sub.local.tld. 3600 IN A 10.53.0.8
|
+ns.sub.local.tld. 3600 IN A 10.53.0.8
|
||||||
diff --git a/bin/tests/system/forward/ns10/named.conf.in b/bin/tests/system/forward/ns10/named.conf.in
|
diff --git a/bin/tests/system/forward/ns10/named.conf.in b/bin/tests/system/forward/ns10/named.conf.in
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000000..025c108418
|
index 0000000000..1f318dd867
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/bin/tests/system/forward/ns10/named.conf.in
|
+++ b/bin/tests/system/forward/ns10/named.conf.in
|
||||||
@@ -0,0 +1,51 @@
|
@@ -0,0 +1,53 @@
|
||||||
+/*
|
+/*
|
||||||
+ * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
+ * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
||||||
+ *
|
+ *
|
||||||
|
+ * SPDX-License-Identifier: MPL-2.0
|
||||||
|
+ *
|
||||||
+ * This Source Code Form is subject to the terms of the Mozilla Public
|
+ * This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
|
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
+ * file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
+ * file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
||||||
@ -495,12 +509,14 @@ index 0000000000..025c108418
|
|||||||
+};
|
+};
|
||||||
diff --git a/bin/tests/system/forward/ns10/net.example.lll b/bin/tests/system/forward/ns10/net.example.lll
|
diff --git a/bin/tests/system/forward/ns10/net.example.lll b/bin/tests/system/forward/ns10/net.example.lll
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000000..d179853fa5
|
index 0000000000..ba0804fd75
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/bin/tests/system/forward/ns10/net.example.lll
|
+++ b/bin/tests/system/forward/ns10/net.example.lll
|
||||||
@@ -0,0 +1,13 @@
|
@@ -0,0 +1,15 @@
|
||||||
+; Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
+; Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
||||||
+;
|
+;
|
||||||
|
+; SPDX-License-Identifier: MPL-2.0
|
||||||
|
+;
|
||||||
+; This Source Code Form is subject to the terms of the Mozilla Public
|
+; This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
+; License, v. 2.0. If a copy of the MPL was not distributed with this
|
+; License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
+; file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
+; file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
||||||
@ -514,12 +530,14 @@ index 0000000000..d179853fa5
|
|||||||
+didItWork.net.example.lll. TXT "if you can see this record the attack worked"
|
+didItWork.net.example.lll. TXT "if you can see this record the attack worked"
|
||||||
diff --git a/bin/tests/system/forward/ns10/spoofednet.zone b/bin/tests/system/forward/ns10/spoofednet.zone
|
diff --git a/bin/tests/system/forward/ns10/spoofednet.zone b/bin/tests/system/forward/ns10/spoofednet.zone
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000000..13921a08cd
|
index 0000000000..fb70a4372b
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/bin/tests/system/forward/ns10/spoofednet.zone
|
+++ b/bin/tests/system/forward/ns10/spoofednet.zone
|
||||||
@@ -0,0 +1,14 @@
|
@@ -0,0 +1,16 @@
|
||||||
+; Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
+; Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
||||||
+;
|
+;
|
||||||
|
+; SPDX-License-Identifier: MPL-2.0
|
||||||
|
+;
|
||||||
+; This Source Code Form is subject to the terms of the Mozilla Public
|
+; This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
+; License, v. 2.0. If a copy of the MPL was not distributed with this
|
+; License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
+; file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
+; file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
||||||
@ -532,27 +550,43 @@ index 0000000000..13921a08cd
|
|||||||
+spoofed.net. NS ns.spoofed.net.
|
+spoofed.net. NS ns.spoofed.net.
|
||||||
+ns.spoofed.net. A 10.53.0.10
|
+ns.spoofed.net. A 10.53.0.10
|
||||||
+spoofed.net. TXT "this record is clearly spoofed"
|
+spoofed.net. TXT "this record is clearly spoofed"
|
||||||
|
diff --git a/bin/tests/system/forward/ns2/tld.db b/bin/tests/system/forward/ns2/tld.db
|
||||||
|
index 61b6569b07..819210dc05 100644
|
||||||
|
--- a/bin/tests/system/forward/ns2/tld.db
|
||||||
|
+++ b/bin/tests/system/forward/ns2/tld.db
|
||||||
|
@@ -10,3 +10,9 @@ $TTL 300 ; 5 minutes
|
||||||
|
ns A 10.53.0.2
|
||||||
|
sld NS ns.sld
|
||||||
|
ns.sld A 10.53.0.1
|
||||||
|
+local NS ns.local
|
||||||
|
+ns.local A 10.53.0.9
|
||||||
|
+sibling NS ns.sibling
|
||||||
|
+ns.sibling A 10.53.0.4
|
||||||
|
+sibling NS ns.sub.local
|
||||||
|
+ns.sub.local A 10.53.0.10
|
||||||
diff --git a/bin/tests/system/forward/ns4/named.conf.in b/bin/tests/system/forward/ns4/named.conf.in
|
diff --git a/bin/tests/system/forward/ns4/named.conf.in b/bin/tests/system/forward/ns4/named.conf.in
|
||||||
index d42a9eb797..6db65e71bc 100644
|
index 855b4bfb82..85349aa97e 100644
|
||||||
--- a/bin/tests/system/forward/ns4/named.conf.in
|
--- a/bin/tests/system/forward/ns4/named.conf.in
|
||||||
+++ b/bin/tests/system/forward/ns4/named.conf.in
|
+++ b/bin/tests/system/forward/ns4/named.conf.in
|
||||||
@@ -60,3 +60,8 @@ zone "malicious." {
|
@@ -60,3 +60,8 @@ zone "malicious." {
|
||||||
type master;
|
type primary;
|
||||||
file "malicious.db";
|
file "malicious.db";
|
||||||
};
|
};
|
||||||
+
|
+
|
||||||
+zone "sibling.tld" {
|
+zone "sibling.tld" {
|
||||||
+ type master;
|
+ type primary;
|
||||||
+ file "sibling.tld.db";
|
+ file "sibling.tld.db";
|
||||||
+};
|
+};
|
||||||
diff --git a/bin/tests/system/forward/ns4/sibling.tld.db b/bin/tests/system/forward/ns4/sibling.tld.db
|
diff --git a/bin/tests/system/forward/ns4/sibling.tld.db b/bin/tests/system/forward/ns4/sibling.tld.db
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000000..58037d093b
|
index 0000000000..fe080ae974
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/bin/tests/system/forward/ns4/sibling.tld.db
|
+++ b/bin/tests/system/forward/ns4/sibling.tld.db
|
||||||
@@ -0,0 +1,20 @@
|
@@ -0,0 +1,22 @@
|
||||||
+; Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
+; Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
||||||
+;
|
+;
|
||||||
|
+; SPDX-License-Identifier: MPL-2.0
|
||||||
|
+;
|
||||||
+; This Source Code Form is subject to the terms of the Mozilla Public
|
+; This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
+; License, v. 2.0. If a copy of the MPL was not distributed with this
|
+; License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
+; file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
+; file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
||||||
@ -572,69 +606,28 @@ index 0000000000..58037d093b
|
|||||||
+
|
+
|
||||||
+ns IN A 10.53.0.4
|
+ns IN A 10.53.0.4
|
||||||
diff --git a/bin/tests/system/forward/ns8/named.conf.in b/bin/tests/system/forward/ns8/named.conf.in
|
diff --git a/bin/tests/system/forward/ns8/named.conf.in b/bin/tests/system/forward/ns8/named.conf.in
|
||||||
new file mode 100644
|
index 531ff59ece..f752eae885 100644
|
||||||
index 0000000000..9260f69ded
|
--- a/bin/tests/system/forward/ns8/named.conf.in
|
||||||
--- /dev/null
|
|
||||||
+++ b/bin/tests/system/forward/ns8/named.conf.in
|
+++ b/bin/tests/system/forward/ns8/named.conf.in
|
||||||
@@ -0,0 +1,33 @@
|
@@ -26,3 +26,8 @@ zone "." {
|
||||||
+/*
|
type hint;
|
||||||
+ * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
file "root.db";
|
||||||
+ *
|
};
|
||||||
+ * This Source Code Form is subject to the terms of the Mozilla Public
|
|
||||||
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
||||||
+ * file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
|
||||||
+ *
|
|
||||||
+ * See the COPYRIGHT file distributed with this work for additional
|
|
||||||
+ * information regarding copyright ownership.
|
|
||||||
+ */
|
|
||||||
+
|
|
||||||
+options {
|
|
||||||
+ query-source address 10.53.0.8;
|
|
||||||
+ notify-source 10.53.0.8;
|
|
||||||
+ transfer-source 10.53.0.8;
|
|
||||||
+ port @PORT@;
|
|
||||||
+ pid-file "named.pid";
|
|
||||||
+ listen-on { 10.53.0.8; };
|
|
||||||
+ listen-on-v6 { none; };
|
|
||||||
+ forwarders { 10.53.0.2; }; // returns referrals
|
|
||||||
+ forward first;
|
|
||||||
+ dnssec-validation yes;
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+zone "." {
|
|
||||||
+ type hint;
|
|
||||||
+ file "root.db";
|
|
||||||
+};
|
|
||||||
+
|
+
|
||||||
+zone "sub.local.tld" {
|
+zone "sub.local.tld" {
|
||||||
+ type master;
|
+ type primary;
|
||||||
+ file "sub.local.tld.db";
|
+ file "sub.local.tld.db";
|
||||||
+};
|
+};
|
||||||
diff --git a/bin/tests/system/forward/ns8/root.db b/bin/tests/system/forward/ns8/root.db
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000000..4f30322270
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/bin/tests/system/forward/ns8/root.db
|
|
||||||
@@ -0,0 +1,11 @@
|
|
||||||
+; Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
|
||||||
+;
|
|
||||||
+; This Source Code Form is subject to the terms of the Mozilla Public
|
|
||||||
+; License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
||||||
+; file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
|
||||||
+;
|
|
||||||
+; See the COPYRIGHT file distributed with this work for additional
|
|
||||||
+; information regarding copyright ownership.
|
|
||||||
+
|
|
||||||
+. NS a.root-servers.nil.
|
|
||||||
+a.root-servers.nil. A 10.53.0.1
|
|
||||||
diff --git a/bin/tests/system/forward/ns8/sub.local.tld.db b/bin/tests/system/forward/ns8/sub.local.tld.db
|
diff --git a/bin/tests/system/forward/ns8/sub.local.tld.db b/bin/tests/system/forward/ns8/sub.local.tld.db
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000000..eb20683ae9
|
index 0000000000..f2234c754e
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/bin/tests/system/forward/ns8/sub.local.tld.db
|
+++ b/bin/tests/system/forward/ns8/sub.local.tld.db
|
||||||
@@ -0,0 +1,13 @@
|
@@ -0,0 +1,15 @@
|
||||||
+; Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
+; Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
||||||
+;
|
+;
|
||||||
|
+; SPDX-License-Identifier: MPL-2.0
|
||||||
|
+;
|
||||||
+; This Source Code Form is subject to the terms of the Mozilla Public
|
+; This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
+; License, v. 2.0. If a copy of the MPL was not distributed with this
|
+; License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
+; file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
+; file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
||||||
@ -648,12 +641,14 @@ index 0000000000..eb20683ae9
|
|||||||
+ns.sub.local.tld. 3600 IN A 10.53.0.8
|
+ns.sub.local.tld. 3600 IN A 10.53.0.8
|
||||||
diff --git a/bin/tests/system/forward/ns9/local.net.db b/bin/tests/system/forward/ns9/local.net.db
|
diff --git a/bin/tests/system/forward/ns9/local.net.db b/bin/tests/system/forward/ns9/local.net.db
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000000..2c971e1e93
|
index 0000000000..af0d2a5a67
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/bin/tests/system/forward/ns9/local.net.db
|
+++ b/bin/tests/system/forward/ns9/local.net.db
|
||||||
@@ -0,0 +1,14 @@
|
@@ -0,0 +1,16 @@
|
||||||
+; Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
+; Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
||||||
+;
|
+;
|
||||||
|
+; SPDX-License-Identifier: MPL-2.0
|
||||||
|
+;
|
||||||
+; This Source Code Form is subject to the terms of the Mozilla Public
|
+; This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
+; License, v. 2.0. If a copy of the MPL was not distributed with this
|
+; License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
+; file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
+; file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
||||||
@ -668,12 +663,14 @@ index 0000000000..2c971e1e93
|
|||||||
+sub.local.net. 3600 IN NS ns.spoofed.net. ; attacker will try to override this
|
+sub.local.net. 3600 IN NS ns.spoofed.net. ; attacker will try to override this
|
||||||
diff --git a/bin/tests/system/forward/ns9/local.tld.db b/bin/tests/system/forward/ns9/local.tld.db
|
diff --git a/bin/tests/system/forward/ns9/local.tld.db b/bin/tests/system/forward/ns9/local.tld.db
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000000..59403915fb
|
index 0000000000..876a9139da
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/bin/tests/system/forward/ns9/local.tld.db
|
+++ b/bin/tests/system/forward/ns9/local.tld.db
|
||||||
@@ -0,0 +1,13 @@
|
@@ -0,0 +1,15 @@
|
||||||
+; Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
+; Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
||||||
+;
|
+;
|
||||||
|
+; SPDX-License-Identifier: MPL-2.0
|
||||||
|
+;
|
||||||
+; This Source Code Form is subject to the terms of the Mozilla Public
|
+; This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
+; License, v. 2.0. If a copy of the MPL was not distributed with this
|
+; License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
+; file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
+; file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
||||||
@ -687,13 +684,15 @@ index 0000000000..59403915fb
|
|||||||
+ns.sub.local.tld. 3600 IN A 10.53.0.8
|
+ns.sub.local.tld. 3600 IN A 10.53.0.8
|
||||||
diff --git a/bin/tests/system/forward/ns9/named1.conf.in b/bin/tests/system/forward/ns9/named1.conf.in
|
diff --git a/bin/tests/system/forward/ns9/named1.conf.in b/bin/tests/system/forward/ns9/named1.conf.in
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000000..943e037d09
|
index 0000000000..be9a43842f
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/bin/tests/system/forward/ns9/named1.conf.in
|
+++ b/bin/tests/system/forward/ns9/named1.conf.in
|
||||||
@@ -0,0 +1,65 @@
|
@@ -0,0 +1,67 @@
|
||||||
+/*
|
+/*
|
||||||
+ * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
+ * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
||||||
+ *
|
+ *
|
||||||
|
+ * SPDX-License-Identifier: MPL-2.0
|
||||||
|
+ *
|
||||||
+ * This Source Code Form is subject to the terms of the Mozilla Public
|
+ * This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
|
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
+ * file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
+ * file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
||||||
@ -752,19 +751,21 @@ index 0000000000..943e037d09
|
|||||||
+};
|
+};
|
||||||
+
|
+
|
||||||
+zone "local.net." {
|
+zone "local.net." {
|
||||||
+ type master;
|
+ type primary;
|
||||||
+ file "local.net.db";
|
+ file "local.net.db";
|
||||||
+ forwarders {};
|
+ forwarders {};
|
||||||
+};
|
+};
|
||||||
diff --git a/bin/tests/system/forward/ns9/named2.conf.in b/bin/tests/system/forward/ns9/named2.conf.in
|
diff --git a/bin/tests/system/forward/ns9/named2.conf.in b/bin/tests/system/forward/ns9/named2.conf.in
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000000..5a17d1998a
|
index 0000000000..2c40b42a0c
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/bin/tests/system/forward/ns9/named2.conf.in
|
+++ b/bin/tests/system/forward/ns9/named2.conf.in
|
||||||
@@ -0,0 +1,68 @@
|
@@ -0,0 +1,70 @@
|
||||||
+/*
|
+/*
|
||||||
+ * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
+ * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
||||||
+ *
|
+ *
|
||||||
|
+ * SPDX-License-Identifier: MPL-2.0
|
||||||
|
+ *
|
||||||
+ * This Source Code Form is subject to the terms of the Mozilla Public
|
+ * This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
|
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
+ * file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
+ * file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
||||||
@ -826,19 +827,21 @@ index 0000000000..5a17d1998a
|
|||||||
+};
|
+};
|
||||||
+
|
+
|
||||||
+zone "local.net." {
|
+zone "local.net." {
|
||||||
+ type master;
|
+ type primary;
|
||||||
+ file "local.net.db";
|
+ file "local.net.db";
|
||||||
+ forwarders {};
|
+ forwarders {};
|
||||||
+};
|
+};
|
||||||
diff --git a/bin/tests/system/forward/ns9/named3.conf.in b/bin/tests/system/forward/ns9/named3.conf.in
|
diff --git a/bin/tests/system/forward/ns9/named3.conf.in b/bin/tests/system/forward/ns9/named3.conf.in
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000000..1e70d1ae51
|
index 0000000000..576f57c10b
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/bin/tests/system/forward/ns9/named3.conf.in
|
+++ b/bin/tests/system/forward/ns9/named3.conf.in
|
||||||
@@ -0,0 +1,48 @@
|
@@ -0,0 +1,50 @@
|
||||||
+/*
|
+/*
|
||||||
+ * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
+ * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
||||||
+ *
|
+ *
|
||||||
|
+ * SPDX-License-Identifier: MPL-2.0
|
||||||
|
+ *
|
||||||
+ * This Source Code Form is subject to the terms of the Mozilla Public
|
+ * This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
|
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
+ * file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
+ * file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
||||||
@ -880,19 +883,21 @@ index 0000000000..1e70d1ae51
|
|||||||
+};
|
+};
|
||||||
+
|
+
|
||||||
+zone "local.net." {
|
+zone "local.net." {
|
||||||
+ type master;
|
+ type primary;
|
||||||
+ file "local.net.db";
|
+ file "local.net.db";
|
||||||
+ forwarders {};
|
+ forwarders {};
|
||||||
+};
|
+};
|
||||||
diff --git a/bin/tests/system/forward/ns9/named4.conf.in b/bin/tests/system/forward/ns9/named4.conf.in
|
diff --git a/bin/tests/system/forward/ns9/named4.conf.in b/bin/tests/system/forward/ns9/named4.conf.in
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000000..6f7b1075b5
|
index 0000000000..5cd7d84109
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/bin/tests/system/forward/ns9/named4.conf.in
|
+++ b/bin/tests/system/forward/ns9/named4.conf.in
|
||||||
@@ -0,0 +1,45 @@
|
@@ -0,0 +1,47 @@
|
||||||
+/*
|
+/*
|
||||||
+ * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
+ * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
||||||
+ *
|
+ *
|
||||||
|
+ * SPDX-License-Identifier: MPL-2.0
|
||||||
|
+ *
|
||||||
+ * This Source Code Form is subject to the terms of the Mozilla Public
|
+ * This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
|
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
+ * file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
+ * file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
||||||
@ -932,17 +937,19 @@ index 0000000000..6f7b1075b5
|
|||||||
+};
|
+};
|
||||||
+
|
+
|
||||||
+zone "local.tld." {
|
+zone "local.tld." {
|
||||||
+ type master;
|
+ type primary;
|
||||||
+ file "local.tld.db";
|
+ file "local.tld.db";
|
||||||
+};
|
+};
|
||||||
diff --git a/bin/tests/system/forward/ns9/root.db b/bin/tests/system/forward/ns9/root.db
|
diff --git a/bin/tests/system/forward/ns9/root.db b/bin/tests/system/forward/ns9/root.db
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000000..4f30322270
|
index 0000000000..2cbdff5977
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/bin/tests/system/forward/ns9/root.db
|
+++ b/bin/tests/system/forward/ns9/root.db
|
||||||
@@ -0,0 +1,11 @@
|
@@ -0,0 +1,13 @@
|
||||||
+; Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
+; Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
||||||
+;
|
+;
|
||||||
|
+; SPDX-License-Identifier: MPL-2.0
|
||||||
|
+;
|
||||||
+; This Source Code Form is subject to the terms of the Mozilla Public
|
+; This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
+; License, v. 2.0. If a copy of the MPL was not distributed with this
|
+; License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
+; file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
+; file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
||||||
@ -952,61 +959,27 @@ index 0000000000..4f30322270
|
|||||||
+
|
+
|
||||||
+. NS a.root-servers.nil.
|
+. NS a.root-servers.nil.
|
||||||
+a.root-servers.nil. A 10.53.0.1
|
+a.root-servers.nil. A 10.53.0.1
|
||||||
diff --git a/bin/tests/system/forward/prereq.sh b/bin/tests/system/forward/prereq.sh
|
|
||||||
index d2ca8fc2bf..53fb5817df 100644
|
|
||||||
--- a/bin/tests/system/forward/prereq.sh
|
|
||||||
+++ b/bin/tests/system/forward/prereq.sh
|
|
||||||
@@ -12,6 +12,20 @@
|
|
||||||
SYSTEMTESTTOP=..
|
|
||||||
. $SYSTEMTESTTOP/conf.sh
|
|
||||||
|
|
||||||
+if test -n "$PYTHON"
|
|
||||||
+then
|
|
||||||
+ if $PYTHON -c "import dns" 2> /dev/null
|
|
||||||
+ then
|
|
||||||
+ :
|
|
||||||
+ else
|
|
||||||
+ echo_i "This test requires the dnspython module." >&2
|
|
||||||
+ exit 1
|
|
||||||
+ fi
|
|
||||||
+else
|
|
||||||
+ echo_i "This test requires Python and the dnspython module." >&2
|
|
||||||
+ exit 1
|
|
||||||
+fi
|
|
||||||
+
|
|
||||||
if $PERL -e 'use Net::DNS;' 2>/dev/null
|
|
||||||
then
|
|
||||||
:
|
|
||||||
diff --git a/bin/tests/system/forward/setup.sh b/bin/tests/system/forward/setup.sh
|
diff --git a/bin/tests/system/forward/setup.sh b/bin/tests/system/forward/setup.sh
|
||||||
index 87452b9a88..18e81d277d 100644
|
index 21cf67b782..a56dd3c03f 100644
|
||||||
--- a/bin/tests/system/forward/setup.sh
|
--- a/bin/tests/system/forward/setup.sh
|
||||||
+++ b/bin/tests/system/forward/setup.sh
|
+++ b/bin/tests/system/forward/setup.sh
|
||||||
@@ -18,3 +18,6 @@ copy_setports ns3/named.conf.in ns3/named.conf
|
@@ -19,6 +19,8 @@ copy_setports ns4/named.conf.in ns4/named.conf
|
||||||
copy_setports ns4/named.conf.in ns4/named.conf
|
|
||||||
copy_setports ns5/named.conf.in ns5/named.conf
|
copy_setports ns5/named.conf.in ns5/named.conf
|
||||||
copy_setports ns7/named.conf.in ns7/named.conf
|
copy_setports ns7/named.conf.in ns7/named.conf
|
||||||
+copy_setports ns8/named.conf.in ns8/named.conf
|
copy_setports ns8/named.conf.in ns8/named.conf
|
||||||
+copy_setports ns9/named1.conf.in ns9/named.conf
|
+copy_setports ns9/named1.conf.in ns9/named.conf
|
||||||
+copy_setports ns10/named.conf.in ns10/named.conf
|
+copy_setports ns10/named.conf.in ns10/named.conf
|
||||||
|
|
||||||
|
(
|
||||||
|
cd ns1
|
||||||
diff --git a/bin/tests/system/forward/tests.sh b/bin/tests/system/forward/tests.sh
|
diff --git a/bin/tests/system/forward/tests.sh b/bin/tests/system/forward/tests.sh
|
||||||
index e3549c5bc7..ce9b309a27 100644
|
index 6096b06ca7..dfbaf887f7 100644
|
||||||
--- a/bin/tests/system/forward/tests.sh
|
--- a/bin/tests/system/forward/tests.sh
|
||||||
+++ b/bin/tests/system/forward/tests.sh
|
+++ b/bin/tests/system/forward/tests.sh
|
||||||
@@ -19,6 +19,10 @@ sendcmd() (
|
@@ -253,5 +253,127 @@ grep "status: SERVFAIL" dig.out.$n.f1 > /dev/null || ret=1
|
||||||
"$PERL" ../send.pl 10.53.0.6 "$EXTRAPORT1"
|
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||||
)
|
|
||||||
|
|
||||||
+rndccmd() {
|
|
||||||
+ "$RNDC" -c ../common/rndc.conf -p "$CONTROLPORT" -s "$@"
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
root=10.53.0.1
|
|
||||||
hidden=10.53.0.2
|
|
||||||
f1=10.53.0.3
|
|
||||||
@@ -223,5 +227,127 @@ if [ $ret != 0 ]; then echo_i "failed"; fi
|
|
||||||
status=$((status+ret))
|
status=$((status+ret))
|
||||||
|
|
||||||
|
|
||||||
+#
|
+#
|
||||||
+# Check various spoofed response scenarios. The same tests will be
|
+# Check various spoofed response scenarios. The same tests will be
|
||||||
+# run twice, with "forward first" and "forward only" configurations.
|
+# run twice, with "forward first" and "forward only" configurations.
|
||||||
@ -1132,7 +1105,7 @@ index e3549c5bc7..ce9b309a27 100644
|
|||||||
echo_i "exit status: $status"
|
echo_i "exit status: $status"
|
||||||
[ $status -eq 0 ] || exit 1
|
[ $status -eq 0 ] || exit 1
|
||||||
diff --git a/bin/tests/system/ifconfig.sh b/bin/tests/system/ifconfig.sh
|
diff --git a/bin/tests/system/ifconfig.sh b/bin/tests/system/ifconfig.sh
|
||||||
index d0eb9fa61d..8b9212c3e0 100755
|
index e078f3313b..2a4d955caf 100755
|
||||||
--- a/bin/tests/system/ifconfig.sh
|
--- a/bin/tests/system/ifconfig.sh
|
||||||
+++ b/bin/tests/system/ifconfig.sh
|
+++ b/bin/tests/system/ifconfig.sh
|
||||||
@@ -12,10 +12,10 @@
|
@@ -12,10 +12,10 @@
|
||||||
@ -1148,7 +1121,7 @@ index d0eb9fa61d..8b9212c3e0 100755
|
|||||||
# fd92:7065:b8e:99ff::{1..2}
|
# fd92:7065:b8e:99ff::{1..2}
|
||||||
# fd92:7065:b8e:ff::{1..2}
|
# fd92:7065:b8e:ff::{1..2}
|
||||||
#
|
#
|
||||||
@@ -65,7 +65,7 @@ case "$1" in
|
@@ -55,7 +55,7 @@ case "$1" in
|
||||||
2) ipv6="00" ;;
|
2) ipv6="00" ;;
|
||||||
*) ipv6="" ;;
|
*) ipv6="" ;;
|
||||||
esac
|
esac
|
||||||
@ -1157,7 +1130,7 @@ index d0eb9fa61d..8b9212c3e0 100755
|
|||||||
do
|
do
|
||||||
[ $i -gt 0 -a $ns -gt 2 ] && break
|
[ $i -gt 0 -a $ns -gt 2 ] && break
|
||||||
int=`expr $i \* 10 + $ns`
|
int=`expr $i \* 10 + $ns`
|
||||||
@@ -165,7 +165,7 @@ case "$1" in
|
@@ -160,7 +160,7 @@ case "$1" in
|
||||||
2) ipv6="00" ;;
|
2) ipv6="00" ;;
|
||||||
*) ipv6="" ;;
|
*) ipv6="" ;;
|
||||||
esac
|
esac
|
@ -1,12 +1,12 @@
|
|||||||
From 1f5cb247ecd20ba57c472138f94856aa83caf042 Mon Sep 17 00:00:00 2001
|
From 5b2798e01346cd77741873091babf6c4a3128449 Mon Sep 17 00:00:00 2001
|
||||||
From: Mark Andrews <marka@isc.org>
|
From: Mark Andrews <marka@isc.org>
|
||||||
Date: Tue, 1 Mar 2022 09:48:05 +1100
|
Date: Wed, 19 Jan 2022 17:38:18 +1100
|
||||||
Subject: [PATCH] Add additional name checks when using a forwarder
|
Subject: [PATCH] Add additional name checks when using a forwarder
|
||||||
|
|
||||||
When using a forwarder, check that the owner name of response
|
When using a forwarder, check that the owner name of response
|
||||||
records are within the bailiwick of the forwarded name space.
|
records are within the bailiwick of the forwarded name space.
|
||||||
|
|
||||||
(cherry picked from commit e8df2802ac62016ea68585893eb4310fc3329028)
|
(cherry picked from commit 24155213be59faad17f0215ecf73ea49ab781e5b)
|
||||||
|
|
||||||
Check that the forward declaration is unchanged and not overridden
|
Check that the forward declaration is unchanged and not overridden
|
||||||
|
|
||||||
@ -16,7 +16,7 @@ check that there are no subsidiary forwarded namespaces which would
|
|||||||
take precedence. To be safe, we don't cache any responses if the
|
take precedence. To be safe, we don't cache any responses if the
|
||||||
forwarding configuration has changed since the query was sent.
|
forwarding configuration has changed since the query was sent.
|
||||||
|
|
||||||
(cherry picked from commit 590f8698fc876d6d72f75cf35359e7546c3af972)
|
(cherry picked from commit 3fc7accd88cd0890f8f57bb13765876774298ba3)
|
||||||
|
|
||||||
Check cached names for possible "forward only" clause
|
Check cached names for possible "forward only" clause
|
||||||
|
|
||||||
@ -26,7 +26,7 @@ that would take precedence. Such names would normally be allowed by
|
|||||||
baliwick rules, but a "forward only" zone introduces a new baliwick
|
baliwick rules, but a "forward only" zone introduces a new baliwick
|
||||||
scope.
|
scope.
|
||||||
|
|
||||||
(cherry picked from commit 4a144fae16e70517be894a971cef1d085ee68ebe)
|
(cherry picked from commit ea06552a3d1fed56f7d3a13710e084ec79797b78)
|
||||||
|
|
||||||
Look for zones deeper than the current domain or forward name
|
Look for zones deeper than the current domain or forward name
|
||||||
|
|
||||||
@ -35,50 +35,42 @@ source of truth for the name. If the owner name for the glue
|
|||||||
record would be answered by a locally configured zone, do not
|
record would be answered by a locally configured zone, do not
|
||||||
cache.
|
cache.
|
||||||
|
|
||||||
(cherry picked from commit 42f8c538d3fb9d075b98d82688aeb71621798754)
|
(cherry picked from commit 71b24210542730355149130770deea3e58d8527a)
|
||||||
|
|
||||||
Avoid use of compound literals
|
|
||||||
|
|
||||||
Compound literals are not used in BIND 9.11, in order to ensure backward
|
|
||||||
compatibility with ancient compilers. Rework the relevant parts of the
|
|
||||||
BIND 9.11 backport of the CVE-2021-25220 fix so that compound literals
|
|
||||||
are not used.
|
|
||||||
|
|
||||||
(cherry picked from commit d4b1efbcbd4dfb8c6ef303968992440c5bdeed15)
|
|
||||||
---
|
---
|
||||||
lib/dns/resolver.c | 130 +++++++++++++++++++++++++++++++++++++++++++--
|
lib/dns/resolver.c | 128 +++++++++++++++++++++++++++++++++++++++++++--
|
||||||
1 file changed, 125 insertions(+), 5 deletions(-)
|
1 file changed, 123 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
diff --git a/lib/dns/resolver.c b/lib/dns/resolver.c
|
diff --git a/lib/dns/resolver.c b/lib/dns/resolver.c
|
||||||
index c912f3aea8..2c68973899 100644
|
index a7bc661bb7..7603a07b7b 100644
|
||||||
--- a/lib/dns/resolver.c
|
--- a/lib/dns/resolver.c
|
||||||
+++ b/lib/dns/resolver.c
|
+++ b/lib/dns/resolver.c
|
||||||
@@ -63,6 +63,7 @@
|
@@ -63,6 +63,8 @@
|
||||||
#include <dns/stats.h>
|
#include <dns/stats.h>
|
||||||
#include <dns/tsig.h>
|
#include <dns/tsig.h>
|
||||||
#include <dns/validator.h>
|
#include <dns/validator.h>
|
||||||
+#include <dns/zone.h>
|
+#include <dns/zone.h>
|
||||||
|
+
|
||||||
#ifdef WANT_QUERYTRACE
|
#ifdef WANT_QUERYTRACE
|
||||||
#define RTRACE(m) isc_log_write(dns_lctx, \
|
#define RTRACE(m) \
|
||||||
@@ -312,6 +313,8 @@ struct fetchctx {
|
isc_log_write(dns_lctx, DNS_LOGCATEGORY_RESOLVER, \
|
||||||
bool ns_ttl_ok;
|
@@ -337,6 +339,8 @@ struct fetchctx {
|
||||||
uint32_t ns_ttl;
|
dns_fetch_t *qminfetch;
|
||||||
isc_counter_t * qc;
|
dns_rdataset_t qminrrset;
|
||||||
|
dns_name_t qmindcname;
|
||||||
+ dns_fixedname_t fwdfname;
|
+ dns_fixedname_t fwdfname;
|
||||||
+ dns_name_t *fwdname;
|
+ dns_name_t *fwdname;
|
||||||
|
|
||||||
/*%
|
/*%
|
||||||
* The number of events we're waiting for.
|
* The number of events we're waiting for.
|
||||||
@@ -3393,6 +3396,7 @@ fctx_getaddresses(fetchctx_t *fctx, bool badcache) {
|
@@ -3764,6 +3768,7 @@ fctx_getaddresses(fetchctx_t *fctx, bool badcache) {
|
||||||
if (result == ISC_R_SUCCESS) {
|
if (result == ISC_R_SUCCESS) {
|
||||||
fwd = ISC_LIST_HEAD(forwarders->fwdrs);
|
fwd = ISC_LIST_HEAD(forwarders->fwdrs);
|
||||||
fctx->fwdpolicy = forwarders->fwdpolicy;
|
fctx->fwdpolicy = forwarders->fwdpolicy;
|
||||||
+ dns_name_copy(domain, fctx->fwdname, NULL);
|
+ dns_name_copynf(domain, fctx->fwdname);
|
||||||
if (fctx->fwdpolicy == dns_fwdpolicy_only &&
|
if (fctx->fwdpolicy == dns_fwdpolicy_only &&
|
||||||
isstrictsubdomain(domain, &fctx->domain)) {
|
isstrictsubdomain(domain, &fctx->domain))
|
||||||
fcount_decr(fctx);
|
{
|
||||||
@@ -4422,6 +4426,9 @@ fctx_create(dns_resolver_t *res, dns_name_t *name, dns_rdatatype_t type,
|
@@ -5153,6 +5158,9 @@ fctx_create(dns_resolver_t *res, const dns_name_t *name, dns_rdatatype_t type,
|
||||||
fctx->restarts = 0;
|
fctx->restarts = 0;
|
||||||
fctx->querysent = 0;
|
fctx->querysent = 0;
|
||||||
fctx->referrals = 0;
|
fctx->referrals = 0;
|
||||||
@ -88,20 +80,16 @@ index c912f3aea8..2c68973899 100644
|
|||||||
TIME_NOW(&fctx->start);
|
TIME_NOW(&fctx->start);
|
||||||
fctx->timeouts = 0;
|
fctx->timeouts = 0;
|
||||||
fctx->lamecount = 0;
|
fctx->lamecount = 0;
|
||||||
@@ -4480,8 +4487,10 @@ fctx_create(dns_resolver_t *res, dns_name_t *name, dns_rdatatype_t type,
|
@@ -5215,6 +5223,7 @@ fctx_create(dns_resolver_t *res, const dns_name_t *name, dns_rdatatype_t type,
|
||||||
domain = dns_fixedname_initname(&fixed);
|
fname, &forwarders);
|
||||||
result = dns_fwdtable_find2(fctx->res->view->fwdtable, fwdname,
|
if (result == ISC_R_SUCCESS) {
|
||||||
domain, &forwarders);
|
|
||||||
- if (result == ISC_R_SUCCESS)
|
|
||||||
+ if (result == ISC_R_SUCCESS) {
|
|
||||||
fctx->fwdpolicy = forwarders->fwdpolicy;
|
fctx->fwdpolicy = forwarders->fwdpolicy;
|
||||||
+ dns_name_copy(domain, fctx->fwdname, NULL);
|
+ dns_name_copynf(fname, fctx->fwdname);
|
||||||
+ }
|
}
|
||||||
|
|
||||||
if (fctx->fwdpolicy != dns_fwdpolicy_only) {
|
if (fctx->fwdpolicy != dns_fwdpolicy_only) {
|
||||||
/*
|
@@ -7118,6 +7127,107 @@ mark_related(dns_name_t *name, dns_rdataset_t *rdataset, bool external,
|
||||||
@@ -6231,6 +6240,112 @@ mark_related(dns_name_t *name, dns_rdataset_t *rdataset,
|
}
|
||||||
rdataset->attributes |= DNS_RDATASETATTR_EXTERNAL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
+/*
|
+/*
|
||||||
@ -111,7 +99,7 @@ index c912f3aea8..2c68973899 100644
|
|||||||
+ * locally served zone.
|
+ * locally served zone.
|
||||||
+ */
|
+ */
|
||||||
+static inline bool
|
+static inline bool
|
||||||
+name_external(dns_name_t *name, dns_rdatatype_t type, fetchctx_t *fctx) {
|
+name_external(const dns_name_t *name, dns_rdatatype_t type, fetchctx_t *fctx) {
|
||||||
+ isc_result_t result;
|
+ isc_result_t result;
|
||||||
+ dns_forwarders_t *forwarders = NULL;
|
+ dns_forwarders_t *forwarders = NULL;
|
||||||
+ dns_fixedname_t fixed, zfixed;
|
+ dns_fixedname_t fixed, zfixed;
|
||||||
@ -122,19 +110,14 @@ index c912f3aea8..2c68973899 100644
|
|||||||
+ dns_zone_t *zone = NULL;
|
+ dns_zone_t *zone = NULL;
|
||||||
+ unsigned int labels;
|
+ unsigned int labels;
|
||||||
+ dns_namereln_t rel;
|
+ dns_namereln_t rel;
|
||||||
+ /*
|
|
||||||
+ * The following two variables do not influence code flow; they are
|
|
||||||
+ * only necessary for calling dns_name_fullcompare().
|
|
||||||
+ */
|
|
||||||
+ int _orderp = 0;
|
|
||||||
+ unsigned int _nlabelsp = 0;
|
|
||||||
+
|
+
|
||||||
+ apex = ISFORWARDER(fctx->addrinfo) ? fctx->fwdname : &fctx->domain;
|
+ apex = ISFORWARDER(fctx->addrinfo) ? fctx->fwdname : &fctx->domain;
|
||||||
+
|
+
|
||||||
+ /*
|
+ /*
|
||||||
+ * The name is outside the queried namespace.
|
+ * The name is outside the queried namespace.
|
||||||
+ */
|
+ */
|
||||||
+ rel = dns_name_fullcompare(name, apex, &_orderp, &_nlabelsp);
|
+ rel = dns_name_fullcompare(name, apex, &(int){ 0 },
|
||||||
|
+ &(unsigned int){ 0U });
|
||||||
+ if (rel != dns_namereln_subdomain && rel != dns_namereln_equal) {
|
+ if (rel != dns_namereln_subdomain && rel != dns_namereln_equal) {
|
||||||
+ return (true);
|
+ return (true);
|
||||||
+ }
|
+ }
|
||||||
@ -159,15 +142,15 @@ index c912f3aea8..2c68973899 100644
|
|||||||
+ */
|
+ */
|
||||||
+ LOCK(&fctx->res->view->lock);
|
+ LOCK(&fctx->res->view->lock);
|
||||||
+ if (fctx->res->view->zonetable != NULL) {
|
+ if (fctx->res->view->zonetable != NULL) {
|
||||||
+ unsigned int options = DNS_ZTFIND_NOEXACT;
|
+ unsigned int options = DNS_ZTFIND_NOEXACT | DNS_ZTFIND_MIRROR;
|
||||||
+ result = dns_zt_find(fctx->res->view->zonetable, name, options,
|
+ result = dns_zt_find(fctx->res->view->zonetable, name, options,
|
||||||
+ zfname, &zone);
|
+ zfname, &zone);
|
||||||
+ if (zone != NULL) {
|
+ if (zone != NULL) {
|
||||||
+ dns_zone_detach(&zone);
|
+ dns_zone_detach(&zone);
|
||||||
+ }
|
+ }
|
||||||
+ if (result == ISC_R_SUCCESS || result == DNS_R_PARTIALMATCH) {
|
+ if (result == ISC_R_SUCCESS || result == DNS_R_PARTIALMATCH) {
|
||||||
+ if (dns_name_fullcompare(zfname, apex, &_orderp,
|
+ if (dns_name_fullcompare(zfname, apex, &(int){ 0 },
|
||||||
+ &_nlabelsp) ==
|
+ &(unsigned int){ 0U }) ==
|
||||||
+ dns_namereln_subdomain)
|
+ dns_namereln_subdomain)
|
||||||
+ {
|
+ {
|
||||||
+ UNLOCK(&fctx->res->view->lock);
|
+ UNLOCK(&fctx->res->view->lock);
|
||||||
@ -180,7 +163,7 @@ index c912f3aea8..2c68973899 100644
|
|||||||
+ /*
|
+ /*
|
||||||
+ * Look for a forward declaration below 'name'.
|
+ * Look for a forward declaration below 'name'.
|
||||||
+ */
|
+ */
|
||||||
+ result = dns_fwdtable_find2(fctx->res->view->fwdtable, name, fname,
|
+ result = dns_fwdtable_find(fctx->res->view->fwdtable, name, fname,
|
||||||
+ &forwarders);
|
+ &forwarders);
|
||||||
+
|
+
|
||||||
+ if (ISFORWARDER(fctx->addrinfo)) {
|
+ if (ISFORWARDER(fctx->addrinfo)) {
|
||||||
@ -211,10 +194,10 @@ index c912f3aea8..2c68973899 100644
|
|||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
static isc_result_t
|
static isc_result_t
|
||||||
check_section(void *arg, dns_name_t *addname, dns_rdatatype_t type,
|
check_section(void *arg, const dns_name_t *addname, dns_rdatatype_t type,
|
||||||
dns_section_t section)
|
dns_section_t section) {
|
||||||
@@ -6259,7 +6374,7 @@ check_section(void *arg, dns_name_t *addname, dns_rdatatype_t type,
|
@@ -7144,7 +7254,7 @@ check_section(void *arg, const dns_name_t *addname, dns_rdatatype_t type,
|
||||||
result = dns_message_findname(rmessage, section, addname,
|
result = dns_message_findname(rctx->query->rmessage, section, addname,
|
||||||
dns_rdatatype_any, 0, &name, NULL);
|
dns_rdatatype_any, 0, &name, NULL);
|
||||||
if (result == ISC_R_SUCCESS) {
|
if (result == ISC_R_SUCCESS) {
|
||||||
- external = !dns_name_issubdomain(name, &fctx->domain);
|
- external = !dns_name_issubdomain(name, &fctx->domain);
|
||||||
@ -222,7 +205,7 @@ index c912f3aea8..2c68973899 100644
|
|||||||
if (type == dns_rdatatype_a) {
|
if (type == dns_rdatatype_a) {
|
||||||
for (rdataset = ISC_LIST_HEAD(name->list);
|
for (rdataset = ISC_LIST_HEAD(name->list);
|
||||||
rdataset != NULL;
|
rdataset != NULL;
|
||||||
@@ -7141,6 +7256,13 @@ answer_response(fetchctx_t *fctx, dns_message_t *message) {
|
@@ -8768,6 +8878,13 @@ rctx_answer_scan(respctx_t *rctx) {
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case dns_namereln_subdomain:
|
case dns_namereln_subdomain:
|
||||||
@ -236,19 +219,33 @@ index c912f3aea8..2c68973899 100644
|
|||||||
/*
|
/*
|
||||||
* In-scope DNAME records must have at least
|
* In-scope DNAME records must have at least
|
||||||
* as many labels as the domain being queried.
|
* as many labels as the domain being queried.
|
||||||
@@ -7376,11 +7498,9 @@ answer_response(fetchctx_t *fctx, dns_message_t *message) {
|
@@ -9081,13 +9198,11 @@ rctx_authority_positive(respctx_t *rctx) {
|
||||||
*/
|
DNS_SECTION_AUTHORITY);
|
||||||
result = dns_message_firstname(message, DNS_SECTION_AUTHORITY);
|
|
||||||
while (!done && result == ISC_R_SUCCESS) {
|
while (!done && result == ISC_R_SUCCESS) {
|
||||||
|
dns_name_t *name = NULL;
|
||||||
- bool external;
|
- bool external;
|
||||||
name = NULL;
|
|
||||||
dns_message_currentname(message, DNS_SECTION_AUTHORITY, &name);
|
dns_message_currentname(rctx->query->rmessage,
|
||||||
|
DNS_SECTION_AUTHORITY, &name);
|
||||||
- external = !dns_name_issubdomain(name, &fctx->domain);
|
- external = !dns_name_issubdomain(name, &fctx->domain);
|
||||||
|
|
||||||
- if (!external) {
|
- if (!external) {
|
||||||
+ if (!name_external(name, dns_rdatatype_ns, fctx)) {
|
+ if (!name_external(name, dns_rdatatype_ns, fctx)) {
|
||||||
|
dns_rdataset_t *rdataset = NULL;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We expect to find NS or SIG NS rdatasets, and
|
@@ -9474,7 +9589,10 @@ rctx_authority_dnssec(respctx_t *rctx) {
|
||||||
* nothing else.
|
}
|
||||||
|
|
||||||
|
if (!dns_name_issubdomain(name, &fctx->domain)) {
|
||||||
|
- /* Invalid name found; preserve it for logging later */
|
||||||
|
+ /*
|
||||||
|
+ * Invalid name found; preserve it for logging
|
||||||
|
+ * later.
|
||||||
|
+ */
|
||||||
|
rctx->found_name = name;
|
||||||
|
rctx->found_type = ISC_LIST_HEAD(name->list)->type;
|
||||||
|
continue;
|
||||||
--
|
--
|
||||||
2.34.1
|
2.34.1
|
||||||
|
|
81
SOURCES/bind-9.16-CVE-2022-0396.patch
Normal file
81
SOURCES/bind-9.16-CVE-2022-0396.patch
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
From 33064cd077cf6fa386f0a5a840c2161868da7b3a Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Ond=C5=99ej=20Sur=C3=BD?= <ondrej@isc.org>
|
||||||
|
Date: Tue, 8 Feb 2022 12:42:34 +0100
|
||||||
|
Subject: [PATCH] Run .closehandle_cb asynchrounosly in nmhandle_detach_cb()
|
||||||
|
|
||||||
|
When sock->closehandle_cb is set, we need to run nmhandle_detach_cb()
|
||||||
|
asynchronously to ensure correct order of multiple packets processing in
|
||||||
|
the isc__nm_process_sock_buffer(). When not run asynchronously, it
|
||||||
|
would cause:
|
||||||
|
|
||||||
|
a) out-of-order processing of the return codes from processbuffer();
|
||||||
|
|
||||||
|
b) stack growth because the next TCP DNS message read callback will
|
||||||
|
be called from within the current TCP DNS message read callback.
|
||||||
|
|
||||||
|
The sock->closehandle_cb is set to isc__nm_resume_processing() for TCP
|
||||||
|
sockets which calls isc__nm_process_sock_buffer(). If the read callback
|
||||||
|
(called from isc__nm_process_sock_buffer()->processbuffer()) doesn't
|
||||||
|
attach to the nmhandle (f.e. because it wants to drop the processing or
|
||||||
|
we send the response directly via uv_try_write()), the
|
||||||
|
isc__nm_resume_processing() (via .closehandle_cb) would call
|
||||||
|
isc__nm_process_sock_buffer() recursively.
|
||||||
|
|
||||||
|
The below shortened code path shows how the stack can grow:
|
||||||
|
|
||||||
|
1: ns__client_request(handle, ...);
|
||||||
|
2: isc_nm_tcpdns_sequential(handle);
|
||||||
|
3: ns_query_start(client, handle);
|
||||||
|
4: query_lookup(qctx);
|
||||||
|
5: query_send(qctcx->client);
|
||||||
|
6: isc__nmhandle_detach(&client->reqhandle);
|
||||||
|
7: nmhandle_detach_cb(&handle);
|
||||||
|
8: sock->closehandle_cb(sock); // isc__nm_resume_processing
|
||||||
|
9: isc__nm_process_sock_buffer(sock);
|
||||||
|
10: processbuffer(sock); // isc__nm_tcpdns_processbuffer
|
||||||
|
11: isc_nmhandle_attach(req->handle, &handle);
|
||||||
|
12: isc__nm_readcb(sock, req, ISC_R_SUCCESS);
|
||||||
|
13: isc__nm_async_readcb(NULL, ...);
|
||||||
|
14: uvreq->cb.recv(...); // ns__client_request
|
||||||
|
|
||||||
|
Instead, if 'sock->closehandle_cb' is set, we need to run detach the
|
||||||
|
handle asynchroniously in 'isc__nmhandle_detach', so that on line 8 in
|
||||||
|
the code flow above does not start this recursion. This ensures the
|
||||||
|
correct order when processing multiple packets in the function
|
||||||
|
'isc__nm_process_sock_buffer()' and prevents the stack growth.
|
||||||
|
|
||||||
|
When not run asynchronously, the out-of-order processing leaves the
|
||||||
|
first TCP socket open until all requests on the stream have been
|
||||||
|
processed.
|
||||||
|
|
||||||
|
If the pipelining is disabled on the TCP via `keep-response-order`
|
||||||
|
configuration option, named would keep the first socket in lingering
|
||||||
|
CLOSE_WAIT state when the client sends an incomplete packet and then
|
||||||
|
closes the connection from the client side.
|
||||||
|
|
||||||
|
(cherry picked from commit afee2b5a7bc933a2d987907fc327a9f118fdbd17)
|
||||||
|
---
|
||||||
|
lib/isc/netmgr/netmgr.c | 6 +++++-
|
||||||
|
1 file changed, 5 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/lib/isc/netmgr/netmgr.c b/lib/isc/netmgr/netmgr.c
|
||||||
|
index 3283eb6e4f..0ed3182fb6 100644
|
||||||
|
--- a/lib/isc/netmgr/netmgr.c
|
||||||
|
+++ b/lib/isc/netmgr/netmgr.c
|
||||||
|
@@ -1746,8 +1746,12 @@ isc__nmhandle_detach(isc_nmhandle_t **handlep FLARG) {
|
||||||
|
handle = *handlep;
|
||||||
|
*handlep = NULL;
|
||||||
|
|
||||||
|
+ /*
|
||||||
|
+ * If the closehandle_cb is set, it needs to run asynchronously to
|
||||||
|
+ * ensure correct ordering of the isc__nm_process_sock_buffer().
|
||||||
|
+ */
|
||||||
|
sock = handle->sock;
|
||||||
|
- if (sock->tid == isc_nm_tid()) {
|
||||||
|
+ if (sock->tid == isc_nm_tid() && sock->closehandle_cb == NULL) {
|
||||||
|
nmhandle_detach_cb(&handle FLARG_PASS);
|
||||||
|
} else {
|
||||||
|
isc__netievent_detach_t *event =
|
||||||
|
--
|
||||||
|
2.34.1
|
||||||
|
|
@ -1,240 +0,0 @@
|
|||||||
From 128b3b676eb9413b4d25fb29c560895cfbbfa92e Mon Sep 17 00:00:00 2001
|
|
||||||
From: Evan Hunt <each@isc.org>
|
|
||||||
Date: Thu, 1 Sep 2022 16:05:04 -0700
|
|
||||||
Subject: [PATCH] add an update quota
|
|
||||||
|
|
||||||
limit the number of simultaneous DNS UPDATE events that can be
|
|
||||||
processed by adding a quota for update and update forwarding.
|
|
||||||
this quota currently, arbitrarily, defaults to 100.
|
|
||||||
|
|
||||||
also add a statistics counter to record when the update quota
|
|
||||||
has been exceeded.
|
|
||||||
|
|
||||||
(cherry picked from commit 7c47254a140c3e9cf383cda73c7b6a55c4782826)
|
|
||||||
---
|
|
||||||
bin/named/bind9.xsl | 2 +-
|
|
||||||
bin/named/bind9.xsl.h | 8 +++++++-
|
|
||||||
bin/named/include/named/server.h | 7 ++++++-
|
|
||||||
bin/named/server.c | 3 +++
|
|
||||||
bin/named/statschannel.c | 5 +++--
|
|
||||||
bin/named/update.c | 34 +++++++++++++++++++++++++++++++-
|
|
||||||
doc/arm/Bv9ARM-book.xml | 15 ++++++++++++++
|
|
||||||
7 files changed, 68 insertions(+), 6 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/bin/named/bind9.xsl b/bin/named/bind9.xsl
|
|
||||||
index 9a1c6ff..85fd4c4 100644
|
|
||||||
--- a/bin/named/bind9.xsl
|
|
||||||
+++ b/bin/named/bind9.xsl
|
|
||||||
@@ -12,7 +12,7 @@
|
|
||||||
|
|
||||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
|
|
||||||
<xsl:output method="html" indent="yes" version="4.0"/>
|
|
||||||
- <xsl:template match="statistics[@version="3.8"]">
|
|
||||||
+ <xsl:template match="statistics[@version="3.8.1"]">
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
|
|
||||||
diff --git a/bin/named/bind9.xsl.h b/bin/named/bind9.xsl.h
|
|
||||||
index 9ce8cd7..5e0a892 100644
|
|
||||||
--- a/bin/named/bind9.xsl.h
|
|
||||||
+++ b/bin/named/bind9.xsl.h
|
|
||||||
@@ -17,7 +17,13 @@ static char xslmsg[] =
|
|
||||||
"\n"
|
|
||||||
"<xsl:stylesheet xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\" xmlns=\"http://www.w3.org/1999/xhtml\" version=\"1.0\">\n"
|
|
||||||
" <xsl:output method=\"html\" indent=\"yes\" version=\"4.0\"/>\n"
|
|
||||||
- " <xsl:template match=\"statistics[@version="3.8"]\">\n"
|
|
||||||
+#if 0
|
|
||||||
+ " <!-- the version number **below** must match version in "
|
|
||||||
+ "bin/named/statschannel.c -->\n"
|
|
||||||
+ " <!-- don't forget to update \"/xml/v<STATS_XML_VERSION_MAJOR>\" in "
|
|
||||||
+ "the HTTP endpoints listed below -->\n"
|
|
||||||
+#endif
|
|
||||||
+ " <xsl:template match=\"statistics[@version="3.8.1"]\">\n"
|
|
||||||
" <html>\n"
|
|
||||||
" <head>\n"
|
|
||||||
" <script type=\"text/javascript\" src=\"https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js\"></script>\n"
|
|
||||||
diff --git a/bin/named/include/named/server.h b/bin/named/include/named/server.h
|
|
||||||
index 08a02dc..259acc7 100644
|
|
||||||
--- a/bin/named/include/named/server.h
|
|
||||||
+++ b/bin/named/include/named/server.h
|
|
||||||
@@ -137,6 +137,9 @@ struct ns_server {
|
|
||||||
|
|
||||||
uint16_t transfer_tcp_message_size;
|
|
||||||
isc_rng_t * rngctx;
|
|
||||||
+
|
|
||||||
+/* CVE-2022-3094 */
|
|
||||||
+ isc_quota_t updquota;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct ns_altsecret {
|
|
||||||
@@ -230,7 +233,9 @@ enum {
|
|
||||||
dns_nsstatscounter_trystale = 59,
|
|
||||||
dns_nsstatscounter_usedstale = 60,
|
|
||||||
|
|
||||||
- dns_nsstatscounter_max = 61
|
|
||||||
+ dns_nsstatscounter_updatequota = 61,
|
|
||||||
+
|
|
||||||
+ dns_nsstatscounter_max = 62
|
|
||||||
};
|
|
||||||
|
|
||||||
/*%
|
|
||||||
diff --git a/bin/named/server.c b/bin/named/server.c
|
|
||||||
index 2d2fa0e..f09b895 100644
|
|
||||||
--- a/bin/named/server.c
|
|
||||||
+++ b/bin/named/server.c
|
|
||||||
@@ -9143,6 +9143,8 @@ ns_server_create(isc_mem_t *mctx, ns_server_t **serverp) {
|
|
||||||
RUNTIME_CHECK(result == ISC_R_SUCCESS);
|
|
||||||
result = isc_quota_init(&server->recursionquota, 100);
|
|
||||||
RUNTIME_CHECK(result == ISC_R_SUCCESS);
|
|
||||||
+ result = isc_quota_init(&server->updquota, 100);
|
|
||||||
+ RUNTIME_CHECK(result == ISC_R_SUCCESS);
|
|
||||||
|
|
||||||
result = dns_aclenv_init(mctx, &server->aclenv);
|
|
||||||
RUNTIME_CHECK(result == ISC_R_SUCCESS);
|
|
||||||
@@ -9410,6 +9412,7 @@ ns_server_destroy(ns_server_t **serverp) {
|
|
||||||
|
|
||||||
dns_aclenv_destroy(&server->aclenv);
|
|
||||||
|
|
||||||
+ isc_quota_destroy(&server->updquota);
|
|
||||||
isc_quota_destroy(&server->recursionquota);
|
|
||||||
isc_quota_destroy(&server->tcpquota);
|
|
||||||
isc_quota_destroy(&server->xfroutquota);
|
|
||||||
diff --git a/bin/named/statschannel.c b/bin/named/statschannel.c
|
|
||||||
index 56a9c21..1e8723c 100644
|
|
||||||
--- a/bin/named/statschannel.c
|
|
||||||
+++ b/bin/named/statschannel.c
|
|
||||||
@@ -300,6 +300,7 @@ init_desc(void) {
|
|
||||||
SET_NSSTATDESC(reclimitdropped,
|
|
||||||
"queries dropped due to recursive client limit",
|
|
||||||
"RecLimitDropped");
|
|
||||||
+ SET_NSSTATDESC(updatequota, "Update quota exceeded", "UpdateQuota");
|
|
||||||
SET_NSSTATDESC(trystale,
|
|
||||||
"attempts to use stale cache data after lookup failure",
|
|
||||||
"QryTryStale");
|
|
||||||
@@ -1546,7 +1547,7 @@ generatexml(ns_server_t *server, uint32_t flags,
|
|
||||||
ISC_XMLCHAR "type=\"text/xsl\" href=\"/bind9.xsl\""));
|
|
||||||
TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "statistics"));
|
|
||||||
TRY0(xmlTextWriterWriteAttribute(writer, ISC_XMLCHAR "version",
|
|
||||||
- ISC_XMLCHAR "3.8"));
|
|
||||||
+ ISC_XMLCHAR "3.8.1"));
|
|
||||||
|
|
||||||
/* Set common fields for statistics dump */
|
|
||||||
dumparg.type = isc_statsformat_xml;
|
|
||||||
@@ -2303,7 +2304,7 @@ generatejson(ns_server_t *server, size_t *msglen,
|
|
||||||
/*
|
|
||||||
* These statistics are included no matter which URL we use.
|
|
||||||
*/
|
|
||||||
- obj = json_object_new_string("1.2");
|
|
||||||
+ obj = json_object_new_string("1.2.1");
|
|
||||||
CHECKMEM(obj);
|
|
||||||
json_object_object_add(bindstats, "json-stats-version", obj);
|
|
||||||
|
|
||||||
diff --git a/bin/named/update.c b/bin/named/update.c
|
|
||||||
index 6ad7d27..dccc543 100644
|
|
||||||
--- a/bin/named/update.c
|
|
||||||
+++ b/bin/named/update.c
|
|
||||||
@@ -1526,6 +1526,17 @@ send_update_event(ns_client_t *client, dns_zone_t *zone) {
|
|
||||||
isc_task_t *zonetask = NULL;
|
|
||||||
ns_client_t *evclient;
|
|
||||||
|
|
||||||
+ result = isc_quota_attach(&ns_g_server->updquota,
|
|
||||||
+ &(isc_quota_t *){ NULL });
|
|
||||||
+ if (result != ISC_R_SUCCESS) {
|
|
||||||
+ update_log(client, zone, LOGLEVEL_PROTOCOL,
|
|
||||||
+ "update failed: too many DNS UPDATEs queued (%s)",
|
|
||||||
+ isc_result_totext(result));
|
|
||||||
+ isc_stats_increment(ns_g_server->nsstats,
|
|
||||||
+ dns_nsstatscounter_updatequota);
|
|
||||||
+ CHECK(DNS_R_DROP);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
event = (update_event_t *)
|
|
||||||
isc_event_allocate(client->mctx, client, DNS_EVENT_UPDATE,
|
|
||||||
update_action, NULL, sizeof(*event));
|
|
||||||
@@ -1652,7 +1663,12 @@ ns_update_start(ns_client_t *client, isc_result_t sigresult) {
|
|
||||||
* We are still in the client task context, so we can
|
|
||||||
* simply give an error response without switching tasks.
|
|
||||||
*/
|
|
||||||
- respond(client, result);
|
|
||||||
+ if (result == DNS_R_DROP) {
|
|
||||||
+ ns_client_next(client, result);
|
|
||||||
+ } else {
|
|
||||||
+ respond(client, result);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
if (zone != NULL)
|
|
||||||
dns_zone_detach(&zone);
|
|
||||||
}
|
|
||||||
@@ -3385,6 +3401,7 @@ updatedone_action(isc_task_t *task, isc_event_t *event) {
|
|
||||||
dns_zone_detach(&uev->zone);
|
|
||||||
client->nupdates--;
|
|
||||||
respond(client, uev->result);
|
|
||||||
+ isc_quota_detach(&(isc_quota_t *){ &ns_g_server->updquota });
|
|
||||||
isc_event_free(&event);
|
|
||||||
ns_client_detach(&client);
|
|
||||||
}
|
|
||||||
@@ -3402,6 +3419,8 @@ forward_fail(isc_task_t *task, isc_event_t *event) {
|
|
||||||
INSIST(client->nupdates > 0);
|
|
||||||
client->nupdates--;
|
|
||||||
respond(client, DNS_R_SERVFAIL);
|
|
||||||
+
|
|
||||||
+ isc_quota_detach(&(isc_quota_t *){ &ns_g_server->updquota });
|
|
||||||
isc_event_free(&event);
|
|
||||||
ns_client_detach(&client);
|
|
||||||
}
|
|
||||||
@@ -3439,6 +3458,8 @@ forward_done(isc_task_t *task, isc_event_t *event) {
|
|
||||||
client->nupdates--;
|
|
||||||
ns_client_sendraw(client, uev->answer);
|
|
||||||
dns_message_detach(&uev->answer);
|
|
||||||
+
|
|
||||||
+ isc_quota_detach(&(isc_quota_t *){ &ns_g_server->updquota });
|
|
||||||
isc_event_free(&event);
|
|
||||||
ns_client_detach(&client);
|
|
||||||
}
|
|
||||||
@@ -3472,6 +3493,17 @@ send_forward_event(ns_client_t *client, dns_zone_t *zone) {
|
|
||||||
isc_task_t *zonetask = NULL;
|
|
||||||
ns_client_t *evclient;
|
|
||||||
|
|
||||||
+ result = isc_quota_attach(&ns_g_server->updquota,
|
|
||||||
+ &(isc_quota_t *){ NULL });
|
|
||||||
+ if (result != ISC_R_SUCCESS) {
|
|
||||||
+ update_log(client, zone, LOGLEVEL_PROTOCOL,
|
|
||||||
+ "update failed: too many DNS UPDATEs queued (%s)",
|
|
||||||
+ isc_result_totext(result));
|
|
||||||
+ isc_stats_increment(ns_g_server->nsstats,
|
|
||||||
+ dns_nsstatscounter_updatequota);
|
|
||||||
+ return (DNS_R_DROP);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
/*
|
|
||||||
* This may take some time so replace this client.
|
|
||||||
*/
|
|
||||||
diff --git a/doc/arm/Bv9ARM-book.xml b/doc/arm/Bv9ARM-book.xml
|
|
||||||
index c17f168..9aca6d7 100644
|
|
||||||
--- a/doc/arm/Bv9ARM-book.xml
|
|
||||||
+++ b/doc/arm/Bv9ARM-book.xml
|
|
||||||
@@ -15105,6 +15105,21 @@ HOST-127.EXAMPLE. MX 0 .
|
|
||||||
</para>
|
|
||||||
</entry>
|
|
||||||
</row>
|
|
||||||
+ <row rowsep="0">
|
|
||||||
+ <entry colname="1">
|
|
||||||
+ <para><command>UpdateQuota</command></para>
|
|
||||||
+ </entry>
|
|
||||||
+ <entry colname="2">
|
|
||||||
+ <para><command/></para>
|
|
||||||
+ </entry>
|
|
||||||
+ <entry colname="3">
|
|
||||||
+ <para>
|
|
||||||
+ This indicates the number of times a dynamic update or update
|
|
||||||
+ forwarding request was rejected because the number of pending
|
|
||||||
+ requests exceeded the update quota.
|
|
||||||
+ </para>
|
|
||||||
+ </entry>
|
|
||||||
+ </row>
|
|
||||||
<row rowsep="0">
|
|
||||||
<entry colname="1">
|
|
||||||
<para><command>RateDropped</command></para>
|
|
||||||
--
|
|
||||||
2.39.2
|
|
||||||
|
|
@ -1,136 +0,0 @@
|
|||||||
From d9a03233c6ea11f20c2fbeca87b763673859f8b2 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Evan Hunt <each@isc.org>
|
|
||||||
Date: Thu, 1 Sep 2022 16:22:46 -0700
|
|
||||||
Subject: [PATCH] add a configuration option for the update quota
|
|
||||||
|
|
||||||
add an "update-quota" option to configure the update quota.
|
|
||||||
|
|
||||||
(cherry picked from commit f57758a7303ad0034ff2ff08eaaf2ef899630f19)
|
|
||||||
---
|
|
||||||
bin/named/config.c | 1 +
|
|
||||||
bin/named/named.conf.docbook | 2 ++
|
|
||||||
bin/named/server.c | 1 +
|
|
||||||
bin/tests/system/checkconf/good.conf | 1 +
|
|
||||||
doc/arm/Bv9ARM-book.xml | 11 +++++++++++
|
|
||||||
doc/arm/options.grammar.xml | 1 +
|
|
||||||
doc/misc/options | 1 +
|
|
||||||
lib/isccfg/namedconf.c | 1 +
|
|
||||||
8 files changed, 19 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/bin/named/config.c b/bin/named/config.c
|
|
||||||
index 62d1e88..e3731cf 100644
|
|
||||||
--- a/bin/named/config.c
|
|
||||||
+++ b/bin/named/config.c
|
|
||||||
@@ -134,6 +134,7 @@ options {\n\
|
|
||||||
transfers-per-ns 2;\n\
|
|
||||||
# treat-cr-as-space <obsolete>;\n\
|
|
||||||
trust-anchor-telemetry yes;\n\
|
|
||||||
+ update-quota 100;\n\
|
|
||||||
# use-id-pool <obsolete>;\n\
|
|
||||||
# use-ixfr <obsolete>;\n\
|
|
||||||
\n\
|
|
||||||
diff --git a/bin/named/named.conf.docbook b/bin/named/named.conf.docbook
|
|
||||||
index 6565fce..5842cb5 100644
|
|
||||||
--- a/bin/named/named.conf.docbook
|
|
||||||
+++ b/bin/named/named.conf.docbook
|
|
||||||
@@ -455,6 +455,7 @@ options {
|
|
||||||
trust-anchor-telemetry <replaceable>boolean</replaceable>; // experimental
|
|
||||||
try-tcp-refresh <replaceable>boolean</replaceable>;
|
|
||||||
update-check-ksk <replaceable>boolean</replaceable>;
|
|
||||||
+ update-quota <replaceable>integer</replaceable>;
|
|
||||||
use-alt-transfer-source <replaceable>boolean</replaceable>;
|
|
||||||
use-v4-udp-ports { <replaceable>portrange</replaceable>; ... };
|
|
||||||
use-v6-udp-ports { <replaceable>portrange</replaceable>; ... };
|
|
||||||
@@ -864,6 +865,7 @@ view <replaceable>string</replaceable> [ <replaceable>class</replaceable> ] {
|
|
||||||
type ( delegation-only | forward | hint | master | redirect
|
|
||||||
| slave | static-stub | stub );
|
|
||||||
update-check-ksk <replaceable>boolean</replaceable>;
|
|
||||||
+ update-quota <replaceable>integer</replaceable>;
|
|
||||||
update-policy ( local | { ( deny | grant ) <replaceable>string</replaceable> (
|
|
||||||
6to4-self | external | krb5-self | krb5-selfsub |
|
|
||||||
krb5-subdomain | ms-self | ms-selfsub | ms-subdomain |
|
|
||||||
diff --git a/bin/named/server.c b/bin/named/server.c
|
|
||||||
index f09b895..7af90d0 100644
|
|
||||||
--- a/bin/named/server.c
|
|
||||||
+++ b/bin/named/server.c
|
|
||||||
@@ -7792,6 +7792,7 @@ load_configuration(const char *filename, ns_server_t *server,
|
|
||||||
configure_server_quota(maps, "tcp-clients", &server->tcpquota);
|
|
||||||
configure_server_quota(maps, "recursive-clients",
|
|
||||||
&server->recursionquota);
|
|
||||||
+ configure_server_quota(maps, "update-quota", &server->updquota);
|
|
||||||
|
|
||||||
if (server->recursionquota.max > 1000) {
|
|
||||||
int margin = ISC_MAX(100, ns_g_cpus + 1);
|
|
||||||
diff --git a/bin/tests/system/checkconf/good.conf b/bin/tests/system/checkconf/good.conf
|
|
||||||
index 1359cf3..5d9b292 100644
|
|
||||||
--- a/bin/tests/system/checkconf/good.conf
|
|
||||||
+++ b/bin/tests/system/checkconf/good.conf
|
|
||||||
@@ -63,6 +63,7 @@ options {
|
|
||||||
serial-queries 10;
|
|
||||||
serial-query-rate 100;
|
|
||||||
server-id none;
|
|
||||||
+ update-quota 200;
|
|
||||||
max-cache-size 20000000000000;
|
|
||||||
nta-lifetime 604800;
|
|
||||||
nta-recheck 604800;
|
|
||||||
diff --git a/doc/arm/Bv9ARM-book.xml b/doc/arm/Bv9ARM-book.xml
|
|
||||||
index 9aca6d7..acf772b 100644
|
|
||||||
--- a/doc/arm/Bv9ARM-book.xml
|
|
||||||
+++ b/doc/arm/Bv9ARM-book.xml
|
|
||||||
@@ -8599,6 +8599,17 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
+ <varlistentry>
|
|
||||||
+ <term><command>update-quota</command></term>
|
|
||||||
+ <listitem>
|
|
||||||
+ <para>
|
|
||||||
+ This is the maximum number of simultaneous DNS UPDATE messages that
|
|
||||||
+ the server will accept for updating local authoritiative zones or
|
|
||||||
+ forwarding to a primary server. The default is <userinput>100</userinput>.
|
|
||||||
+ </para>
|
|
||||||
+ </listitem>
|
|
||||||
+ </varlistentry>
|
|
||||||
+
|
|
||||||
</variablelist>
|
|
||||||
|
|
||||||
</section>
|
|
||||||
diff --git a/doc/arm/options.grammar.xml b/doc/arm/options.grammar.xml
|
|
||||||
index 793ac0b..1d17ea8 100644
|
|
||||||
--- a/doc/arm/options.grammar.xml
|
|
||||||
+++ b/doc/arm/options.grammar.xml
|
|
||||||
@@ -277,6 +277,7 @@
|
|
||||||
<command>trust-anchor-telemetry</command> <replaceable>boolean</replaceable>; // experimental
|
|
||||||
<command>try-tcp-refresh</command> <replaceable>boolean</replaceable>;
|
|
||||||
<command>update-check-ksk</command> <replaceable>boolean</replaceable>;
|
|
||||||
+ <command>update-quota</command> <replaceable>integer</replaceable>;
|
|
||||||
<command>use-alt-transfer-source</command> <replaceable>boolean</replaceable>;
|
|
||||||
<command>use-v4-udp-ports</command> { <replaceable>portrange</replaceable>; ... };
|
|
||||||
<command>use-v6-udp-ports</command> { <replaceable>portrange</replaceable>; ... };
|
|
||||||
diff --git a/doc/misc/options b/doc/misc/options
|
|
||||||
index fde93c7..e6d6ba6 100644
|
|
||||||
--- a/doc/misc/options
|
|
||||||
+++ b/doc/misc/options
|
|
||||||
@@ -357,6 +357,7 @@ options {
|
|
||||||
trust-anchor-telemetry <boolean>; // experimental
|
|
||||||
try-tcp-refresh <boolean>;
|
|
||||||
update-check-ksk <boolean>;
|
|
||||||
+ update-quota <integer>;
|
|
||||||
use-alt-transfer-source <boolean>;
|
|
||||||
use-id-pool <boolean>; // obsolete
|
|
||||||
use-ixfr <boolean>; // obsolete
|
|
||||||
diff --git a/lib/isccfg/namedconf.c b/lib/isccfg/namedconf.c
|
|
||||||
index b562f95..667111c 100644
|
|
||||||
--- a/lib/isccfg/namedconf.c
|
|
||||||
+++ b/lib/isccfg/namedconf.c
|
|
||||||
@@ -1136,6 +1136,7 @@ options_clauses[] = {
|
|
||||||
{ "transfers-out", &cfg_type_uint32, 0 },
|
|
||||||
{ "transfers-per-ns", &cfg_type_uint32, 0 },
|
|
||||||
{ "treat-cr-as-space", &cfg_type_boolean, CFG_CLAUSEFLAG_OBSOLETE },
|
|
||||||
+ { "update-quota", &cfg_type_uint32, 0 },
|
|
||||||
{ "use-id-pool", &cfg_type_boolean, CFG_CLAUSEFLAG_OBSOLETE },
|
|
||||||
{ "use-ixfr", &cfg_type_boolean, CFG_CLAUSEFLAG_OBSOLETE },
|
|
||||||
{ "use-v4-udp-ports", &cfg_type_bracketed_portlist, 0 },
|
|
||||||
--
|
|
||||||
2.39.2
|
|
||||||
|
|
@ -1,553 +0,0 @@
|
|||||||
From cba333b262b7ee0034a66cc93cf27f6c4918eea2 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Evan Hunt <each@isc.org>
|
|
||||||
Date: Tue, 8 Nov 2022 17:32:41 -0800
|
|
||||||
Subject: [PATCH] move update ACL and update-policy checks before quota
|
|
||||||
|
|
||||||
check allow-update, update-policy, and allow-update-forwarding before
|
|
||||||
consuming quota slots, so that unauthorized clients can't fill the
|
|
||||||
quota.
|
|
||||||
|
|
||||||
(this moves the access check before the prerequisite check, which
|
|
||||||
violates the precise wording of RFC 2136. however, RFC co-author Paul
|
|
||||||
Vixie has stated that the RFC is mistaken on this point; it should have
|
|
||||||
said that access checking must happen *no later than* the completion of
|
|
||||||
prerequisite checks, not that it must happen exactly then.)
|
|
||||||
|
|
||||||
(cherry picked from commit 964f559edb5036880b8e463b8f190b9007ee055d)
|
|
||||||
---
|
|
||||||
bin/named/update.c | 440 ++++++++++++++++++++++++++++++---------------
|
|
||||||
1 file changed, 298 insertions(+), 142 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/bin/named/update.c b/bin/named/update.c
|
|
||||||
index 8853ee7..4d1fe78 100644
|
|
||||||
--- a/bin/named/update.c
|
|
||||||
+++ b/bin/named/update.c
|
|
||||||
@@ -251,6 +251,9 @@ static void updatedone_action(isc_task_t *task, isc_event_t *event);
|
|
||||||
static isc_result_t send_forward_event(ns_client_t *client, dns_zone_t *zone);
|
|
||||||
static void forward_done(isc_task_t *task, isc_event_t *event);
|
|
||||||
static isc_result_t add_rr_prepare_action(void *data, rr_t *rr);
|
|
||||||
+static isc_result_t
|
|
||||||
+rr_exists(dns_db_t *db, dns_dbversion_t *ver, dns_name_t *name,
|
|
||||||
+ const dns_rdata_t *rdata, bool *flag);
|
|
||||||
|
|
||||||
/**************************************************************************/
|
|
||||||
|
|
||||||
@@ -328,23 +331,24 @@ checkqueryacl(ns_client_t *client, dns_acl_t *queryacl, dns_name_t *zonename,
|
|
||||||
{
|
|
||||||
char namebuf[DNS_NAME_FORMATSIZE];
|
|
||||||
char classbuf[DNS_RDATACLASS_FORMATSIZE];
|
|
||||||
- int level;
|
|
||||||
isc_result_t result;
|
|
||||||
+ bool update_possible =
|
|
||||||
+ ((updateacl != NULL && !dns_acl_isnone(updateacl)) ||
|
|
||||||
+ ssutable != NULL);
|
|
||||||
|
|
||||||
result = ns_client_checkaclsilent(client, NULL, queryacl, true);
|
|
||||||
if (result != ISC_R_SUCCESS) {
|
|
||||||
+ int level = update_possible ? ISC_LOG_ERROR : ISC_LOG_INFO;
|
|
||||||
+
|
|
||||||
dns_name_format(zonename, namebuf, sizeof(namebuf));
|
|
||||||
dns_rdataclass_format(client->view->rdclass, classbuf,
|
|
||||||
sizeof(classbuf));
|
|
||||||
|
|
||||||
- level = (updateacl == NULL && ssutable == NULL) ?
|
|
||||||
- ISC_LOG_INFO : ISC_LOG_ERROR;
|
|
||||||
-
|
|
||||||
ns_client_log(client, NS_LOGCATEGORY_UPDATE_SECURITY,
|
|
||||||
NS_LOGMODULE_UPDATE, level,
|
|
||||||
"update '%s/%s' denied due to allow-query",
|
|
||||||
namebuf, classbuf);
|
|
||||||
- } else if (updateacl == NULL && ssutable == NULL) {
|
|
||||||
+ } else if (!update_possible) {
|
|
||||||
dns_name_format(zonename, namebuf, sizeof(namebuf));
|
|
||||||
dns_rdataclass_format(client->view->rdclass, classbuf,
|
|
||||||
sizeof(classbuf));
|
|
||||||
@@ -1525,6 +1529,277 @@ send_update_event(ns_client_t *client, dns_zone_t *zone) {
|
|
||||||
update_event_t *event = NULL;
|
|
||||||
isc_task_t *zonetask = NULL;
|
|
||||||
ns_client_t *evclient;
|
|
||||||
+#if 1
|
|
||||||
+ dns_ssutable_t *ssutable = NULL;
|
|
||||||
+ dns_message_t *request = client->message;
|
|
||||||
+ dns_rdataclass_t zoneclass;
|
|
||||||
+ dns_rdatatype_t covers;
|
|
||||||
+ dns_name_t *zonename = NULL;
|
|
||||||
+ dns_db_t *db = NULL;
|
|
||||||
+ dns_dbversion_t *ver = NULL;
|
|
||||||
+
|
|
||||||
+ CHECK(dns_zone_getdb(zone, &db));
|
|
||||||
+ zonename = dns_db_origin(db);
|
|
||||||
+ zoneclass = dns_db_class(db);
|
|
||||||
+ dns_zone_getssutable(zone, &ssutable);
|
|
||||||
+ dns_db_currentversion(db, &ver);
|
|
||||||
+
|
|
||||||
+ /*
|
|
||||||
+ * Update message processing can leak record existence information
|
|
||||||
+ * so check that we are allowed to query this zone. Additionally,
|
|
||||||
+ * if we would refuse all updates for this zone, we bail out here.
|
|
||||||
+ */
|
|
||||||
+ CHECK(checkqueryacl(client, dns_zone_getqueryacl(zone),
|
|
||||||
+ dns_zone_getorigin(zone),
|
|
||||||
+ dns_zone_getupdateacl(zone), ssutable));
|
|
||||||
+
|
|
||||||
+ /*
|
|
||||||
+ * Check requestor's permissions.
|
|
||||||
+ */
|
|
||||||
+ if (ssutable == NULL)
|
|
||||||
+ CHECK(checkupdateacl(client, dns_zone_getupdateacl(zone),
|
|
||||||
+ "update", zonename, false, false));
|
|
||||||
+ else if (client->signer == NULL && !TCPCLIENT(client))
|
|
||||||
+ CHECK(checkupdateacl(client, NULL, "update", zonename,
|
|
||||||
+ false, true));
|
|
||||||
+
|
|
||||||
+ if (dns_zone_getupdatedisabled(zone))
|
|
||||||
+ FAILC(DNS_R_REFUSED, "dynamic update temporarily disabled "
|
|
||||||
+ "because the zone is frozen. Use "
|
|
||||||
+ "'rndc thaw' to re-enable updates.");
|
|
||||||
+
|
|
||||||
+ /*
|
|
||||||
+ * Perform the Update Section Prescan.
|
|
||||||
+ */
|
|
||||||
+
|
|
||||||
+ for (result = dns_message_firstname(request, DNS_SECTION_UPDATE);
|
|
||||||
+ result == ISC_R_SUCCESS;
|
|
||||||
+ result = dns_message_nextname(request, DNS_SECTION_UPDATE))
|
|
||||||
+ {
|
|
||||||
+ dns_name_t *name = NULL;
|
|
||||||
+ dns_rdata_t rdata = DNS_RDATA_INIT;
|
|
||||||
+ dns_ttl_t ttl;
|
|
||||||
+ dns_rdataclass_t update_class;
|
|
||||||
+ get_current_rr(request, DNS_SECTION_UPDATE, zoneclass,
|
|
||||||
+ &name, &rdata, &covers, &ttl, &update_class);
|
|
||||||
+
|
|
||||||
+ if (! dns_name_issubdomain(name, zonename))
|
|
||||||
+ FAILC(DNS_R_NOTZONE,
|
|
||||||
+ "update RR is outside zone");
|
|
||||||
+ if (update_class == zoneclass) {
|
|
||||||
+ /*
|
|
||||||
+ * Check for meta-RRs. The RFC2136 pseudocode says
|
|
||||||
+ * check for ANY|AXFR|MAILA|MAILB, but the text adds
|
|
||||||
+ * "or any other QUERY metatype"
|
|
||||||
+ */
|
|
||||||
+ if (dns_rdatatype_ismeta(rdata.type)) {
|
|
||||||
+ FAILC(DNS_R_FORMERR,
|
|
||||||
+ "meta-RR in update");
|
|
||||||
+ }
|
|
||||||
+ result = dns_zone_checknames(zone, name, &rdata);
|
|
||||||
+ if (result != ISC_R_SUCCESS)
|
|
||||||
+ FAIL(DNS_R_REFUSED);
|
|
||||||
+ } else if (update_class == dns_rdataclass_any) {
|
|
||||||
+ if (ttl != 0 || rdata.length != 0 ||
|
|
||||||
+ (dns_rdatatype_ismeta(rdata.type) &&
|
|
||||||
+ rdata.type != dns_rdatatype_any))
|
|
||||||
+ FAILC(DNS_R_FORMERR,
|
|
||||||
+ "meta-RR in update");
|
|
||||||
+ } else if (update_class == dns_rdataclass_none) {
|
|
||||||
+ if (ttl != 0 ||
|
|
||||||
+ dns_rdatatype_ismeta(rdata.type))
|
|
||||||
+ FAILC(DNS_R_FORMERR,
|
|
||||||
+ "meta-RR in update");
|
|
||||||
+ } else {
|
|
||||||
+ update_log(client, zone, ISC_LOG_WARNING,
|
|
||||||
+ "update RR has incorrect class %d",
|
|
||||||
+ update_class);
|
|
||||||
+ FAIL(DNS_R_FORMERR);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ /*
|
|
||||||
+ * draft-ietf-dnsind-simple-secure-update-01 says
|
|
||||||
+ * "Unlike traditional dynamic update, the client
|
|
||||||
+ * is forbidden from updating NSEC records."
|
|
||||||
+ */
|
|
||||||
+ if (rdata.type == dns_rdatatype_nsec3) {
|
|
||||||
+ FAILC(DNS_R_REFUSED,
|
|
||||||
+ "explicit NSEC3 updates are not allowed "
|
|
||||||
+ "in secure zones");
|
|
||||||
+ } else if (rdata.type == dns_rdatatype_nsec) {
|
|
||||||
+ FAILC(DNS_R_REFUSED,
|
|
||||||
+ "explicit NSEC updates are not allowed "
|
|
||||||
+ "in secure zones");
|
|
||||||
+ } else if (rdata.type == dns_rdatatype_rrsig &&
|
|
||||||
+ !dns_name_equal(name, zonename)) {
|
|
||||||
+ FAILC(DNS_R_REFUSED,
|
|
||||||
+ "explicit RRSIG updates are currently "
|
|
||||||
+ "not supported in secure zones except "
|
|
||||||
+ "at the apex");
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (ssutable != NULL) {
|
|
||||||
+ isc_netaddr_t netaddr;
|
|
||||||
+ dst_key_t *tsigkey = NULL;
|
|
||||||
+ isc_netaddr_fromsockaddr(&netaddr, &client->peeraddr);
|
|
||||||
+
|
|
||||||
+ if (client->message->tsigkey != NULL)
|
|
||||||
+ tsigkey = client->message->tsigkey->key;
|
|
||||||
+
|
|
||||||
+ if (rdata.type != dns_rdatatype_any) {
|
|
||||||
+ if (!dns_ssutable_checkrules2
|
|
||||||
+ (ssutable, client->signer, name, &netaddr,
|
|
||||||
+ TCPCLIENT(client),
|
|
||||||
+ &ns_g_server->aclenv,
|
|
||||||
+ rdata.type, tsigkey))
|
|
||||||
+ {
|
|
||||||
+ FAILC(DNS_R_REFUSED,
|
|
||||||
+ "rejected by secure update");
|
|
||||||
+ }
|
|
||||||
+ } else {
|
|
||||||
+ if (!ssu_checkall(db, ver, name, ssutable,
|
|
||||||
+ client->signer,
|
|
||||||
+ &netaddr,
|
|
||||||
+ TCPCLIENT(client),
|
|
||||||
+ tsigkey))
|
|
||||||
+ {
|
|
||||||
+ FAILC(DNS_R_REFUSED,
|
|
||||||
+ "rejected by secure update");
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ if (result != ISC_R_NOMORE)
|
|
||||||
+ FAIL(result);
|
|
||||||
+
|
|
||||||
+ update_log(client, zone, LOGLEVEL_DEBUG,
|
|
||||||
+ "update section prescan OK");
|
|
||||||
+#if 0
|
|
||||||
+ if (ssutable == NULL) {
|
|
||||||
+ CHECK(checkupdateacl(client, dns_zone_getupdateacl(zone),
|
|
||||||
+ // zonename
|
|
||||||
+ "update", dns_zone_getorigin(zone), false,
|
|
||||||
+ false));
|
|
||||||
+ } else if (client->signer == NULL && !TCPCLIENT(client)) {
|
|
||||||
+ CHECK(checkupdateacl(client, NULL, "update",
|
|
||||||
+ dns_zone_getorigin(zone), false, true));
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (dns_zone_getupdatedisabled(zone)) {
|
|
||||||
+ FAILC(DNS_R_REFUSED, "dynamic update temporarily disabled "
|
|
||||||
+ "because the zone is frozen. Use "
|
|
||||||
+ "'rndc thaw' to re-enable updates.");
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ /*
|
|
||||||
+ * Prescan the update section, checking for updates that
|
|
||||||
+ * are illegal or violate policy.
|
|
||||||
+ */
|
|
||||||
+ for (result = dns_message_firstname(request, DNS_SECTION_UPDATE);
|
|
||||||
+ result == ISC_R_SUCCESS;
|
|
||||||
+ result = dns_message_nextname(request, DNS_SECTION_UPDATE))
|
|
||||||
+ {
|
|
||||||
+ dns_name_t *name = NULL;
|
|
||||||
+ dns_rdata_t rdata = DNS_RDATA_INIT;
|
|
||||||
+ dns_ttl_t ttl;
|
|
||||||
+ dns_rdataclass_t update_class;
|
|
||||||
+
|
|
||||||
+ get_current_rr(request, DNS_SECTION_UPDATE, zoneclass, &name,
|
|
||||||
+ &rdata, &covers, &ttl, &update_class);
|
|
||||||
+
|
|
||||||
+ if (!dns_name_issubdomain(name, zonename)) {
|
|
||||||
+ FAILC(DNS_R_NOTZONE, "update RR is outside zone");
|
|
||||||
+ }
|
|
||||||
+ if (update_class == zoneclass) {
|
|
||||||
+ /*
|
|
||||||
+ * Check for meta-RRs. The RFC2136 pseudocode says
|
|
||||||
+ * check for ANY|AXFR|MAILA|MAILB, but the text adds
|
|
||||||
+ * "or any other QUERY metatype"
|
|
||||||
+ */
|
|
||||||
+ if (dns_rdatatype_ismeta(rdata.type)) {
|
|
||||||
+ FAILC(DNS_R_FORMERR, "meta-RR in update");
|
|
||||||
+ }
|
|
||||||
+ result = dns_zone_checknames(zone, name, &rdata);
|
|
||||||
+ if (result != ISC_R_SUCCESS) {
|
|
||||||
+ FAIL(DNS_R_REFUSED);
|
|
||||||
+ }
|
|
||||||
+ } else if (update_class == dns_rdataclass_any) {
|
|
||||||
+ if (ttl != 0 || rdata.length != 0 ||
|
|
||||||
+ (dns_rdatatype_ismeta(rdata.type) &&
|
|
||||||
+ rdata.type != dns_rdatatype_any))
|
|
||||||
+ {
|
|
||||||
+ FAILC(DNS_R_FORMERR, "meta-RR in update");
|
|
||||||
+ }
|
|
||||||
+ } else if (update_class == dns_rdataclass_none) {
|
|
||||||
+ if (ttl != 0 || dns_rdatatype_ismeta(rdata.type)) {
|
|
||||||
+ FAILC(DNS_R_FORMERR, "meta-RR in update");
|
|
||||||
+ }
|
|
||||||
+ } else {
|
|
||||||
+ update_log(client, zone, ISC_LOG_WARNING,
|
|
||||||
+ "update RR has incorrect class %d",
|
|
||||||
+ update_class);
|
|
||||||
+ FAIL(DNS_R_FORMERR);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ /*
|
|
||||||
+ * draft-ietf-dnsind-simple-secure-update-01 says
|
|
||||||
+ * "Unlike traditional dynamic update, the client
|
|
||||||
+ * is forbidden from updating NSEC records."
|
|
||||||
+ */
|
|
||||||
+ if (rdata.type == dns_rdatatype_nsec3) {
|
|
||||||
+ FAILC(DNS_R_REFUSED, "explicit NSEC3 updates are not "
|
|
||||||
+ "allowed "
|
|
||||||
+ "in secure zones");
|
|
||||||
+ } else if (rdata.type == dns_rdatatype_nsec) {
|
|
||||||
+ FAILC(DNS_R_REFUSED, "explicit NSEC updates are not "
|
|
||||||
+ "allowed "
|
|
||||||
+ "in secure zones");
|
|
||||||
+ } else if (rdata.type == dns_rdatatype_rrsig &&
|
|
||||||
+ !dns_name_equal(name, zonename))
|
|
||||||
+ {
|
|
||||||
+ FAILC(DNS_R_REFUSED, "explicit RRSIG updates are "
|
|
||||||
+ "currently "
|
|
||||||
+ "not supported in secure zones "
|
|
||||||
+ "except "
|
|
||||||
+ "at the apex");
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (ssutable != NULL) {
|
|
||||||
+ isc_netaddr_t netaddr;
|
|
||||||
+ dst_key_t *tsigkey = NULL;
|
|
||||||
+ isc_netaddr_fromsockaddr(&netaddr, &client->peeraddr);
|
|
||||||
+
|
|
||||||
+ if (client->message->tsigkey != NULL) {
|
|
||||||
+ tsigkey = client->message->tsigkey->key;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (rdata.type != dns_rdatatype_any) {
|
|
||||||
+ if (!dns_ssutable_checkrules(
|
|
||||||
+ ssutable, client->signer, name,
|
|
||||||
+ &netaddr, TCPCLIENT(client), env,
|
|
||||||
+ rdata.type, tsigkey))
|
|
||||||
+ {
|
|
||||||
+ FAILC(DNS_R_REFUSED, "rejected by "
|
|
||||||
+ "secure update");
|
|
||||||
+ }
|
|
||||||
+ } else {
|
|
||||||
+ if (!ssu_checkall(db, ver, name, ssutable,
|
|
||||||
+ client->signer, &netaddr, env,
|
|
||||||
+ TCPCLIENT(client), tsigkey))
|
|
||||||
+ {
|
|
||||||
+ FAILC(DNS_R_REFUSED, "rejected by "
|
|
||||||
+ "secure update");
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ if (result != ISC_R_NOMORE) {
|
|
||||||
+ FAIL(result);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ update_log(client, zone, LOGLEVEL_DEBUG, "update section prescan OK");
|
|
||||||
+#endif
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
result = isc_quota_attach(&ns_g_server->updquota,
|
|
||||||
&(isc_quota_t *){ NULL });
|
|
||||||
@@ -1558,6 +1833,15 @@ send_update_event(ns_client_t *client, dns_zone_t *zone) {
|
|
||||||
failure:
|
|
||||||
if (event != NULL)
|
|
||||||
isc_event_free(ISC_EVENT_PTR(&event));
|
|
||||||
+ if (db != NULL) {
|
|
||||||
+ dns_db_closeversion(db, &ver, false);
|
|
||||||
+ dns_db_detach(&db);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (ssutable != NULL) {
|
|
||||||
+ dns_ssutable_detach(&ssutable);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
return (result);
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1644,9 +1928,6 @@ ns_update_start(ns_client_t *client, isc_result_t sigresult) {
|
|
||||||
CHECK(send_update_event(client, zone));
|
|
||||||
break;
|
|
||||||
case dns_zone_slave:
|
|
||||||
- CHECK(checkupdateacl(client, dns_zone_getforwardacl(zone),
|
|
||||||
- "update forwarding", zonename, true,
|
|
||||||
- false));
|
|
||||||
CHECK(send_forward_event(client, zone));
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
@@ -1656,7 +1937,6 @@ ns_update_start(ns_client_t *client, isc_result_t sigresult) {
|
|
||||||
|
|
||||||
failure:
|
|
||||||
if (result == DNS_R_REFUSED) {
|
|
||||||
- INSIST(dns_zone_gettype(zone) == dns_zone_slave);
|
|
||||||
inc_stats(zone, dns_nsstatscounter_updaterej);
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
@@ -2520,7 +2800,7 @@ update_action(isc_task_t *task, isc_event_t *event) {
|
|
||||||
dns_rdatatype_t covers;
|
|
||||||
dns_message_t *request = client->message;
|
|
||||||
dns_rdataclass_t zoneclass;
|
|
||||||
- dns_name_t *zonename;
|
|
||||||
+ dns_name_t *zonename = NULL;
|
|
||||||
dns_ssutable_t *ssutable = NULL;
|
|
||||||
dns_fixedname_t tmpnamefixed;
|
|
||||||
dns_name_t *tmpname = NULL;
|
|
||||||
@@ -2542,14 +2822,7 @@ update_action(isc_task_t *task, isc_event_t *event) {
|
|
||||||
zonename = dns_db_origin(db);
|
|
||||||
zoneclass = dns_db_class(db);
|
|
||||||
dns_zone_getssutable(zone, &ssutable);
|
|
||||||
-
|
|
||||||
- /*
|
|
||||||
- * Update message processing can leak record existence information
|
|
||||||
- * so check that we are allowed to query this zone. Additionally
|
|
||||||
- * if we would refuse all updates for this zone we bail out here.
|
|
||||||
- */
|
|
||||||
- CHECK(checkqueryacl(client, dns_zone_getqueryacl(zone), zonename,
|
|
||||||
- dns_zone_getupdateacl(zone), ssutable));
|
|
||||||
+ options = dns_zone_getoptions(zone);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Get old and new versions now that queryacl has been checked.
|
|
||||||
@@ -2673,134 +2946,10 @@ update_action(isc_task_t *task, isc_event_t *event) {
|
|
||||||
update_log(client, zone, LOGLEVEL_DEBUG,
|
|
||||||
"prerequisites are OK");
|
|
||||||
|
|
||||||
- /*
|
|
||||||
- * Check Requestor's Permissions. It seems a bit silly to do this
|
|
||||||
- * only after prerequisite testing, but that is what RFC2136 says.
|
|
||||||
- */
|
|
||||||
- if (ssutable == NULL)
|
|
||||||
- CHECK(checkupdateacl(client, dns_zone_getupdateacl(zone),
|
|
||||||
- "update", zonename, false, false));
|
|
||||||
- else if (client->signer == NULL && !TCPCLIENT(client))
|
|
||||||
- CHECK(checkupdateacl(client, NULL, "update", zonename,
|
|
||||||
- false, true));
|
|
||||||
-
|
|
||||||
- if (dns_zone_getupdatedisabled(zone))
|
|
||||||
- FAILC(DNS_R_REFUSED, "dynamic update temporarily disabled "
|
|
||||||
- "because the zone is frozen. Use "
|
|
||||||
- "'rndc thaw' to re-enable updates.");
|
|
||||||
-
|
|
||||||
- /*
|
|
||||||
- * Perform the Update Section Prescan.
|
|
||||||
- */
|
|
||||||
-
|
|
||||||
- for (result = dns_message_firstname(request, DNS_SECTION_UPDATE);
|
|
||||||
- result == ISC_R_SUCCESS;
|
|
||||||
- result = dns_message_nextname(request, DNS_SECTION_UPDATE))
|
|
||||||
- {
|
|
||||||
- dns_name_t *name = NULL;
|
|
||||||
- dns_rdata_t rdata = DNS_RDATA_INIT;
|
|
||||||
- dns_ttl_t ttl;
|
|
||||||
- dns_rdataclass_t update_class;
|
|
||||||
- get_current_rr(request, DNS_SECTION_UPDATE, zoneclass,
|
|
||||||
- &name, &rdata, &covers, &ttl, &update_class);
|
|
||||||
-
|
|
||||||
- if (! dns_name_issubdomain(name, zonename))
|
|
||||||
- FAILC(DNS_R_NOTZONE,
|
|
||||||
- "update RR is outside zone");
|
|
||||||
- if (update_class == zoneclass) {
|
|
||||||
- /*
|
|
||||||
- * Check for meta-RRs. The RFC2136 pseudocode says
|
|
||||||
- * check for ANY|AXFR|MAILA|MAILB, but the text adds
|
|
||||||
- * "or any other QUERY metatype"
|
|
||||||
- */
|
|
||||||
- if (dns_rdatatype_ismeta(rdata.type)) {
|
|
||||||
- FAILC(DNS_R_FORMERR,
|
|
||||||
- "meta-RR in update");
|
|
||||||
- }
|
|
||||||
- result = dns_zone_checknames(zone, name, &rdata);
|
|
||||||
- if (result != ISC_R_SUCCESS)
|
|
||||||
- FAIL(DNS_R_REFUSED);
|
|
||||||
- } else if (update_class == dns_rdataclass_any) {
|
|
||||||
- if (ttl != 0 || rdata.length != 0 ||
|
|
||||||
- (dns_rdatatype_ismeta(rdata.type) &&
|
|
||||||
- rdata.type != dns_rdatatype_any))
|
|
||||||
- FAILC(DNS_R_FORMERR,
|
|
||||||
- "meta-RR in update");
|
|
||||||
- } else if (update_class == dns_rdataclass_none) {
|
|
||||||
- if (ttl != 0 ||
|
|
||||||
- dns_rdatatype_ismeta(rdata.type))
|
|
||||||
- FAILC(DNS_R_FORMERR,
|
|
||||||
- "meta-RR in update");
|
|
||||||
- } else {
|
|
||||||
- update_log(client, zone, ISC_LOG_WARNING,
|
|
||||||
- "update RR has incorrect class %d",
|
|
||||||
- update_class);
|
|
||||||
- FAIL(DNS_R_FORMERR);
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- /*
|
|
||||||
- * draft-ietf-dnsind-simple-secure-update-01 says
|
|
||||||
- * "Unlike traditional dynamic update, the client
|
|
||||||
- * is forbidden from updating NSEC records."
|
|
||||||
- */
|
|
||||||
- if (rdata.type == dns_rdatatype_nsec3) {
|
|
||||||
- FAILC(DNS_R_REFUSED,
|
|
||||||
- "explicit NSEC3 updates are not allowed "
|
|
||||||
- "in secure zones");
|
|
||||||
- } else if (rdata.type == dns_rdatatype_nsec) {
|
|
||||||
- FAILC(DNS_R_REFUSED,
|
|
||||||
- "explicit NSEC updates are not allowed "
|
|
||||||
- "in secure zones");
|
|
||||||
- } else if (rdata.type == dns_rdatatype_rrsig &&
|
|
||||||
- !dns_name_equal(name, zonename)) {
|
|
||||||
- FAILC(DNS_R_REFUSED,
|
|
||||||
- "explicit RRSIG updates are currently "
|
|
||||||
- "not supported in secure zones except "
|
|
||||||
- "at the apex");
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- if (ssutable != NULL) {
|
|
||||||
- isc_netaddr_t netaddr;
|
|
||||||
- dst_key_t *tsigkey = NULL;
|
|
||||||
- isc_netaddr_fromsockaddr(&netaddr, &client->peeraddr);
|
|
||||||
-
|
|
||||||
- if (client->message->tsigkey != NULL)
|
|
||||||
- tsigkey = client->message->tsigkey->key;
|
|
||||||
-
|
|
||||||
- if (rdata.type != dns_rdatatype_any) {
|
|
||||||
- if (!dns_ssutable_checkrules2
|
|
||||||
- (ssutable, client->signer, name, &netaddr,
|
|
||||||
- TCPCLIENT(client),
|
|
||||||
- &ns_g_server->aclenv,
|
|
||||||
- rdata.type, tsigkey))
|
|
||||||
- {
|
|
||||||
- FAILC(DNS_R_REFUSED,
|
|
||||||
- "rejected by secure update");
|
|
||||||
- }
|
|
||||||
- } else {
|
|
||||||
- if (!ssu_checkall(db, ver, name, ssutable,
|
|
||||||
- client->signer,
|
|
||||||
- &netaddr,
|
|
||||||
- TCPCLIENT(client),
|
|
||||||
- tsigkey))
|
|
||||||
- {
|
|
||||||
- FAILC(DNS_R_REFUSED,
|
|
||||||
- "rejected by secure update");
|
|
||||||
- }
|
|
||||||
- }
|
|
||||||
- }
|
|
||||||
- }
|
|
||||||
- if (result != ISC_R_NOMORE)
|
|
||||||
- FAIL(result);
|
|
||||||
-
|
|
||||||
- update_log(client, zone, LOGLEVEL_DEBUG,
|
|
||||||
- "update section prescan OK");
|
|
||||||
-
|
|
||||||
/*
|
|
||||||
* Process the Update Section.
|
|
||||||
*/
|
|
||||||
|
|
||||||
- options = dns_zone_getoptions(zone);
|
|
||||||
options2 = dns_zone_getoptions2(zone);
|
|
||||||
for (result = dns_message_firstname(request, DNS_SECTION_UPDATE);
|
|
||||||
result == ISC_R_SUCCESS;
|
|
||||||
@@ -3494,6 +3643,13 @@ send_forward_event(ns_client_t *client, dns_zone_t *zone) {
|
|
||||||
isc_task_t *zonetask = NULL;
|
|
||||||
ns_client_t *evclient;
|
|
||||||
|
|
||||||
+ result = checkupdateacl(client, dns_zone_getforwardacl(zone),
|
|
||||||
+ "update forwarding", dns_zone_getorigin(zone),
|
|
||||||
+ true, false);
|
|
||||||
+ if (result != ISC_R_SUCCESS) {
|
|
||||||
+ return (result);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
result = isc_quota_attach(&ns_g_server->updquota,
|
|
||||||
&(isc_quota_t *){ NULL });
|
|
||||||
if (result != ISC_R_SUCCESS) {
|
|
||||||
--
|
|
||||||
2.39.2
|
|
||||||
|
|
@ -1,266 +0,0 @@
|
|||||||
From 3d84c651f823cb90b73fd736d32ad6de57b11610 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Evan Hunt <each@isc.org>
|
|
||||||
Date: Wed, 9 Nov 2022 21:56:16 -0800
|
|
||||||
Subject: [PATCH] test failure conditions
|
|
||||||
|
|
||||||
verify that updates are refused when the client is disallowed by
|
|
||||||
allow-query, and update forwarding is refused when the client is
|
|
||||||
is disallowed by update-forwarding.
|
|
||||||
|
|
||||||
verify that "too many DNS UPDATEs" appears in the log file when too
|
|
||||||
many simultaneous updates are processing.
|
|
||||||
|
|
||||||
(cherry picked from commit b91339b80e5b82a56622c93cc1e3cca2d0c11bc0)
|
|
||||||
---
|
|
||||||
bin/tests/system/nsupdate/ns1/named.conf.in | 2 +
|
|
||||||
bin/tests/system/nsupdate/tests.sh | 28 +++++++++++++
|
|
||||||
bin/tests/system/upforwd/clean.sh | 2 +
|
|
||||||
.../ns3/{named.conf.in => named1.conf.in} | 7 +++-
|
|
||||||
bin/tests/system/upforwd/ns3/named2.conf.in | 41 +++++++++++++++++++
|
|
||||||
bin/tests/system/upforwd/setup.sh | 2 +-
|
|
||||||
bin/tests/system/upforwd/tests.sh | 40 ++++++++++++++++++
|
|
||||||
7 files changed, 120 insertions(+), 2 deletions(-)
|
|
||||||
rename bin/tests/system/upforwd/ns3/{named.conf.in => named1.conf.in} (85%)
|
|
||||||
create mode 100644 bin/tests/system/upforwd/ns3/named2.conf.in
|
|
||||||
|
|
||||||
diff --git a/bin/tests/system/nsupdate/ns1/named.conf.in b/bin/tests/system/nsupdate/ns1/named.conf.in
|
|
||||||
index cb80269..228ad6a 100644
|
|
||||||
--- a/bin/tests/system/nsupdate/ns1/named.conf.in
|
|
||||||
+++ b/bin/tests/system/nsupdate/ns1/named.conf.in
|
|
||||||
@@ -20,6 +20,7 @@ options {
|
|
||||||
listen-on-v6 { none; };
|
|
||||||
recursion no;
|
|
||||||
notify yes;
|
|
||||||
+ update-quota 1;
|
|
||||||
};
|
|
||||||
|
|
||||||
key rndc_key {
|
|
||||||
@@ -76,6 +77,7 @@ zone "other.nil" {
|
|
||||||
check-integrity no;
|
|
||||||
check-mx warn;
|
|
||||||
update-policy local;
|
|
||||||
+ allow-query { !10.53.0.2; any; };
|
|
||||||
allow-query-on { 10.53.0.1; 127.0.0.1; };
|
|
||||||
allow-transfer { any; };
|
|
||||||
};
|
|
||||||
diff --git a/bin/tests/system/nsupdate/tests.sh b/bin/tests/system/nsupdate/tests.sh
|
|
||||||
index f8994ff..4cabf8d 100755
|
|
||||||
--- a/bin/tests/system/nsupdate/tests.sh
|
|
||||||
+++ b/bin/tests/system/nsupdate/tests.sh
|
|
||||||
@@ -1069,6 +1069,34 @@ END
|
|
||||||
grep "NSEC3PARAM has excessive iterations (> 150)" nsupdate.out-$n >/dev/null || ret=1
|
|
||||||
[ $ret = 0 ] || { echo_i "failed"; status=1; }
|
|
||||||
|
|
||||||
+n=$((n + 1))
|
|
||||||
+ret=0
|
|
||||||
+echo_i "check that update is rejected if query is not allowed ($n)"
|
|
||||||
+{
|
|
||||||
+ $NSUPDATE -d <<END
|
|
||||||
+ local 10.53.0.2
|
|
||||||
+ server 10.53.0.1 ${PORT}
|
|
||||||
+ update add reject.other.nil 3600 IN TXT Whatever
|
|
||||||
+ send
|
|
||||||
+END
|
|
||||||
+} > nsupdate.out.test$n 2>&1
|
|
||||||
+grep 'status: REFUSED' nsupdate.out.test$n > /dev/null || ret=1
|
|
||||||
+[ $ret = 0 ] || { echo_i "failed"; status=1; }
|
|
||||||
+
|
|
||||||
+n=$((n + 1))
|
|
||||||
+ret=0
|
|
||||||
+echo_i "check that update is rejected if quota is exceeded ($n)"
|
|
||||||
+for loop in 1 2 3 4 5 6 7 8 9 10; do
|
|
||||||
+{
|
|
||||||
+ $NSUPDATE -l -p ${PORT} -k ns1/session.key > nsupdate.out.test$n-${loop} 2>&1 <<END
|
|
||||||
+ update add txt-$loop.other.nil 3600 IN TXT Whatever
|
|
||||||
+ send
|
|
||||||
+END
|
|
||||||
+} &
|
|
||||||
+done
|
|
||||||
+wait_for_log 10 "too many DNS UPDATEs queued" ns1/named.run || ret=1
|
|
||||||
+[ $ret = 0 ] || { echo_i "failed"; status=1; }
|
|
||||||
+
|
|
||||||
if $FEATURETEST --gssapi ; then
|
|
||||||
n=`expr $n + 1`
|
|
||||||
ret=0
|
|
||||||
diff --git a/bin/tests/system/upforwd/clean.sh b/bin/tests/system/upforwd/clean.sh
|
|
||||||
index 15cf423..832c727 100644
|
|
||||||
--- a/bin/tests/system/upforwd/clean.sh
|
|
||||||
+++ b/bin/tests/system/upforwd/clean.sh
|
|
||||||
@@ -24,3 +24,5 @@ rm -f Ksig0.example2.*
|
|
||||||
rm -f keyname
|
|
||||||
rm -f ns*/named.lock
|
|
||||||
rm -f ns1/example2.db
|
|
||||||
+rm -f nsupdate.out.*
|
|
||||||
+rm -f ns*/named.run.prev
|
|
||||||
diff --git a/bin/tests/system/upforwd/ns3/named.conf.in b/bin/tests/system/upforwd/ns3/named1.conf.in
|
|
||||||
similarity index 85%
|
|
||||||
rename from bin/tests/system/upforwd/ns3/named.conf.in
|
|
||||||
rename to bin/tests/system/upforwd/ns3/named1.conf.in
|
|
||||||
index e81cd1a..83a490f 100644
|
|
||||||
--- a/bin/tests/system/upforwd/ns3/named.conf.in
|
|
||||||
+++ b/bin/tests/system/upforwd/ns3/named1.conf.in
|
|
||||||
@@ -22,10 +22,15 @@ options {
|
|
||||||
notify yes;
|
|
||||||
};
|
|
||||||
|
|
||||||
+include "../../common/rndc.key";
|
|
||||||
+controls {
|
|
||||||
+ inet 10.53.0.3 port @CONTROLPORT@ allow { any; } keys { rndc_key; };
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
zone "example" {
|
|
||||||
type slave;
|
|
||||||
file "example.bk";
|
|
||||||
- allow-update-forwarding { any; };
|
|
||||||
+ allow-update-forwarding { 10.53.0.1; };
|
|
||||||
masters { 10.53.0.1; };
|
|
||||||
};
|
|
||||||
|
|
||||||
diff --git a/bin/tests/system/upforwd/ns3/named2.conf.in b/bin/tests/system/upforwd/ns3/named2.conf.in
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000..992cd69
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/bin/tests/system/upforwd/ns3/named2.conf.in
|
|
||||||
@@ -0,0 +1,41 @@
|
|
||||||
+/*
|
|
||||||
+ * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
|
||||||
+ *
|
|
||||||
+ * SPDX-License-Identifier: MPL-2.0
|
|
||||||
+ *
|
|
||||||
+ * This Source Code Form is subject to the terms of the Mozilla Public
|
|
||||||
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
||||||
+ * file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
|
||||||
+ *
|
|
||||||
+ * See the COPYRIGHT file distributed with this work for additional
|
|
||||||
+ * information regarding copyright ownership.
|
|
||||||
+ */
|
|
||||||
+
|
|
||||||
+options {
|
|
||||||
+ query-source address 10.53.0.3;
|
|
||||||
+ notify-source 10.53.0.3;
|
|
||||||
+ transfer-source 10.53.0.3;
|
|
||||||
+ port @PORT@;
|
|
||||||
+ pid-file "named.pid";
|
|
||||||
+ listen-on { 10.53.0.3; };
|
|
||||||
+ listen-on-v6 { none; };
|
|
||||||
+ recursion no;
|
|
||||||
+ notify yes;
|
|
||||||
+ update-quota 1;
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+key rndc_key {
|
|
||||||
+ secret "1234abcd8765";
|
|
||||||
+ algorithm hmac-sha256;
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+controls {
|
|
||||||
+ inet 10.53.0.3 port @CONTROLPORT@ allow { any; } keys { rndc_key; };
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+zone "example" {
|
|
||||||
+ type slave;
|
|
||||||
+ file "example.bk";
|
|
||||||
+ allow-update-forwarding { any; };
|
|
||||||
+ masters { 10.53.0.1; };
|
|
||||||
+};
|
|
||||||
diff --git a/bin/tests/system/upforwd/setup.sh b/bin/tests/system/upforwd/setup.sh
|
|
||||||
index 74c7ba3..928902b 100644
|
|
||||||
--- a/bin/tests/system/upforwd/setup.sh
|
|
||||||
+++ b/bin/tests/system/upforwd/setup.sh
|
|
||||||
@@ -17,7 +17,7 @@ cp -f ns3/nomaster.db ns3/nomaster1.db
|
|
||||||
|
|
||||||
copy_setports ns1/named.conf.in ns1/named.conf
|
|
||||||
copy_setports ns2/named.conf.in ns2/named.conf
|
|
||||||
-copy_setports ns3/named.conf.in ns3/named.conf
|
|
||||||
+copy_setports ns3/named1.conf.in ns3/named.conf
|
|
||||||
|
|
||||||
#
|
|
||||||
# SIG(0) required cryptographic support which may not be configured.
|
|
||||||
diff --git a/bin/tests/system/upforwd/tests.sh b/bin/tests/system/upforwd/tests.sh
|
|
||||||
index f4c3216..ebc9ded 100644
|
|
||||||
--- a/bin/tests/system/upforwd/tests.sh
|
|
||||||
+++ b/bin/tests/system/upforwd/tests.sh
|
|
||||||
@@ -17,6 +17,7 @@ SYSTEMTESTTOP=..
|
|
||||||
. $SYSTEMTESTTOP/conf.sh
|
|
||||||
|
|
||||||
DIGOPTS="+tcp +noadd +nosea +nostat +noquest +nocomm +nocmd -p ${PORT}"
|
|
||||||
+RNDCCMD="$RNDC -c $SYSTEMTESTTOP/common/rndc.conf -p ${CONTROLPORT} -s"
|
|
||||||
|
|
||||||
status=0
|
|
||||||
n=1
|
|
||||||
@@ -69,6 +70,7 @@ if [ $ret != 0 ] ; then echo_i "failed"; status=`expr $status + $ret`; fi
|
|
||||||
echo_i "updating zone (signed) ($n)"
|
|
||||||
ret=0
|
|
||||||
$NSUPDATE -y hmac-sha256:update.example:c3Ryb25nIGVub3VnaCBmb3IgYSBtYW4gYnV0IG1hZGUgZm9yIGEgd29tYW4K -- - <<EOF || ret=1
|
|
||||||
+local 10.53.0.1
|
|
||||||
server 10.53.0.3 ${PORT}
|
|
||||||
update add updated.example. 600 A 10.10.10.1
|
|
||||||
update add updated.example. 600 TXT Foo
|
|
||||||
@@ -116,6 +118,7 @@ n=`expr $n + 1`
|
|
||||||
echo_i "updating zone (unsigned) ($n)"
|
|
||||||
ret=0
|
|
||||||
$NSUPDATE -- - <<EOF || ret=1
|
|
||||||
+local 10.53.0.1
|
|
||||||
server 10.53.0.3 ${PORT}
|
|
||||||
update add unsigned.example. 600 A 10.10.10.1
|
|
||||||
update add unsigned.example. 600 TXT Foo
|
|
||||||
@@ -161,6 +164,7 @@ while [ $count -lt 5 -a $ret -eq 0 ]
|
|
||||||
do
|
|
||||||
(
|
|
||||||
$NSUPDATE -- - <<EOF
|
|
||||||
+local 10.53.0.1
|
|
||||||
server 10.53.0.3 ${PORT}
|
|
||||||
zone nomaster
|
|
||||||
update add unsigned.nomaster. 600 A 10.10.10.1
|
|
||||||
@@ -181,6 +185,7 @@ then
|
|
||||||
ret=0
|
|
||||||
keyname=`cat keyname`
|
|
||||||
$NSUPDATE -k $keyname.private -- - <<EOF
|
|
||||||
+ local 10.53.0.1
|
|
||||||
server 10.53.0.3 ${PORT}
|
|
||||||
zone example2
|
|
||||||
update add unsigned.example2. 600 A 10.10.10.1
|
|
||||||
@@ -194,5 +199,40 @@ EOF
|
|
||||||
n=`expr $n + 1`
|
|
||||||
fi
|
|
||||||
|
|
||||||
+echo_i "attempting an update that should be rejected by ACL ($n)"
|
|
||||||
+ret=0
|
|
||||||
+{
|
|
||||||
+ $NSUPDATE -- - << EOF
|
|
||||||
+ local 10.53.0.2
|
|
||||||
+ server 10.53.0.3 ${PORT}
|
|
||||||
+ update add another.unsigned.example. 600 A 10.10.10.2
|
|
||||||
+ update add another.unsigned.example. 600 TXT Bar
|
|
||||||
+ send
|
|
||||||
+EOF
|
|
||||||
+} > nsupdate.out.$n 2>&1
|
|
||||||
+grep REFUSED nsupdate.out.$n > /dev/null || ret=1
|
|
||||||
+if [ $ret != 0 ] ; then echo_i "failed"; status=`expr $status + $ret`; fi
|
|
||||||
+n=`expr $n + 1`
|
|
||||||
+
|
|
||||||
+n=$((n + 1))
|
|
||||||
+ret=0
|
|
||||||
+echo_i "attempting updates that should exceed quota ($n)"
|
|
||||||
+# lower the update quota to 1.
|
|
||||||
+copy_setports ns3/named2.conf.in ns3/named.conf
|
|
||||||
+$RNDCCMD 10.53.0.3 reconfig
|
|
||||||
+nextpart ns3/named.run > /dev/null
|
|
||||||
+for loop in 1 2 3 4 5 6 7 8 9 10; do
|
|
||||||
+{
|
|
||||||
+ $NSUPDATE -- - > /dev/null 2>&1 <<END
|
|
||||||
+ local 10.53.0.1
|
|
||||||
+ server 10.53.0.3 ${PORT}
|
|
||||||
+ update add txt-$loop.unsigned.example 300 IN TXT Whatever
|
|
||||||
+ send
|
|
||||||
+END
|
|
||||||
+} &
|
|
||||||
+done
|
|
||||||
+wait_for_log 10 "too many DNS UPDATEs queued" ns3/named.run || ret=1
|
|
||||||
+[ $ret = 0 ] || { echo_i "failed"; status=1; }
|
|
||||||
+
|
|
||||||
echo_i "exit status: $status"
|
|
||||||
[ $status -eq 0 ] || exit 1
|
|
||||||
--
|
|
||||||
2.39.2
|
|
||||||
|
|
@ -1,27 +0,0 @@
|
|||||||
From 0095b8a6b09173ab5eb48611dc0233d2a6337dc1 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Petr Mensik <pemensik@redhat.com>
|
|
||||||
Date: Tue, 20 Sep 2022 11:21:45 +0200
|
|
||||||
Subject: [PATCH] Fix CVE-2022-38177
|
|
||||||
|
|
||||||
5961. [security] Fix memory leak in ECDSA verify processing.
|
|
||||||
(CVE-2022-38177) [GL #3487]
|
|
||||||
---
|
|
||||||
lib/dns/opensslecdsa_link.c | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/lib/dns/opensslecdsa_link.c b/lib/dns/opensslecdsa_link.c
|
|
||||||
index 83b5b51..7576e04 100644
|
|
||||||
--- a/lib/dns/opensslecdsa_link.c
|
|
||||||
+++ b/lib/dns/opensslecdsa_link.c
|
|
||||||
@@ -224,7 +224,7 @@ opensslecdsa_verify(dst_context_t *dctx, const isc_region_t *sig) {
|
|
||||||
siglen = DNS_SIG_ECDSA384SIZE;
|
|
||||||
|
|
||||||
if (sig->length != siglen)
|
|
||||||
- return (DST_R_VERIFYFAILURE);
|
|
||||||
+ DST_RET(DST_R_VERIFYFAILURE);
|
|
||||||
|
|
||||||
if (!EVP_DigestFinal_ex(evp_md_ctx, digest, &dgstlen))
|
|
||||||
DST_RET (dst__openssl_toresult3(dctx->category,
|
|
||||||
--
|
|
||||||
2.37.3
|
|
||||||
|
|
@ -1,27 +0,0 @@
|
|||||||
From bb68864bf05d29df644427ec841bc3db6a336519 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Petr Mensik <pemensik@redhat.com>
|
|
||||||
Date: Tue, 20 Sep 2022 11:22:47 +0200
|
|
||||||
Subject: [PATCH] Fix CVE-2022-38178
|
|
||||||
|
|
||||||
5962. [security] Fix memory leak in EdDSA verify processing.
|
|
||||||
(CVE-2022-38178) [GL #3487]
|
|
||||||
---
|
|
||||||
lib/dns/openssleddsa_link.c | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/lib/dns/openssleddsa_link.c b/lib/dns/openssleddsa_link.c
|
|
||||||
index 8b115ec..4f3c2a8 100644
|
|
||||||
--- a/lib/dns/openssleddsa_link.c
|
|
||||||
+++ b/lib/dns/openssleddsa_link.c
|
|
||||||
@@ -325,7 +325,7 @@ openssleddsa_verify(dst_context_t *dctx, const isc_region_t *sig) {
|
|
||||||
siglen = DNS_SIG_ED448SIZE;
|
|
||||||
|
|
||||||
if (sig->length != siglen)
|
|
||||||
- return (DST_R_VERIFYFAILURE);
|
|
||||||
+ DST_RET(DST_R_VERIFYFAILURE);
|
|
||||||
|
|
||||||
isc_buffer_usedregion(buf, &tbsreg);
|
|
||||||
|
|
||||||
--
|
|
||||||
2.37.3
|
|
||||||
|
|
@ -1,166 +0,0 @@
|
|||||||
From 3883ec072e5feed1237dc864854ab95ded7302d6 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Petr Mensik <pemensik@redhat.com>
|
|
||||||
Date: Tue, 19 Sep 2023 13:14:52 +0200
|
|
||||||
Subject: [PATCH] Backport of CVE-2023-3341 fix
|
|
||||||
|
|
||||||
Taken from BIND 9.16.44 change.
|
|
||||||
---
|
|
||||||
lib/isccc/cc.c | 36 +++++++++++++++++++++++---------
|
|
||||||
lib/isccc/include/isccc/result.h | 4 +++-
|
|
||||||
lib/isccc/result.c | 4 +++-
|
|
||||||
3 files changed, 32 insertions(+), 12 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/lib/isccc/cc.c b/lib/isccc/cc.c
|
|
||||||
index 463a053..a54e60c 100644
|
|
||||||
--- a/lib/isccc/cc.c
|
|
||||||
+++ b/lib/isccc/cc.c
|
|
||||||
@@ -53,6 +53,10 @@
|
|
||||||
|
|
||||||
#define MAX_TAGS 256
|
|
||||||
#define DUP_LIFETIME 900
|
|
||||||
+#ifndef ISCCC_MAXDEPTH
|
|
||||||
+#define ISCCC_MAXDEPTH \
|
|
||||||
+ 10 /* Big enough for rndc which just sends a string each way. */
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
typedef isccc_sexpr_t *sexpr_ptr;
|
|
||||||
|
|
||||||
@@ -573,19 +577,23 @@ verify(isccc_sexpr_t *alist, unsigned char *data, unsigned int length,
|
|
||||||
|
|
||||||
static isc_result_t
|
|
||||||
table_fromwire(isccc_region_t *source, isccc_region_t *secret,
|
|
||||||
- uint32_t algorithm, isccc_sexpr_t **alistp);
|
|
||||||
+ uint32_t algorithm, unsigned int depth, isccc_sexpr_t **alistp);
|
|
||||||
|
|
||||||
static isc_result_t
|
|
||||||
-list_fromwire(isccc_region_t *source, isccc_sexpr_t **listp);
|
|
||||||
+list_fromwire(isccc_region_t *source, unsigned int depth, isccc_sexpr_t **listp);
|
|
||||||
|
|
||||||
static isc_result_t
|
|
||||||
-value_fromwire(isccc_region_t *source, isccc_sexpr_t **valuep) {
|
|
||||||
+value_fromwire(isccc_region_t *source, unsigned int depth, isccc_sexpr_t **valuep) {
|
|
||||||
unsigned int msgtype;
|
|
||||||
uint32_t len;
|
|
||||||
isccc_sexpr_t *value;
|
|
||||||
isccc_region_t active;
|
|
||||||
isc_result_t result;
|
|
||||||
|
|
||||||
+ if (depth > ISCCC_MAXDEPTH) {
|
|
||||||
+ return (ISCCC_R_MAXDEPTH);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
if (REGION_SIZE(*source) < 1 + 4)
|
|
||||||
return (ISC_R_UNEXPECTEDEND);
|
|
||||||
GET8(msgtype, source->rstart);
|
|
||||||
@@ -603,9 +611,9 @@ value_fromwire(isccc_region_t *source, isccc_sexpr_t **valuep) {
|
|
||||||
} else
|
|
||||||
result = ISC_R_NOMEMORY;
|
|
||||||
} else if (msgtype == ISCCC_CCMSGTYPE_TABLE)
|
|
||||||
- result = table_fromwire(&active, NULL, 0, valuep);
|
|
||||||
+ result = table_fromwire(&active, NULL, 0, depth + 1, valuep);
|
|
||||||
else if (msgtype == ISCCC_CCMSGTYPE_LIST)
|
|
||||||
- result = list_fromwire(&active, valuep);
|
|
||||||
+ result = list_fromwire(&active, depth + 1, valuep);
|
|
||||||
else
|
|
||||||
result = ISCCC_R_SYNTAX;
|
|
||||||
|
|
||||||
@@ -614,7 +622,7 @@ value_fromwire(isccc_region_t *source, isccc_sexpr_t **valuep) {
|
|
||||||
|
|
||||||
static isc_result_t
|
|
||||||
table_fromwire(isccc_region_t *source, isccc_region_t *secret,
|
|
||||||
- uint32_t algorithm, isccc_sexpr_t **alistp)
|
|
||||||
+ uint32_t algorithm, unsigned int depth, isccc_sexpr_t **alistp)
|
|
||||||
{
|
|
||||||
char key[256];
|
|
||||||
uint32_t len;
|
|
||||||
@@ -625,6 +633,10 @@ table_fromwire(isccc_region_t *source, isccc_region_t *secret,
|
|
||||||
|
|
||||||
REQUIRE(alistp != NULL && *alistp == NULL);
|
|
||||||
|
|
||||||
+ if (depth > ISCCC_MAXDEPTH) {
|
|
||||||
+ return (ISCCC_R_MAXDEPTH);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
checksum_rstart = NULL;
|
|
||||||
first_tag = true;
|
|
||||||
alist = isccc_alist_create();
|
|
||||||
@@ -640,7 +652,7 @@ table_fromwire(isccc_region_t *source, isccc_region_t *secret,
|
|
||||||
GET_MEM(key, len, source->rstart);
|
|
||||||
key[len] = '\0'; /* Ensure NUL termination. */
|
|
||||||
value = NULL;
|
|
||||||
- result = value_fromwire(source, &value);
|
|
||||||
+ result = value_fromwire(source, depth + 1, &value);
|
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
goto bad;
|
|
||||||
if (isccc_alist_define(alist, key, value) == NULL) {
|
|
||||||
@@ -673,14 +685,18 @@ table_fromwire(isccc_region_t *source, isccc_region_t *secret,
|
|
||||||
}
|
|
||||||
|
|
||||||
static isc_result_t
|
|
||||||
-list_fromwire(isccc_region_t *source, isccc_sexpr_t **listp) {
|
|
||||||
+list_fromwire(isccc_region_t *source, unsigned int depth, isccc_sexpr_t **listp) {
|
|
||||||
isccc_sexpr_t *list, *value;
|
|
||||||
isc_result_t result;
|
|
||||||
|
|
||||||
+ if (depth > ISCCC_MAXDEPTH) {
|
|
||||||
+ return (ISCCC_R_MAXDEPTH);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
list = NULL;
|
|
||||||
while (!REGION_EMPTY(*source)) {
|
|
||||||
value = NULL;
|
|
||||||
- result = value_fromwire(source, &value);
|
|
||||||
+ result = value_fromwire(source, depth + 1, &value);
|
|
||||||
if (result != ISC_R_SUCCESS) {
|
|
||||||
isccc_sexpr_free(&list);
|
|
||||||
return (result);
|
|
||||||
@@ -711,7 +727,7 @@ isccc_cc_fromwire(isccc_region_t *source, isccc_sexpr_t **alistp,
|
|
||||||
if (version != 1)
|
|
||||||
return (ISCCC_R_UNKNOWNVERSION);
|
|
||||||
|
|
||||||
- return (table_fromwire(source, secret, algorithm, alistp));
|
|
||||||
+ return (table_fromwire(source, secret, algorithm, 0, alistp));
|
|
||||||
}
|
|
||||||
|
|
||||||
static isc_result_t
|
|
||||||
diff --git a/lib/isccc/include/isccc/result.h b/lib/isccc/include/isccc/result.h
|
|
||||||
index 6c79dd7..b30b08a 100644
|
|
||||||
--- a/lib/isccc/include/isccc/result.h
|
|
||||||
+++ b/lib/isccc/include/isccc/result.h
|
|
||||||
@@ -47,8 +47,10 @@
|
|
||||||
#define ISCCC_R_CLOCKSKEW (ISC_RESULTCLASS_ISCCC + 4)
|
|
||||||
/*% Duplicate */
|
|
||||||
#define ISCCC_R_DUPLICATE (ISC_RESULTCLASS_ISCCC + 5)
|
|
||||||
+/*% Maximum recursion depth */
|
|
||||||
+#define ISCCC_R_MAXDEPTH (ISC_RESULTCLASS_ISCCC + 6)
|
|
||||||
|
|
||||||
-#define ISCCC_R_NRESULTS 6 /*%< Number of results */
|
|
||||||
+#define ISCCC_R_NRESULTS 7 /*%< Number of results */
|
|
||||||
|
|
||||||
ISC_LANG_BEGINDECLS
|
|
||||||
|
|
||||||
diff --git a/lib/isccc/result.c b/lib/isccc/result.c
|
|
||||||
index 8419bbb..a3a3b9a 100644
|
|
||||||
--- a/lib/isccc/result.c
|
|
||||||
+++ b/lib/isccc/result.c
|
|
||||||
@@ -40,7 +40,8 @@ static const char *text[ISCCC_R_NRESULTS] = {
|
|
||||||
"bad auth", /* 3 */
|
|
||||||
"expired", /* 4 */
|
|
||||||
"clock skew", /* 5 */
|
|
||||||
- "duplicate" /* 6 */
|
|
||||||
+ "duplicate", /* 6 */
|
|
||||||
+ "max depth", /* 7 */
|
|
||||||
};
|
|
||||||
|
|
||||||
static const char *ids[ISCCC_R_NRESULTS] = {
|
|
||||||
@@ -50,6 +51,7 @@ static const char *ids[ISCCC_R_NRESULTS] = {
|
|
||||||
"ISCCC_R_EXPIRED",
|
|
||||||
"ISCCC_R_CLOCKSKEW",
|
|
||||||
"ISCCC_R_DUPLICATE",
|
|
||||||
+ "ISCCC_R_MAXDEPTH"
|
|
||||||
};
|
|
||||||
|
|
||||||
#define ISCCC_RESULT_RESULTSET 2
|
|
||||||
--
|
|
||||||
2.41.0
|
|
||||||
|
|
60
SOURCES/bind-9.16-redhat_doc.patch
Normal file
60
SOURCES/bind-9.16-redhat_doc.patch
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
From 3a161af91bffcd457586ab466e32ac8484028763 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Petr Mensik <pemensik@redhat.com>
|
||||||
|
Date: Wed, 17 Jun 2020 23:17:13 +0200
|
||||||
|
Subject: [PATCH] Update man named with Red Hat specifics
|
||||||
|
|
||||||
|
This is almost unmodified text and requires revalidation. Some of those
|
||||||
|
statements are no longer correct.
|
||||||
|
---
|
||||||
|
bin/named/named.rst | 35 +++++++++++++++++++++++++++++++++++
|
||||||
|
1 file changed, 35 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/bin/named/named.rst b/bin/named/named.rst
|
||||||
|
index 6fd8f87..3cd6350 100644
|
||||||
|
--- a/bin/named/named.rst
|
||||||
|
+++ b/bin/named/named.rst
|
||||||
|
@@ -228,6 +228,41 @@ Files
|
||||||
|
``/var/run/named/named.pid``
|
||||||
|
The default process-id file.
|
||||||
|
|
||||||
|
+Notes
|
||||||
|
+~~~~~
|
||||||
|
+
|
||||||
|
+**Red Hat SELinux BIND Security Profile:**
|
||||||
|
+
|
||||||
|
+By default, Red Hat ships BIND with the most secure SELinux policy
|
||||||
|
+that will not prevent normal BIND operation and will prevent exploitation
|
||||||
|
+of all known BIND security vulnerabilities. See the selinux(8) man page
|
||||||
|
+for information about SElinux.
|
||||||
|
+
|
||||||
|
+It is not necessary to run named in a chroot environment if the Red Hat
|
||||||
|
+SELinux policy for named is enabled. When enabled, this policy is far
|
||||||
|
+more secure than a chroot environment. Users are recommended to enable
|
||||||
|
+SELinux and remove the bind-chroot package.
|
||||||
|
+
|
||||||
|
+*With this extra security comes some restrictions:*
|
||||||
|
+
|
||||||
|
+By default, the SELinux policy does not allow named to write outside directory
|
||||||
|
+/var/named. That directory used to be read-only for named, but write access is
|
||||||
|
+enabled by default now.
|
||||||
|
+
|
||||||
|
+The "named" group must be granted read privelege to
|
||||||
|
+these files in order for named to be enabled to read them.
|
||||||
|
+Any file updated by named must be writeable by named user or named group.
|
||||||
|
+
|
||||||
|
+Any file created in the zone database file directory is automatically assigned
|
||||||
|
+the SELinux file context *named_zone_t* .
|
||||||
|
+
|
||||||
|
+The Red Hat BIND distribution and SELinux policy creates three directories where
|
||||||
|
+named were allowed to create and modify files: */var/named/slaves*, */var/named/dynamic*
|
||||||
|
+*/var/named/data*. The service is able to write and file under */var/named* with appropriate
|
||||||
|
+permissions. They are used for better organisation of zones and backward compatibility.
|
||||||
|
+Files in these directories are automatically assigned the '*named_cache_t*'
|
||||||
|
+file context, which SELinux always allows named to write.
|
||||||
|
+
|
||||||
|
See Also
|
||||||
|
~~~~~~~~
|
||||||
|
|
||||||
|
--
|
||||||
|
2.26.2
|
||||||
|
|
@ -1,31 +0,0 @@
|
|||||||
From 4e595a6b961e73af43350833109ccba0950119f9 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Mark Andrews <marka@isc.org>
|
|
||||||
Date: Thu, 12 Oct 2023 10:19:38 +1100
|
|
||||||
Subject: [PATCH] Update b.root-servers.net IP addresses
|
|
||||||
|
|
||||||
This covers both root hints and the default primaries for the root
|
|
||||||
zone mirror. The official change date is Nov 27, 2023.
|
|
||||||
|
|
||||||
(cherry picked from commit 2ca2f7e9852a3d6e93f065c01ea4679f723688f7)
|
|
||||||
---
|
|
||||||
lib/dns/rootns.c | 4 ++--
|
|
||||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/lib/dns/rootns.c b/lib/dns/rootns.c
|
|
||||||
index 9653f3b..d6ff76e 100644
|
|
||||||
--- a/lib/dns/rootns.c
|
|
||||||
+++ b/lib/dns/rootns.c
|
|
||||||
@@ -56,8 +56,8 @@ static char root_ns[] =
|
|
||||||
". 518400 IN NS M.ROOT-SERVERS.NET.\n"
|
|
||||||
"A.ROOT-SERVERS.NET. 3600000 IN A 198.41.0.4\n"
|
|
||||||
"A.ROOT-SERVERS.NET. 3600000 IN AAAA 2001:503:BA3E::2:30\n"
|
|
||||||
-"B.ROOT-SERVERS.NET. 3600000 IN A 199.9.14.201\n"
|
|
||||||
-"B.ROOT-SERVERS.NET. 3600000 IN AAAA 2001:500:200::b\n"
|
|
||||||
+"B.ROOT-SERVERS.NET. 3600000 IN A 170.247.170.2\n"
|
|
||||||
+"B.ROOT-SERVERS.NET. 3600000 IN AAAA 2801:1b8:10::b\n"
|
|
||||||
"C.ROOT-SERVERS.NET. 3600000 IN A 192.33.4.12\n"
|
|
||||||
"C.ROOT-SERVERS.NET. 3600000 IN AAAA 2001:500:2::c\n"
|
|
||||||
"D.ROOT-SERVERS.NET. 3600000 IN A 199.7.91.13\n"
|
|
||||||
--
|
|
||||||
2.43.0
|
|
||||||
|
|
17
SOURCES/bind-9.16.23.tar.xz.asc
Normal file
17
SOURCES/bind-9.16.23.tar.xz.asc
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
-----BEGIN PGP SIGNATURE-----
|
||||||
|
Comment: GPGTools - https://gpgtools.org
|
||||||
|
|
||||||
|
iQIzBAABAgAdFiEEqtu6UHTxQC97adVrxbTukxqfnf0FAmGKhMcACgkQxbTukxqf
|
||||||
|
nf1EbQ//YXsBbMtyI3c0MoleSi5zwzcpCTZTWTFHqH5WUiruLMDF453j/Fn2zaSC
|
||||||
|
WuaUnhN61dR+BVtX+D2Y8GiVQFICo5X1nJj0jb/TcflXFq7YLWUAO0NPwPkBL1J4
|
||||||
|
/PA0YCp1zYcvBXIxTKaU7AcBxlKmcGLdZcgCyGU6NSKaOJSxHOWXM460uD/crskB
|
||||||
|
iSPEbMevN9TTJs9webztJNKH/3BuNkOD9SFb6JlUIQqwKx1v8rosgdI7BvgGMZqy
|
||||||
|
s+10+GlIRFFvsX2XkX8BnjDlQ1QdzDOAoyCU+Se9rXDqu+zZf1VN4ReUCSDuPYf9
|
||||||
|
z+GW1EbMxuZzEKrEIJvhnVNNiHqtKVaK6IIUX5bHqgPLEx87HxJMOPmbyBc1kDAe
|
||||||
|
0WCmsITaq62WvKOG8Ho8wLrlG4AAO5+A7xit4bJ4XUtLiqyt+9FUIeEFY9nZb/6O
|
||||||
|
OXK9eBMZHZ++r52RtA+GYZllkNRpzwnULOdR/9svVQuc10/MjnRoFqInzLlqwfwm
|
||||||
|
2q6r372oWn8+MUvjQVBgzprn5BvY+HDo2gNEYEi5QyR3ql2dX/Qz7iUdUfhRvMNL
|
||||||
|
FdPt3B3kktfOV98p/imrIwLwVVWwKBlphntkRxLtSZBs3nbo27F/ND54fixC2eCa
|
||||||
|
epB6FF5IquzQ/MOiz4uql3YexNDQQ+7N2IGPJVMwO2ILAyZDNOQ=
|
||||||
|
=pVtf
|
||||||
|
-----END PGP SIGNATURE-----
|
@ -1,63 +0,0 @@
|
|||||||
srcdir = @srcdir@
|
|
||||||
VPATH = @srcdir@
|
|
||||||
top_srcdir = @top_srcdir@
|
|
||||||
|
|
||||||
VERSION=@BIND9_VERSION@
|
|
||||||
|
|
||||||
@BIND9_MAKE_INCLUDES@
|
|
||||||
|
|
||||||
CINCLUDES = -I${srcdir}/include -I${srcdir}/unix/include \
|
|
||||||
${LWRES_INCLUDES} ${DNS_INCLUDES} ${BIND9_INCLUDES} \
|
|
||||||
${ISCCFG_INCLUDES} ${ISCCC_INCLUDES} ${ISC_INCLUDES}
|
|
||||||
|
|
||||||
CDEFINES = -DBIND9
|
|
||||||
|
|
||||||
DNSLIBS = ../../lib/dns/libdns.@A@ @DNS_CRYPTO_LIBS@
|
|
||||||
ISCCFGLIBS = ../../lib/isccfg/libisccfg.@A@
|
|
||||||
ISCCCLIBS = ../../lib/isccc/libisccc.@A@
|
|
||||||
ISCLIBS = ../../lib/isc/libisc.@A@
|
|
||||||
LWRESLIBS = ../../lib/lwres/liblwres.@A@
|
|
||||||
BIND9LIBS = ../../lib/bind9/libbind9.@A@
|
|
||||||
|
|
||||||
DNSDEPLIBS = ../../lib/dns/libdns.@A@
|
|
||||||
ISCCFGDEPLIBS = ../../lib/isccfg/libisccfg.@A@
|
|
||||||
ISCCCDEPLIBS = ../../lib/isccc/libisccc.@A@
|
|
||||||
ISCDEPLIBS = ../../lib/isc/libisc.@A@
|
|
||||||
LWRESDEPLIBS = ../../lib/lwres/liblwres.@A@
|
|
||||||
BIND9DEPLIBS = ../../lib/bind9/libbind9.@A@
|
|
||||||
|
|
||||||
DEPLIBS = ${LWRESDEPLIBS} ${DNSDEPLIBS} ${BIND9DEPLIBS} \
|
|
||||||
${ISCCFGDEPLIBS} ${ISCCCDEPLIBS} ${ISCDEPLIBS}
|
|
||||||
|
|
||||||
LIBS = ${LWRESLIBS} ${DNSLIBS} ${BIND9LIBS} \
|
|
||||||
${ISCCFGLIBS} ${ISCCCLIBS} ${ISCLIBS} ${DBDRIVER_LIBS} @LIBS@
|
|
||||||
|
|
||||||
TARGETS = zone2ldap@EXEEXT@ zonetodb@EXEEXT@
|
|
||||||
|
|
||||||
OBJS = zone2ldap.@O@ zonetodb.@O@
|
|
||||||
|
|
||||||
SRCS = zone2ldap.c zonetodb.c
|
|
||||||
|
|
||||||
MANPAGES = zone2ldap.1
|
|
||||||
|
|
||||||
EXT_CFLAGS =
|
|
||||||
|
|
||||||
@BIND9_MAKE_RULES@
|
|
||||||
|
|
||||||
zone2ldap@EXEEXT@: zone2ldap.@O@ ${DEPLIBS}
|
|
||||||
${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} -o $@ zone2ldap.@O@ -lldap -llber ${LIBS}
|
|
||||||
|
|
||||||
zonetodb@EXEEXT@: zonetodb.@O@ ${DEPLIBS}
|
|
||||||
${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} -o $@ zonetodb.@O@ -lpq ${LIBS}
|
|
||||||
|
|
||||||
clean distclean manclean maintainer-clean::
|
|
||||||
rm -f ${TARGETS} ${OBJS}
|
|
||||||
|
|
||||||
installdirs:
|
|
||||||
$(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${sbindir}
|
|
||||||
$(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${mandir}/man1
|
|
||||||
|
|
||||||
install:: ${TARGETS} installdirs
|
|
||||||
${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} zone2ldap@EXEEXT@ ${DESTDIR}${sbindir}
|
|
||||||
${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} zonetodb@EXEEXT@ ${DESTDIR}${sbindir}
|
|
||||||
${INSTALL_DATA} ${srcdir}/zone2ldap.1 ${DESTDIR}${mandir}/man1/zone2ldap.1
|
|
@ -1,98 +0,0 @@
|
|||||||
From facdbb0f2a266c6a3a1fa823afaa09cbd3fc38a5 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Petr Mensik <pemensik@redhat.com>
|
|
||||||
Date: Thu, 26 Nov 2020 12:13:10 +0100
|
|
||||||
Subject: [PATCH] Note specific Red Hat changes in manual page
|
|
||||||
|
|
||||||
Change docbook template instead of generated manual page. Remove
|
|
||||||
system-config-bind reference, package were discontinued.
|
|
||||||
---
|
|
||||||
bin/named/named.docbook | 73 +++++++++++++++++++++++++++++++++++++++++
|
|
||||||
1 file changed, 73 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/bin/named/named.docbook b/bin/named/named.docbook
|
|
||||||
index 7e743a9..802bec3 100644
|
|
||||||
--- a/bin/named/named.docbook
|
|
||||||
+++ b/bin/named/named.docbook
|
|
||||||
@@ -516,6 +516,79 @@
|
|
||||||
|
|
||||||
</refsection>
|
|
||||||
|
|
||||||
+ <refsection><info><title>NOTES</title></info>
|
|
||||||
+ <refsection><info><title>Red Hat SELinux BIND Security Profile</title></info>
|
|
||||||
+
|
|
||||||
+ <para>
|
|
||||||
+ By default, Red Hat ships BIND with the most secure SELinux policy
|
|
||||||
+ that will not prevent normal BIND operation and will prevent exploitation
|
|
||||||
+ of all known BIND security vulnerabilities . See the selinux(8) man page
|
|
||||||
+ for information about SElinux.
|
|
||||||
+ </para>
|
|
||||||
+
|
|
||||||
+ <para>
|
|
||||||
+ It is not necessary to run named in a chroot environment if the Red Hat
|
|
||||||
+ SELinux policy for named is enabled. When enabled, this policy is far
|
|
||||||
+ more secure than a chroot environment. Users are recommended to enable
|
|
||||||
+ SELinux and remove the bind-chroot package.
|
|
||||||
+ </para>
|
|
||||||
+
|
|
||||||
+ <para>
|
|
||||||
+ With this extra security comes some restrictions:
|
|
||||||
+ </para>
|
|
||||||
+
|
|
||||||
+ <para>
|
|
||||||
+ By default, the SELinux policy allows named to write any master
|
|
||||||
+ zone database files. Only the root user may create files in the $ROOTDIR/var/named
|
|
||||||
+ zone database file directory (the options { "directory" } option), where
|
|
||||||
+ $ROOTDIR is set in /etc/sysconfig/named.
|
|
||||||
+ </para>
|
|
||||||
+
|
|
||||||
+ <para>
|
|
||||||
+ The "named" group must be granted read privelege to
|
|
||||||
+ these files in order for named to be enabled to read them.
|
|
||||||
+ </para>
|
|
||||||
+
|
|
||||||
+ <para>
|
|
||||||
+ Any file created in the zone database file directory is automatically assigned
|
|
||||||
+ the SELinux file context named_zone_t .
|
|
||||||
+ </para>
|
|
||||||
+
|
|
||||||
+ <para>
|
|
||||||
+ By default, SELinux prevents any role from modifying named_zone_t files; this
|
|
||||||
+ means that files in the zone database directory cannot be modified by dynamic
|
|
||||||
+ DNS (DDNS) updates or zone transfers.
|
|
||||||
+ </para>
|
|
||||||
+
|
|
||||||
+ <para>
|
|
||||||
+ The Red Hat BIND distribution and SELinux policy creates three directories where
|
|
||||||
+ named is allowed to create and modify files: /var/named/slaves, /var/named/dynamic
|
|
||||||
+ /var/named/data. By placing files you want named to modify, such as
|
|
||||||
+ slave or DDNS updateable zone files and database / statistics dump files in
|
|
||||||
+ these directories, named will work normally and no further operator action is
|
|
||||||
+ required. Files in these directories are automatically assigned the 'named_cache_t'
|
|
||||||
+ file context, which SELinux allows named to write.
|
|
||||||
+ </para>
|
|
||||||
+ </refsection>
|
|
||||||
+
|
|
||||||
+ <refsection><info><title>Red Hat BIND SDB support</title></info>
|
|
||||||
+
|
|
||||||
+ <para>
|
|
||||||
+ Red Hat ships named with compiled in Simplified Database Backend modules that ISC
|
|
||||||
+ provides in the "contrib/sdb" directory. Install bind-sdb package if you want use them.
|
|
||||||
+ </para>
|
|
||||||
+
|
|
||||||
+ <para>
|
|
||||||
+ The SDB modules for LDAP, PostGreSQL, DirDB and SQLite are compiled into <command>named-sdb</command>.
|
|
||||||
+ </para>
|
|
||||||
+
|
|
||||||
+ <para>
|
|
||||||
+ See the documentation for the various SDB modules in /usr/share/doc/bind-sdb-*/ .
|
|
||||||
+ </para>
|
|
||||||
+ </refsection>
|
|
||||||
+
|
|
||||||
+ </refsection>
|
|
||||||
+
|
|
||||||
<refsection><info><title>SEE ALSO</title></info>
|
|
||||||
|
|
||||||
<para><citetitle>RFC 1033</citetitle>,
|
|
||||||
--
|
|
||||||
2.26.2
|
|
||||||
|
|
@ -1,511 +0,0 @@
|
|||||||
diff --git a/bin/sdb_tools/Makefile.in b/bin/sdb_tools/Makefile.in
|
|
||||||
index 95ab742..5059a17 100644
|
|
||||||
--- a/bin/sdb_tools/Makefile.in
|
|
||||||
+++ b/bin/sdb_tools/Makefile.in
|
|
||||||
@@ -32,11 +32,11 @@ DEPLIBS = ${LWRESDEPLIBS} ${DNSDEPLIBS} ${BIND9DEPLIBS} \
|
|
||||||
LIBS = ${LWRESLIBS} ${DNSLIBS} ${BIND9LIBS} \
|
|
||||||
${ISCCFGLIBS} ${ISCCCLIBS} ${ISCLIBS} ${DBDRIVER_LIBS} @LIBS@
|
|
||||||
|
|
||||||
-TARGETS = zone2ldap@EXEEXT@ zonetodb@EXEEXT@ zone2sqlite@EXEEXT@
|
|
||||||
+TARGETS = zone2ldap@EXEEXT@ zonetodb@EXEEXT@ zone2sqlite@EXEEXT@ ldap2zone@EXEEXT@
|
|
||||||
|
|
||||||
-OBJS = zone2ldap.@O@ zonetodb.@O@ zone2sqlite.@O@
|
|
||||||
+OBJS = zone2ldap.@O@ zonetodb.@O@ zone2sqlite.@O@ ldap2zone.@O@
|
|
||||||
|
|
||||||
-SRCS = zone2ldap.c zonetodb.c zone2sqlite.c
|
|
||||||
+SRCS = zone2ldap.c zonetodb.c zone2sqlite.c ldap2zone.c
|
|
||||||
|
|
||||||
MANPAGES = zone2ldap.1
|
|
||||||
|
|
||||||
@@ -47,6 +47,9 @@ EXT_CFLAGS =
|
|
||||||
zone2ldap@EXEEXT@: zone2ldap.@O@ ${DEPLIBS}
|
|
||||||
${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} -o $@ zone2ldap.@O@ -lldap -llber ${LIBS}
|
|
||||||
|
|
||||||
+ldap2zone@EXEEXT@: ldap2zone.@O@ ${DEPLIBS}
|
|
||||||
+ ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${ALL_CFLAGS} ${LDFLAGS} -o $@ ldap2zone.@O@ -lldap -llber ${LIBS}
|
|
||||||
+
|
|
||||||
zonetodb@EXEEXT@: zonetodb.@O@ ${DEPLIBS}
|
|
||||||
${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} -o $@ zonetodb.@O@ -lpq ${LIBS}
|
|
||||||
|
|
||||||
@@ -64,4 +67,5 @@ install:: ${TARGETS} installdirs
|
|
||||||
${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} zone2ldap@EXEEXT@ ${DESTDIR}${sbindir}
|
|
||||||
${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} zonetodb@EXEEXT@ ${DESTDIR}${sbindir}
|
|
||||||
${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} zone2sqlite@EXEEXT@ ${DESTDIR}${sbindir}
|
|
||||||
+ ${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} ldap2zone@EXEEXT@ ${DESTDIR}${sbindir}
|
|
||||||
${INSTALL_DATA} ${srcdir}/zone2ldap.1 ${DESTDIR}${mandir}/man1/zone2ldap.1
|
|
||||||
diff --git a/bin/sdb_tools/zone2ldap.c b/bin/sdb_tools/zone2ldap.c
|
|
||||||
index e0e9207..d59936c 100644
|
|
||||||
--- a/bin/sdb_tools/zone2ldap.c
|
|
||||||
+++ b/bin/sdb_tools/zone2ldap.c
|
|
||||||
@@ -73,7 +73,7 @@ void add_ldap_values (ldap_info * ldinfo);
|
|
||||||
void init_ldap_conn (void);
|
|
||||||
|
|
||||||
/* Ldap error checking */
|
|
||||||
-void ldap_result_check (const char *msg, char *dn, int err);
|
|
||||||
+void ldap_result_check (const char *msg, const char *dn, int err);
|
|
||||||
|
|
||||||
/* Put a hostname into a char ** array */
|
|
||||||
char **hostname_to_dn_list (char *hostname, char *zone, unsigned int flags);
|
|
||||||
@@ -82,7 +82,7 @@ char **hostname_to_dn_list (char *hostname, char *zone, unsigned int flags);
|
|
||||||
int get_attr_list_size (char **tmp);
|
|
||||||
|
|
||||||
/* Get a DN */
|
|
||||||
-char *build_dn_from_dc_list (char **dc_list, unsigned int ttl, int flag);
|
|
||||||
+char *build_dn_from_dc_list (char **dc_list, unsigned int ttl, int flag, char *zone);
|
|
||||||
|
|
||||||
/* Add to RR list */
|
|
||||||
void add_to_rr_list (char *dn, char *name, char *type, char *data,
|
|
||||||
@@ -104,11 +104,26 @@ void
|
|
||||||
init_ldap_conn ();
|
|
||||||
void usage();
|
|
||||||
|
|
||||||
-char *argzone, *ldapbase, *binddn, *bindpw = NULL;
|
|
||||||
-const char *ldapsystem = "localhost";
|
|
||||||
-static const char *objectClasses[] =
|
|
||||||
- { "top", "dNSZone", NULL };
|
|
||||||
-static const char *topObjectClasses[] = { "top", NULL };
|
|
||||||
+static char *argzone, *ldapbase, *binddn, *bindpw = NULL;
|
|
||||||
+
|
|
||||||
+/* these are needed to placate gcc4's const-ness const-ernations : */
|
|
||||||
+static char localhost[] = "localhost";
|
|
||||||
+static char *ldapsystem=&(localhost[0]);
|
|
||||||
+/* dnszone schema class names: */
|
|
||||||
+static char topClass [] ="top";
|
|
||||||
+static char dNSZoneClass[] ="dNSZone";
|
|
||||||
+static char objectClass [] ="objectClass";
|
|
||||||
+static char dcObjectClass[]="dcObject";
|
|
||||||
+/* dnszone schema attribute names: */
|
|
||||||
+static char relativeDomainName[]="relativeDomainName";
|
|
||||||
+static char dNSTTL []="dNSTTL";
|
|
||||||
+static char zoneName []="zoneName";
|
|
||||||
+static char dc []="dc";
|
|
||||||
+static char sameZone []="@";
|
|
||||||
+/* LDAPMod mod_values: */
|
|
||||||
+static char *objectClasses []= { &(topClass[0]), &(dNSZoneClass[0]), NULL };
|
|
||||||
+static char *topObjectClasses []= { &(topClass[0]), &(dcObjectClass[0]), &(dNSZoneClass[0]), NULL };
|
|
||||||
+static char *dn_buffer [64]={NULL};
|
|
||||||
LDAP *conn;
|
|
||||||
unsigned int debug = 0;
|
|
||||||
|
|
||||||
@@ -120,7 +135,7 @@ static void
|
|
||||||
fatal(const char *msg) {
|
|
||||||
perror(msg);
|
|
||||||
if (conn != NULL)
|
|
||||||
- ldap_unbind_s(conn);
|
|
||||||
+ ldap_unbind_ext_s(conn, NULL, NULL);
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -132,12 +147,13 @@ main (int argc, char **argv)
|
|
||||||
isc_result_t result;
|
|
||||||
char *basedn;
|
|
||||||
ldap_info *tmp;
|
|
||||||
- LDAPMod *base_attrs[2];
|
|
||||||
- LDAPMod base;
|
|
||||||
+ LDAPMod *base_attrs[5];
|
|
||||||
+ LDAPMod base, dcBase, znBase, rdnBase;
|
|
||||||
isc_buffer_t buff;
|
|
||||||
char *zonefile=0L;
|
|
||||||
char fullbasedn[1024];
|
|
||||||
char *ctmp;
|
|
||||||
+ char *zn, *dcp[2], *znp[2], *rdn[2];
|
|
||||||
dns_fixedname_t fixedzone, fixedname;
|
|
||||||
dns_rdataset_t rdataset;
|
|
||||||
char **dc_list;
|
|
||||||
@@ -150,7 +166,7 @@ main (int argc, char **argv)
|
|
||||||
extern char *optarg;
|
|
||||||
extern int optind, opterr, optopt;
|
|
||||||
int create_base = 0;
|
|
||||||
- int topt;
|
|
||||||
+ int topt, dcn, zdn, znlen;
|
|
||||||
|
|
||||||
if (argc < 2)
|
|
||||||
{
|
|
||||||
@@ -158,7 +174,7 @@ main (int argc, char **argv)
|
|
||||||
exit (-1);
|
|
||||||
}
|
|
||||||
|
|
||||||
- while ((topt = getopt (argc, argv, "D:w:b:z:f:h:?dcv")) != -1)
|
|
||||||
+ while ((topt = getopt (argc, argv, "D:Ww:b:z:f:h:?dcv")) != -1)
|
|
||||||
{
|
|
||||||
switch (topt)
|
|
||||||
{
|
|
||||||
@@ -181,6 +197,9 @@ main (int argc, char **argv)
|
|
||||||
if (bindpw == NULL)
|
|
||||||
fatal("strdup");
|
|
||||||
break;
|
|
||||||
+ case 'W':
|
|
||||||
+ bindpw = getpass("Enter LDAP Password: ");
|
|
||||||
+ break;
|
|
||||||
case 'b':
|
|
||||||
ldapbase = strdup (optarg);
|
|
||||||
if (ldapbase == NULL)
|
|
||||||
@@ -302,17 +321,51 @@ main (int argc, char **argv)
|
|
||||||
printf ("Creating base zone DN %s\n", argzone);
|
|
||||||
|
|
||||||
dc_list = hostname_to_dn_list (argzone, argzone, DNS_TOP);
|
|
||||||
- basedn = build_dn_from_dc_list (dc_list, 0, NO_SPEC);
|
|
||||||
+ basedn = build_dn_from_dc_list (dc_list, 0, NO_SPEC, argzone);
|
|
||||||
+ if (debug)
|
|
||||||
+ printf ("base DN %s\n", basedn);
|
|
||||||
|
|
||||||
- for (ctmp = &basedn[strlen (basedn)]; ctmp >= &basedn[0]; ctmp--)
|
|
||||||
+ for (ctmp = &basedn[strlen (basedn)], dcn=0; ctmp >= &basedn[0]; ctmp--)
|
|
||||||
{
|
|
||||||
if ((*ctmp == ',') || (ctmp == &basedn[0]))
|
|
||||||
{
|
|
||||||
base.mod_op = LDAP_MOD_ADD;
|
|
||||||
- base.mod_type = (char*)"objectClass";
|
|
||||||
+ base.mod_type = objectClass;
|
|
||||||
base.mod_values = (char**)topObjectClasses;
|
|
||||||
base_attrs[0] = (void*)&base;
|
|
||||||
- base_attrs[1] = NULL;
|
|
||||||
+
|
|
||||||
+ dcBase.mod_op = LDAP_MOD_ADD;
|
|
||||||
+ dcBase.mod_type = dc;
|
|
||||||
+ dcp[0]=dc_list[dcn];
|
|
||||||
+ dcp[1]=0L;
|
|
||||||
+ dcBase.mod_values=dcp;
|
|
||||||
+ base_attrs[1] = (void*)&dcBase;
|
|
||||||
+
|
|
||||||
+ znBase.mod_op = LDAP_MOD_ADD;
|
|
||||||
+ znBase.mod_type = zoneName;
|
|
||||||
+ for( zdn = dcn, znlen = 0; zdn >= 0; zdn-- )
|
|
||||||
+ znlen += strlen(dc_list[zdn])+1;
|
|
||||||
+ znp[0] = (char*)malloc(znlen+1);
|
|
||||||
+ znp[1] = 0L;
|
|
||||||
+ for( zdn = dcn, zn=znp[0]; zdn >= 0; zdn-- )
|
|
||||||
+ zn+=sprintf(zn,"%s%s",dc_list[zdn],
|
|
||||||
+ ((zdn > 0) && (*(dc_list[zdn-1])!='.')) ? "." : ""
|
|
||||||
+ );
|
|
||||||
+
|
|
||||||
+ znBase.mod_values = znp;
|
|
||||||
+ base_attrs[2] = (void*)&znBase;
|
|
||||||
+
|
|
||||||
+ rdnBase.mod_op = LDAP_MOD_ADD;
|
|
||||||
+ rdnBase.mod_type = relativeDomainName;
|
|
||||||
+ rdn[0] = strdup(sameZone);
|
|
||||||
+ rdn[1] = 0L;
|
|
||||||
+ rdnBase.mod_values = rdn;
|
|
||||||
+ base_attrs[3] = (void*)&rdnBase;
|
|
||||||
+
|
|
||||||
+ dcn++;
|
|
||||||
+
|
|
||||||
+ base.mod_values = topObjectClasses;
|
|
||||||
+ base_attrs[4] = NULL;
|
|
||||||
|
|
||||||
if (ldapbase)
|
|
||||||
{
|
|
||||||
@@ -329,6 +382,10 @@ main (int argc, char **argv)
|
|
||||||
else
|
|
||||||
sprintf (fullbasedn, "%s", ctmp);
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+ if( debug )
|
|
||||||
+ printf("Full base dn: %s\n", fullbasedn);
|
|
||||||
+
|
|
||||||
result = ldap_add_s (conn, fullbasedn, base_attrs);
|
|
||||||
ldap_result_check ("initial ldap_add_s", fullbasedn, result);
|
|
||||||
}
|
|
||||||
@@ -408,14 +465,14 @@ generate_ldap (dns_name_t * dnsname, dns_rdata_t * rdata, unsigned int ttl)
|
|
||||||
isc_result_check (result, "dns_rdata_totext");
|
|
||||||
data[isc_buffer_usedlength (&buff)] = 0;
|
|
||||||
|
|
||||||
- dc_list = hostname_to_dn_list (name, argzone, DNS_OBJECT);
|
|
||||||
+ dc_list = hostname_to_dn_list ((char*)name, argzone, DNS_OBJECT);
|
|
||||||
len = (get_attr_list_size (dc_list) - 2);
|
|
||||||
- dn = build_dn_from_dc_list (dc_list, ttl, WI_SPEC);
|
|
||||||
+ dn = build_dn_from_dc_list (dc_list, ttl, WI_SPEC, argzone);
|
|
||||||
|
|
||||||
if (debug)
|
|
||||||
printf ("Adding %s (%s %s) to run queue list.\n", dn, type, data);
|
|
||||||
|
|
||||||
- add_to_rr_list (dn, dc_list[len], type, data, ttl, DNS_OBJECT);
|
|
||||||
+ add_to_rr_list (dn, dc_list[len], (char*)type, (char*)data, ttl, DNS_OBJECT);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@@ -455,7 +512,8 @@ add_to_rr_list (char *dn, char *name, char *type,
|
|
||||||
int attrlist;
|
|
||||||
char ldap_type_buffer[128];
|
|
||||||
char charttl[64];
|
|
||||||
-
|
|
||||||
+ char *zn;
|
|
||||||
+ int znlen;
|
|
||||||
|
|
||||||
if ((tmp = locate_by_dn (dn)) == NULL)
|
|
||||||
{
|
|
||||||
@@ -482,10 +540,10 @@ add_to_rr_list (char *dn, char *name, char *type,
|
|
||||||
fatal("malloc");
|
|
||||||
}
|
|
||||||
tmp->attrs[0]->mod_op = LDAP_MOD_ADD;
|
|
||||||
- tmp->attrs[0]->mod_type = (char*)"objectClass";
|
|
||||||
+ tmp->attrs[0]->mod_type = objectClass;
|
|
||||||
|
|
||||||
if (flags == DNS_OBJECT)
|
|
||||||
- tmp->attrs[0]->mod_values = (char**)objectClasses;
|
|
||||||
+ tmp->attrs[0]->mod_values = objectClasses;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
tmp->attrs[0]->mod_values = (char**)topObjectClasses;
|
|
||||||
@@ -497,7 +555,7 @@ add_to_rr_list (char *dn, char *name, char *type,
|
|
||||||
}
|
|
||||||
|
|
||||||
tmp->attrs[1]->mod_op = LDAP_MOD_ADD;
|
|
||||||
- tmp->attrs[1]->mod_type = (char*)"relativeDomainName";
|
|
||||||
+ tmp->attrs[1]->mod_type = relativeDomainName;
|
|
||||||
tmp->attrs[1]->mod_values = (char **) calloc (sizeof (char *), 2);
|
|
||||||
|
|
||||||
if (tmp->attrs[1]->mod_values == (char **)NULL)
|
|
||||||
@@ -526,7 +584,7 @@ add_to_rr_list (char *dn, char *name, char *type,
|
|
||||||
fatal("strdup");
|
|
||||||
|
|
||||||
tmp->attrs[3]->mod_op = LDAP_MOD_ADD;
|
|
||||||
- tmp->attrs[3]->mod_type = (char*)"dNSTTL";
|
|
||||||
+ tmp->attrs[3]->mod_type = dNSTTL;
|
|
||||||
tmp->attrs[3]->mod_values = (char **) calloc (sizeof (char *), 2);
|
|
||||||
|
|
||||||
if (tmp->attrs[3]->mod_values == (char **)NULL)
|
|
||||||
@@ -539,14 +597,25 @@ add_to_rr_list (char *dn, char *name, char *type,
|
|
||||||
if (tmp->attrs[3]->mod_values[0] == NULL)
|
|
||||||
fatal("strdup");
|
|
||||||
|
|
||||||
+ znlen=strlen(gbl_zone);
|
|
||||||
+ if ( gbl_zone[znlen-1] == '.' )
|
|
||||||
+ { /* ldapdb MUST search by relative zone name */
|
|
||||||
+ zn = (char*)malloc(znlen);
|
|
||||||
+ memcpy(zn, gbl_zone, znlen-1);
|
|
||||||
+ zn[znlen-1]='\0';
|
|
||||||
+ }else
|
|
||||||
+ {
|
|
||||||
+ zn = gbl_zone;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
tmp->attrs[4]->mod_op = LDAP_MOD_ADD;
|
|
||||||
- tmp->attrs[4]->mod_type = (char*)"zoneName";
|
|
||||||
+ tmp->attrs[4]->mod_type = zoneName;
|
|
||||||
tmp->attrs[4]->mod_values = (char **)calloc(sizeof(char *), 2);
|
|
||||||
|
|
||||||
if (tmp->attrs[4]->mod_values == (char **)NULL)
|
|
||||||
fatal("calloc");
|
|
||||||
|
|
||||||
- tmp->attrs[4]->mod_values[0] = gbl_zone;
|
|
||||||
+ tmp->attrs[4]->mod_values[0] = zn;
|
|
||||||
tmp->attrs[4]->mod_values[1] = NULL;
|
|
||||||
|
|
||||||
tmp->attrs[5] = NULL;
|
|
||||||
@@ -557,7 +626,7 @@ add_to_rr_list (char *dn, char *name, char *type,
|
|
||||||
else
|
|
||||||
{
|
|
||||||
|
|
||||||
- for (i = 0; tmp->attrs[i] != NULL; i++)
|
|
||||||
+ for (i = 0; tmp->attrs[i] != NULL; i++)
|
|
||||||
{
|
|
||||||
sprintf (ldap_type_buffer, "%sRecord", type);
|
|
||||||
if (!strncmp
|
|
||||||
@@ -631,44 +700,70 @@ char **
|
|
||||||
hostname_to_dn_list (char *hostname, char *zone, unsigned int flags)
|
|
||||||
{
|
|
||||||
char *tmp;
|
|
||||||
- static char *dn_buffer[64];
|
|
||||||
int i = 0;
|
|
||||||
- char *zname;
|
|
||||||
- char *hnamebuff;
|
|
||||||
-
|
|
||||||
- zname = strdup (hostname);
|
|
||||||
- if (zname == NULL)
|
|
||||||
- fatal("strdup");
|
|
||||||
-
|
|
||||||
- if (flags == DNS_OBJECT)
|
|
||||||
- {
|
|
||||||
-
|
|
||||||
- if (strlen (zname) != strlen (zone))
|
|
||||||
- {
|
|
||||||
- tmp = &zname[strlen (zname) - strlen (zone)];
|
|
||||||
- *--tmp = '\0';
|
|
||||||
- hnamebuff = strdup (zname);
|
|
||||||
- if (hnamebuff == NULL)
|
|
||||||
- fatal("strdup");
|
|
||||||
- zname = ++tmp;
|
|
||||||
- }
|
|
||||||
- else
|
|
||||||
- hnamebuff = (char*)"@";
|
|
||||||
- }
|
|
||||||
- else
|
|
||||||
- {
|
|
||||||
- zname = zone;
|
|
||||||
- hnamebuff = NULL;
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- for (tmp = strrchr (zname, '.'); tmp != (char *) 0;
|
|
||||||
- tmp = strrchr (zname, '.'))
|
|
||||||
- {
|
|
||||||
- *tmp++ = '\0';
|
|
||||||
- dn_buffer[i++] = tmp;
|
|
||||||
- }
|
|
||||||
- dn_buffer[i++] = zname;
|
|
||||||
- dn_buffer[i++] = hnamebuff;
|
|
||||||
+ char *hname=0L, *last=0L;
|
|
||||||
+ int hlen=strlen(hostname), zlen=(strlen(zone));
|
|
||||||
+
|
|
||||||
+/* printf("hostname: %s zone: %s\n",hostname, zone); */
|
|
||||||
+ hname=0L;
|
|
||||||
+ if(flags == DNS_OBJECT)
|
|
||||||
+ {
|
|
||||||
+ if( (zone[ zlen - 1 ] == '.') && (hostname[hlen - 1] != '.') )
|
|
||||||
+ {
|
|
||||||
+ hname=(char*)malloc(hlen + 1);
|
|
||||||
+ hlen += 1;
|
|
||||||
+ sprintf(hname, "%s.", hostname);
|
|
||||||
+ hostname = hname;
|
|
||||||
+ }
|
|
||||||
+ if(strcmp(hostname, zone) == 0)
|
|
||||||
+ {
|
|
||||||
+ if( hname == 0 )
|
|
||||||
+ hname=strdup(hostname);
|
|
||||||
+ last = strdup(sameZone);
|
|
||||||
+ }else
|
|
||||||
+ {
|
|
||||||
+ if( (hlen < zlen)
|
|
||||||
+ ||( strcmp( hostname + (hlen - zlen), zone ) != 0)
|
|
||||||
+ )
|
|
||||||
+ {
|
|
||||||
+ if( hname != 0 )
|
|
||||||
+ free(hname);
|
|
||||||
+ hname=(char*)malloc( hlen + zlen + 1);
|
|
||||||
+ if( *zone == '.' )
|
|
||||||
+ sprintf(hname, "%s%s", hostname, zone);
|
|
||||||
+ else
|
|
||||||
+ sprintf(hname,"%s",zone);
|
|
||||||
+ }else
|
|
||||||
+ {
|
|
||||||
+ if( hname == 0 )
|
|
||||||
+ hname = strdup(hostname);
|
|
||||||
+ }
|
|
||||||
+ last = hname;
|
|
||||||
+ }
|
|
||||||
+ }else
|
|
||||||
+ { /* flags == DNS_TOP */
|
|
||||||
+ hname = strdup(zone);
|
|
||||||
+ last = hname;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ for (tmp = strrchr (hname, '.'); tmp != (char *) 0;
|
|
||||||
+ tmp = strrchr (hname, '.'))
|
|
||||||
+ {
|
|
||||||
+ if( *( tmp + 1 ) != '\0' )
|
|
||||||
+ {
|
|
||||||
+ *tmp = '\0';
|
|
||||||
+ dn_buffer[i++] = ++tmp;
|
|
||||||
+ }else
|
|
||||||
+ { /* trailing '.' ! */
|
|
||||||
+ dn_buffer[i++] = strdup(".");
|
|
||||||
+ *tmp = '\0';
|
|
||||||
+ if( tmp == hname )
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ if( ( last != hname ) && (tmp != hname) )
|
|
||||||
+ dn_buffer[i++] = hname;
|
|
||||||
+ dn_buffer[i++] = last;
|
|
||||||
dn_buffer[i] = NULL;
|
|
||||||
|
|
||||||
return dn_buffer;
|
|
||||||
@@ -680,30 +775,38 @@ hostname_to_dn_list (char *hostname, char *zone, unsigned int flags)
|
|
||||||
* exception of "@"/SOA. */
|
|
||||||
|
|
||||||
char *
|
|
||||||
-build_dn_from_dc_list (char **dc_list, unsigned int ttl, int flag)
|
|
||||||
+build_dn_from_dc_list (char **dc_list, unsigned int ttl, int flag, char *zone)
|
|
||||||
{
|
|
||||||
int size;
|
|
||||||
- int x;
|
|
||||||
- static char dn[1024];
|
|
||||||
- char tmp[128];
|
|
||||||
+ int x, znlen;
|
|
||||||
+ static char dn[DNS_NAME_MAXTEXT*3/2];
|
|
||||||
+ char tmp[DNS_NAME_MAXTEXT*3/2];
|
|
||||||
+ char zn[DNS_NAME_MAXTEXT+1];
|
|
||||||
|
|
||||||
bzero (tmp, sizeof (tmp));
|
|
||||||
bzero (dn, sizeof (dn));
|
|
||||||
size = get_attr_list_size (dc_list);
|
|
||||||
+ znlen = strlen(zone);
|
|
||||||
+ if ( zone[znlen-1] == '.' )
|
|
||||||
+ { /* ldapdb MUST search by relative zone name */
|
|
||||||
+ memcpy(&(zn[0]),zone,znlen-1);
|
|
||||||
+ zn[znlen-1]='\0';
|
|
||||||
+ zone = zn;
|
|
||||||
+ }
|
|
||||||
for (x = size - 2; x > 0; x--)
|
|
||||||
{
|
|
||||||
if (flag == WI_SPEC)
|
|
||||||
{
|
|
||||||
if (x == (size - 2) && (strncmp (dc_list[x], "@", 1) == 0) && (ttl))
|
|
||||||
- sprintf (tmp, "relativeDomainName=%s + dNSTTL=%u,", dc_list[x], ttl);
|
|
||||||
+ snprintf (tmp, sizeof(tmp), "zoneName=%s + relativeDomainName=%s,", zone, dc_list[x]);
|
|
||||||
else if (x == (size - 2))
|
|
||||||
- sprintf(tmp, "relativeDomainName=%s,",dc_list[x]);
|
|
||||||
+ snprintf(tmp, sizeof(tmp), "zoneName=%s + relativeDomainName=%s,", zone, dc_list[x]);
|
|
||||||
else
|
|
||||||
- sprintf(tmp,"dc=%s,", dc_list[x]);
|
|
||||||
+ snprintf(tmp, sizeof(tmp), "dc=%s,", dc_list[x]);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
- sprintf(tmp, "dc=%s,", dc_list[x]);
|
|
||||||
+ snprintf(tmp, sizeof(tmp), "dc=%s,", dc_list[x]);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@@ -732,19 +835,18 @@ init_ldap_conn ()
|
|
||||||
}
|
|
||||||
|
|
||||||
result = ldap_simple_bind_s (conn, binddn, bindpw);
|
|
||||||
- ldap_result_check ("ldap_simple_bind_s", (char*)"LDAP Bind", result);
|
|
||||||
+ ldap_result_check ("ldap_simple_bind_s", "LDAP Bind", result);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Like isc_result_check, only for LDAP */
|
|
||||||
void
|
|
||||||
-ldap_result_check (const char *msg, char *dn, int err)
|
|
||||||
+ldap_result_check (const char *msg, const char *dn, int err)
|
|
||||||
{
|
|
||||||
if ((err != LDAP_SUCCESS) && (err != LDAP_ALREADY_EXISTS))
|
|
||||||
{
|
|
||||||
- fprintf(stderr, "Error while adding %s (%s):\n",
|
|
||||||
- dn, msg);
|
|
||||||
- ldap_perror (conn, dn);
|
|
||||||
- ldap_unbind_s (conn);
|
|
||||||
+ fprintf(stderr, "Error while adding %s (%s):\n%s",
|
|
||||||
+ dn, msg, ldap_err2string(err));
|
|
||||||
+ ldap_unbind_ext_s (conn, NULL, NULL);
|
|
||||||
exit (-1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -758,16 +860,15 @@ add_ldap_values (ldap_info * ldinfo)
|
|
||||||
int result;
|
|
||||||
char dnbuffer[1024];
|
|
||||||
|
|
||||||
-
|
|
||||||
if (ldapbase != NULL)
|
|
||||||
sprintf (dnbuffer, "%s,%s", ldinfo->dn, ldapbase);
|
|
||||||
else
|
|
||||||
sprintf (dnbuffer, "%s", ldinfo->dn);
|
|
||||||
|
|
||||||
result = ldap_add_s (conn, dnbuffer, ldinfo->attrs);
|
|
||||||
- ldap_result_check ("ldap_add_s", dnbuffer, result);
|
|
||||||
-}
|
|
||||||
+ ldap_result_check ("ldap_add_s", dnbuffer, result);
|
|
||||||
|
|
||||||
+}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -776,5 +877,5 @@ void
|
|
||||||
usage ()
|
|
||||||
{
|
|
||||||
fprintf (stderr,
|
|
||||||
- "zone2ldap -D [BIND DN] -w [BIND PASSWORD] -b [BASE DN] -z [ZONE] -f [ZONE FILE] -h [LDAP HOST] "
|
|
||||||
+ "zone2ldap -D [BIND DN] [-w BIND PASSWORD | -W:prompt] -b [BASE DN] -z [ZONE] -f [ZONE FILE] -h [LDAP HOST] "
|
|
||||||
"[-c Create LDAP Base structure][-d Debug Output (lots !)] \n ");}
|
|
@ -1,230 +0,0 @@
|
|||||||
diff --git a/contrib/sdb/bdb/bdb.c b/contrib/sdb/bdb/bdb.c
|
|
||||||
index 23594bb..b3c6619 100644
|
|
||||||
--- a/contrib/sdb/bdb/bdb.c
|
|
||||||
+++ b/contrib/sdb/bdb/bdb.c
|
|
||||||
@@ -43,7 +43,7 @@
|
|
||||||
#include <dns/lib.h>
|
|
||||||
#include <dns/ttl.h>
|
|
||||||
|
|
||||||
-#include <named/bdb.h>
|
|
||||||
+#include "bdb.h"
|
|
||||||
#include <named/globals.h>
|
|
||||||
#include <named/config.h>
|
|
||||||
|
|
||||||
diff --git a/contrib/sdb/ldap/zone2ldap.c b/contrib/sdb/ldap/zone2ldap.c
|
|
||||||
index 07c89bc..23dd873 100644
|
|
||||||
--- a/contrib/sdb/ldap/zone2ldap.c
|
|
||||||
+++ b/contrib/sdb/ldap/zone2ldap.c
|
|
||||||
@@ -63,16 +63,16 @@ typedef struct LDAP_INFO
|
|
||||||
ldap_info;
|
|
||||||
|
|
||||||
/* usage Info */
|
|
||||||
-void usage ();
|
|
||||||
+void usage (void);
|
|
||||||
|
|
||||||
/* Add to the ldap dit */
|
|
||||||
void add_ldap_values (ldap_info * ldinfo);
|
|
||||||
|
|
||||||
/* Init an ldap connection */
|
|
||||||
-void init_ldap_conn ();
|
|
||||||
+void init_ldap_conn (void);
|
|
||||||
|
|
||||||
/* Ldap error checking */
|
|
||||||
-void ldap_result_check (char *msg, char *dn, int err);
|
|
||||||
+void ldap_result_check (const char *msg, char *dn, int err);
|
|
||||||
|
|
||||||
/* Put a hostname into a char ** array */
|
|
||||||
char **hostname_to_dn_list (char *hostname, char *zone, unsigned int flags);
|
|
||||||
@@ -88,7 +88,7 @@ void add_to_rr_list (char *dn, char *name, char *type, char *data,
|
|
||||||
unsigned int ttl, unsigned int flags);
|
|
||||||
|
|
||||||
/* Error checking */
|
|
||||||
-void isc_result_check (isc_result_t res, char *errorstr);
|
|
||||||
+void isc_result_check (isc_result_t res, const char *errorstr);
|
|
||||||
|
|
||||||
/* Generate LDIF Format files */
|
|
||||||
void generate_ldap (dns_name_t * dnsname, dns_rdata_t * rdata,
|
|
||||||
@@ -97,11 +97,17 @@ void generate_ldap (dns_name_t * dnsname, dns_rdata_t * rdata,
|
|
||||||
/* head pointer to the list */
|
|
||||||
ldap_info *ldap_info_base = NULL;
|
|
||||||
|
|
||||||
+ldap_info *
|
|
||||||
+locate_by_dn (char *dn);
|
|
||||||
+void
|
|
||||||
+init_ldap_conn ();
|
|
||||||
+void usage();
|
|
||||||
+
|
|
||||||
char *argzone, *ldapbase, *binddn, *bindpw = NULL;
|
|
||||||
-char *ldapsystem = "localhost";
|
|
||||||
-static char *objectClasses[] =
|
|
||||||
+const char *ldapsystem = "localhost";
|
|
||||||
+static const char *objectClasses[] =
|
|
||||||
{ "top", "dNSZone", NULL };
|
|
||||||
-static char *topObjectClasses[] = { "top", NULL };
|
|
||||||
+static const char *topObjectClasses[] = { "top", NULL };
|
|
||||||
LDAP *conn;
|
|
||||||
unsigned int debug = 0;
|
|
||||||
|
|
||||||
@@ -128,7 +134,7 @@ main (int argc, char **argv)
|
|
||||||
LDAPMod *base_attrs[2];
|
|
||||||
LDAPMod base;
|
|
||||||
isc_buffer_t buff;
|
|
||||||
- char *zonefile;
|
|
||||||
+ char *zonefile=0L;
|
|
||||||
char fullbasedn[1024];
|
|
||||||
char *ctmp;
|
|
||||||
dns_fixedname_t fixedzone, fixedname;
|
|
||||||
@@ -304,9 +310,9 @@ main (int argc, char **argv)
|
|
||||||
if ((*ctmp == ',') || (ctmp == &basedn[0]))
|
|
||||||
{
|
|
||||||
base.mod_op = LDAP_MOD_ADD;
|
|
||||||
- base.mod_type = "objectClass";
|
|
||||||
- base.mod_values = topObjectClasses;
|
|
||||||
- base_attrs[0] = &base;
|
|
||||||
+ base.mod_type = (char*)"objectClass";
|
|
||||||
+ base.mod_values = (char**)topObjectClasses;
|
|
||||||
+ base_attrs[0] = (void*)&base;
|
|
||||||
base_attrs[1] = NULL;
|
|
||||||
|
|
||||||
if (ldapbase)
|
|
||||||
@@ -363,7 +369,7 @@ main (int argc, char **argv)
|
|
||||||
* I should probably rename this function, as not to cause any
|
|
||||||
* confusion with the isc* routines. Will exit on error. */
|
|
||||||
void
|
|
||||||
-isc_result_check (isc_result_t res, char *errorstr)
|
|
||||||
+isc_result_check (isc_result_t res, const char *errorstr)
|
|
||||||
{
|
|
||||||
if (res != ISC_R_SUCCESS)
|
|
||||||
{
|
|
||||||
@@ -470,20 +476,20 @@ add_to_rr_list (char *dn, char *name, char *type,
|
|
||||||
if (tmp->attrs == (LDAPMod **) NULL)
|
|
||||||
fatal("calloc");
|
|
||||||
|
|
||||||
- for (i = 0; i < flags; i++)
|
|
||||||
+ for (i = 0; i < (int)flags; i++)
|
|
||||||
{
|
|
||||||
tmp->attrs[i] = (LDAPMod *) malloc (sizeof (LDAPMod));
|
|
||||||
if (tmp->attrs[i] == (LDAPMod *) NULL)
|
|
||||||
fatal("malloc");
|
|
||||||
}
|
|
||||||
tmp->attrs[0]->mod_op = LDAP_MOD_ADD;
|
|
||||||
- tmp->attrs[0]->mod_type = "objectClass";
|
|
||||||
+ tmp->attrs[0]->mod_type = (char*)"objectClass";
|
|
||||||
|
|
||||||
if (flags == DNS_OBJECT)
|
|
||||||
- tmp->attrs[0]->mod_values = objectClasses;
|
|
||||||
+ tmp->attrs[0]->mod_values = (char**)objectClasses;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
- tmp->attrs[0]->mod_values = topObjectClasses;
|
|
||||||
+ tmp->attrs[0]->mod_values = (char**)topObjectClasses;
|
|
||||||
tmp->attrs[1] = NULL;
|
|
||||||
tmp->attrcnt = 2;
|
|
||||||
tmp->next = ldap_info_base;
|
|
||||||
@@ -492,7 +498,7 @@ add_to_rr_list (char *dn, char *name, char *type,
|
|
||||||
}
|
|
||||||
|
|
||||||
tmp->attrs[1]->mod_op = LDAP_MOD_ADD;
|
|
||||||
- tmp->attrs[1]->mod_type = "relativeDomainName";
|
|
||||||
+ tmp->attrs[1]->mod_type = (char*)"relativeDomainName";
|
|
||||||
tmp->attrs[1]->mod_values = (char **) calloc (sizeof (char *), 2);
|
|
||||||
|
|
||||||
if (tmp->attrs[1]->mod_values == (char **)NULL)
|
|
||||||
@@ -521,7 +527,7 @@ add_to_rr_list (char *dn, char *name, char *type,
|
|
||||||
fatal("strdup");
|
|
||||||
|
|
||||||
tmp->attrs[3]->mod_op = LDAP_MOD_ADD;
|
|
||||||
- tmp->attrs[3]->mod_type = "dNSTTL";
|
|
||||||
+ tmp->attrs[3]->mod_type = (char*)"dNSTTL";
|
|
||||||
tmp->attrs[3]->mod_values = (char **) calloc (sizeof (char *), 2);
|
|
||||||
|
|
||||||
if (tmp->attrs[3]->mod_values == (char **)NULL)
|
|
||||||
@@ -535,7 +541,7 @@ add_to_rr_list (char *dn, char *name, char *type,
|
|
||||||
fatal("strdup");
|
|
||||||
|
|
||||||
tmp->attrs[4]->mod_op = LDAP_MOD_ADD;
|
|
||||||
- tmp->attrs[4]->mod_type = "zoneName";
|
|
||||||
+ tmp->attrs[4]->mod_type = (char*)"zoneName";
|
|
||||||
tmp->attrs[4]->mod_values = (char **)calloc(sizeof(char *), 2);
|
|
||||||
|
|
||||||
if (tmp->attrs[4]->mod_values == (char **)NULL)
|
|
||||||
@@ -648,7 +654,7 @@ hostname_to_dn_list (char *hostname, char *zone, unsigned int flags)
|
|
||||||
zname = ++tmp;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
- hnamebuff = "@";
|
|
||||||
+ hnamebuff = (char*)"@";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
@@ -727,12 +733,12 @@ init_ldap_conn ()
|
|
||||||
}
|
|
||||||
|
|
||||||
result = ldap_simple_bind_s (conn, binddn, bindpw);
|
|
||||||
- ldap_result_check ("ldap_simple_bind_s", "LDAP Bind", result);
|
|
||||||
+ ldap_result_check ("ldap_simple_bind_s", (char*)"LDAP Bind", result);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Like isc_result_check, only for LDAP */
|
|
||||||
void
|
|
||||||
-ldap_result_check (char *msg, char *dn, int err)
|
|
||||||
+ldap_result_check (const char *msg, char *dn, int err)
|
|
||||||
{
|
|
||||||
if ((err != LDAP_SUCCESS) && (err != LDAP_ALREADY_EXISTS))
|
|
||||||
{
|
|
||||||
diff --git a/contrib/sdb/pgsql/pgsqldb.c b/contrib/sdb/pgsql/pgsqldb.c
|
|
||||||
index 50d3cba..516eb9f 100644
|
|
||||||
--- a/contrib/sdb/pgsql/pgsqldb.c
|
|
||||||
+++ b/contrib/sdb/pgsql/pgsqldb.c
|
|
||||||
@@ -23,7 +23,7 @@
|
|
||||||
#include <string.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
|
|
||||||
-#include <pgsql/libpq-fe.h>
|
|
||||||
+#include <libpq-fe.h>
|
|
||||||
|
|
||||||
#include <isc/mem.h>
|
|
||||||
#include <isc/print.h>
|
|
||||||
diff --git a/contrib/sdb/pgsql/zonetodb.c b/contrib/sdb/pgsql/zonetodb.c
|
|
||||||
index b8f5912..ff2d135 100644
|
|
||||||
--- a/contrib/sdb/pgsql/zonetodb.c
|
|
||||||
+++ b/contrib/sdb/pgsql/zonetodb.c
|
|
||||||
@@ -37,7 +37,7 @@
|
|
||||||
#include <dns/rdatatype.h>
|
|
||||||
#include <dns/result.h>
|
|
||||||
|
|
||||||
-#include <pgsql/libpq-fe.h>
|
|
||||||
+#include <libpq-fe.h>
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Generate a PostgreSQL table from a zone.
|
|
||||||
@@ -54,6 +54,9 @@ char *dbname, *dbtable;
|
|
||||||
char str[10240];
|
|
||||||
|
|
||||||
void
|
|
||||||
+closeandexit(int status);
|
|
||||||
+
|
|
||||||
+void
|
|
||||||
closeandexit(int status) {
|
|
||||||
if (conn != NULL)
|
|
||||||
PQfinish(conn);
|
|
||||||
@@ -61,6 +64,9 @@ closeandexit(int status) {
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
+check_result(isc_result_t result, const char *message);
|
|
||||||
+
|
|
||||||
+void
|
|
||||||
check_result(isc_result_t result, const char *message) {
|
|
||||||
if (result != ISC_R_SUCCESS) {
|
|
||||||
fprintf(stderr, "%s: %s\n", message,
|
|
||||||
@@ -84,7 +90,8 @@ quotestring(const unsigned char *source, unsigned char *dest) {
|
|
||||||
}
|
|
||||||
*dest++ = 0;
|
|
||||||
}
|
|
||||||
-
|
|
||||||
+void
|
|
||||||
+addrdata(dns_name_t *name, dns_ttl_t ttl, dns_rdata_t *rdata);
|
|
||||||
void
|
|
||||||
addrdata(dns_name_t *name, dns_ttl_t ttl, dns_rdata_t *rdata) {
|
|
||||||
unsigned char namearray[DNS_NAME_MAXTEXT + 1];
|
|
@ -1,8 +1,10 @@
|
|||||||
--- bind-9.5.0b2/bin/named/Makefile.in.pie 2008-02-11 17:21:47.000000000 +0100
|
diff --git a/bin/named/Makefile.in b/bin/named/Makefile.in
|
||||||
+++ bind-9.5.0b2/bin/named/Makefile.in 2008-02-11 17:22:10.000000000 +0100
|
index eb622d1..37053a7 100644
|
||||||
@@ -100,8 +100,12 @@ HTMLPAGES = named.html lwresd.html named
|
--- a/bin/named/Makefile.in
|
||||||
|
+++ b/bin/named/Makefile.in
|
||||||
MANOBJS = ${MANPAGES} ${HTMLPAGES}
|
@@ -117,8 +117,12 @@ SRCS = builtin.c config.c control.c \
|
||||||
|
tkeyconf.c tsigconf.c zoneconf.c \
|
||||||
|
${DLZDRIVER_SRCS} ${DBDRIVER_SRCS}
|
||||||
|
|
||||||
+EXT_CFLAGS = -fpie
|
+EXT_CFLAGS = -fpie
|
||||||
+
|
+
|
||||||
@ -13,10 +15,11 @@
|
|||||||
main.@O@: main.c
|
main.@O@: main.c
|
||||||
${LIBTOOL_MODE_COMPILE} ${CC} ${ALL_CFLAGS} \
|
${LIBTOOL_MODE_COMPILE} ${CC} ${ALL_CFLAGS} \
|
||||||
-DVERSION=\"${VERSION}\" \
|
-DVERSION=\"${VERSION}\" \
|
||||||
diff -up bind-9.5.0b2/bin/named/unix/Makefile.in.pie bind-9.5.0b2/bin/named/unix/Makefile.in
|
diff --git a/bin/named/unix/Makefile.in b/bin/named/unix/Makefile.in
|
||||||
--- bind-9.5.0b2/bin/named/unix/Makefile.in.pie 2008-02-11 17:22:21.000000000 +0100
|
index fd9ca8d..f1c102c 100644
|
||||||
+++ bind-9.5.0b2/bin/named/unix/Makefile.in 2008-02-11 17:23:00.000000000 +0100
|
--- a/bin/named/unix/Makefile.in
|
||||||
@@ -19,6 +19,8 @@ srcdir = @srcdir@
|
+++ b/bin/named/unix/Makefile.in
|
||||||
|
@@ -11,6 +11,8 @@ srcdir = @srcdir@
|
||||||
VPATH = @srcdir@
|
VPATH = @srcdir@
|
||||||
top_srcdir = @top_srcdir@
|
top_srcdir = @top_srcdir@
|
||||||
|
|
||||||
|
@ -1,54 +0,0 @@
|
|||||||
diff --git a/config.h.in b/config.h.in
|
|
||||||
index 4ecaa8f..2f65ccc 100644
|
|
||||||
--- a/config.h.in
|
|
||||||
+++ b/config.h.in
|
|
||||||
@@ -600,7 +600,7 @@ int sigwait(const unsigned int *set, int *sig);
|
|
||||||
#undef PREFER_GOSTASN1
|
|
||||||
|
|
||||||
/* The size of `void *', as computed by sizeof. */
|
|
||||||
-#undef SIZEOF_VOID_P
|
|
||||||
+/* #undef SIZEOF_VOID_P */
|
|
||||||
|
|
||||||
/* Define to 1 if you have the ANSI C header files. */
|
|
||||||
#undef STDC_HEADERS
|
|
||||||
diff --git a/isc-config.sh.in b/isc-config.sh.in
|
|
||||||
index a8a0a89..b5e94ed 100644
|
|
||||||
--- a/isc-config.sh.in
|
|
||||||
+++ b/isc-config.sh.in
|
|
||||||
@@ -13,7 +13,18 @@ prefix=@prefix@
|
|
||||||
exec_prefix=@exec_prefix@
|
|
||||||
exec_prefix_set=
|
|
||||||
includedir=@includedir@
|
|
||||||
-libdir=@libdir@
|
|
||||||
+arch=$(uname -m)
|
|
||||||
+
|
|
||||||
+case $arch in
|
|
||||||
+ x86_64 | amd64 | sparc64 | s390x | ppc64)
|
|
||||||
+ libdir=/usr/lib64
|
|
||||||
+ sec_libdir=/usr/lib
|
|
||||||
+ ;;
|
|
||||||
+ * )
|
|
||||||
+ libdir=/usr/lib
|
|
||||||
+ sec_libdir=/usr/lib64
|
|
||||||
+ ;;
|
|
||||||
+esac
|
|
||||||
|
|
||||||
usage()
|
|
||||||
{
|
|
||||||
@@ -132,6 +143,16 @@ if test x"$echo_libs" = x"true"; then
|
|
||||||
if test x"${exec_prefix_set}" = x"true"; then
|
|
||||||
libs="-L${exec_prefix}/lib"
|
|
||||||
else
|
|
||||||
+ if [ ! -x $libdir/libisc.so ] ; then
|
|
||||||
+ if [ ! -x $sec_libdir/libisc.so ] ; then
|
|
||||||
+ echo "Error: ISC libs not found in $libdir"
|
|
||||||
+ if [ -d $sec_libdir ] ; then
|
|
||||||
+ echo "Error: ISC libs not found in $sec_libdir"
|
|
||||||
+ fi
|
|
||||||
+ exit 1
|
|
||||||
+ fi
|
|
||||||
+ libdir=$sec_libdir
|
|
||||||
+ fi
|
|
||||||
libs="-L${libdir}"
|
|
||||||
fi
|
|
||||||
if test x"$libirs" = x"true" ; then
|
|
@ -1,42 +0,0 @@
|
|||||||
diff --git a/bin/dig/dighost.c b/bin/dig/dighost.c
|
|
||||||
index c06c804..e75b8b7 100644
|
|
||||||
--- a/bin/dig/dighost.c
|
|
||||||
+++ b/bin/dig/dighost.c
|
|
||||||
@@ -1816,6 +1816,13 @@ clear_query(dig_query_t *query) {
|
|
||||||
|
|
||||||
if (query->timer != NULL)
|
|
||||||
isc_timer_detach(&query->timer);
|
|
||||||
+
|
|
||||||
+ if (query->waiting_senddone) {
|
|
||||||
+ debug("send_done not yet called");
|
|
||||||
+ query->pending_free = true;
|
|
||||||
+ return;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
lookup = query->lookup;
|
|
||||||
|
|
||||||
if (lookup->current_query == query)
|
|
||||||
@@ -1841,10 +1848,7 @@ clear_query(dig_query_t *query) {
|
|
||||||
isc_mempool_put(commctx, query->recvspace);
|
|
||||||
isc_buffer_invalidate(&query->recvbuf);
|
|
||||||
isc_buffer_invalidate(&query->lengthbuf);
|
|
||||||
- if (query->waiting_senddone)
|
|
||||||
- query->pending_free = true;
|
|
||||||
- else
|
|
||||||
- isc_mem_free(mctx, query);
|
|
||||||
+ isc_mem_free(mctx, query);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*%
|
|
||||||
@@ -2895,9 +2899,9 @@ send_done(isc_task_t *_task, isc_event_t *event) {
|
|
||||||
isc_event_free(&event);
|
|
||||||
|
|
||||||
if (query->pending_free)
|
|
||||||
- isc_mem_free(mctx, query);
|
|
||||||
+ clear_query(query);
|
|
||||||
|
|
||||||
- check_if_done();
|
|
||||||
+ check_next_lookup(l);
|
|
||||||
UNLOCK_LOOKUP;
|
|
||||||
}
|
|
||||||
|
|
@ -1,23 +0,0 @@
|
|||||||
diff -up bind-9.6.0b1/contrib/sdb/ldap/ldapdb.c.old-api bind-9.6.0b1/contrib/sdb/ldap/ldapdb.c
|
|
||||||
--- bind-9.6.0b1/contrib/sdb/ldap/ldapdb.c.old-api 2008-11-24 13:28:13.000000000 +0100
|
|
||||||
+++ bind-9.6.0b1/contrib/sdb/ldap/ldapdb.c 2008-11-24 13:28:23.000000000 +0100
|
|
||||||
@@ -25,6 +25,7 @@
|
|
||||||
/* Using LDAPv3 by default, change this if you want v2 */
|
|
||||||
#ifndef LDAPDB_LDAP_VERSION
|
|
||||||
#define LDAPDB_LDAP_VERSION 3
|
|
||||||
+#define LDAP_DEPRECATED 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <config.h>
|
|
||||||
diff -up bind-9.6.0b1/contrib/sdb/ldap/zone2ldap.c.old-api bind-9.6.0b1/contrib/sdb/ldap/zone2ldap.c
|
|
||||||
--- bind-9.6.0b1/contrib/sdb/ldap/zone2ldap.c.old-api 2008-11-24 13:29:05.000000000 +0100
|
|
||||||
+++ bind-9.6.0b1/contrib/sdb/ldap/zone2ldap.c 2008-11-24 13:29:14.000000000 +0100
|
|
||||||
@@ -13,6 +13,8 @@
|
|
||||||
* ditched dNSDomain2 schema support. Version 0.3-ALPHA
|
|
||||||
*/
|
|
||||||
|
|
||||||
+#define LDAP_DEPRECATED 1
|
|
||||||
+
|
|
||||||
#include <errno.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <stdlib.h>
|
|
@ -1,50 +1,30 @@
|
|||||||
diff --git a/lib/isc/include/isc/stdio.h b/lib/isc/include/isc/stdio.h
|
|
||||||
index 1f44b5a..a3625f9 100644
|
|
||||||
--- a/lib/isc/include/isc/stdio.h
|
|
||||||
+++ b/lib/isc/include/isc/stdio.h
|
|
||||||
@@ -69,6 +69,9 @@ isc_stdio_sync(FILE *f);
|
|
||||||
* direct counterpart in the stdio library.
|
|
||||||
*/
|
|
||||||
|
|
||||||
+isc_result_t
|
|
||||||
+isc_stdio_fgetc(FILE *f, int *ret);
|
|
||||||
+
|
|
||||||
ISC_LANG_ENDDECLS
|
|
||||||
|
|
||||||
#endif /* ISC_STDIO_H */
|
|
||||||
diff --git a/lib/isc/lex.c b/lib/isc/lex.c
|
diff --git a/lib/isc/lex.c b/lib/isc/lex.c
|
||||||
index a8955bc..fc6103b 100644
|
index cd44fe3..5b7c539 100644
|
||||||
--- a/lib/isc/lex.c
|
--- a/lib/isc/lex.c
|
||||||
+++ b/lib/isc/lex.c
|
+++ b/lib/isc/lex.c
|
||||||
@@ -434,17 +434,14 @@ isc_lex_gettoken(isc_lex_t *lex, unsigned int options, isc_token_t *tokenp) {
|
@@ -27,6 +27,8 @@
|
||||||
if (source->is_file) {
|
#include <isc/string.h>
|
||||||
stream = source->input;
|
#include <isc/util.h>
|
||||||
|
|
||||||
-#if defined(HAVE_FLOCKFILE) && defined(HAVE_GETCUNLOCKED)
|
+#include "../errno2result.h"
|
||||||
- c = getc_unlocked(stream);
|
|
||||||
-#else
|
|
||||||
- c = getc(stream);
|
|
||||||
-#endif
|
|
||||||
- if (c == EOF) {
|
|
||||||
- if (ferror(stream)) {
|
|
||||||
- source->result = ISC_R_IOERROR;
|
|
||||||
- result = source->result;
|
|
||||||
+ result = isc_stdio_fgetc(stream, &c);
|
|
||||||
+
|
+
|
||||||
+ if (result != ISC_R_SUCCESS) {
|
typedef struct inputsource {
|
||||||
+ if (result != ISC_R_EOF) {
|
isc_result_t result;
|
||||||
+ source->result = result;
|
bool is_file;
|
||||||
|
@@ -422,7 +424,7 @@ isc_lex_gettoken(isc_lex_t *lex, unsigned int options, isc_token_t *tokenp) {
|
||||||
|
#endif /* if defined(HAVE_FLOCKFILE) && defined(HAVE_GETC_UNLOCKED) */
|
||||||
|
if (c == EOF) {
|
||||||
|
if (ferror(stream)) {
|
||||||
|
- source->result = ISC_R_IOERROR;
|
||||||
|
+ source->result = isc__errno2result(errno);
|
||||||
|
result = source->result;
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
+
|
|
||||||
source->at_eof = true;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
diff --git a/lib/isc/unix/errno2result.c b/lib/isc/unix/errno2result.c
|
diff --git a/lib/isc/unix/errno2result.c b/lib/isc/unix/errno2result.c
|
||||||
index 2f12bcc..5bfd648 100644
|
index e3e2644..5e58600 100644
|
||||||
--- a/lib/isc/unix/errno2result.c
|
--- a/lib/isc/unix/errno2result.c
|
||||||
+++ b/lib/isc/unix/errno2result.c
|
+++ b/lib/isc/unix/errno2result.c
|
||||||
@@ -40,6 +40,7 @@ isc___errno2result(int posixerrno, bool dolog,
|
@@ -37,6 +37,7 @@ isc___errno2result(int posixerrno, bool dolog, const char *file,
|
||||||
case EINVAL: /* XXX sometimes this is not for files */
|
case EINVAL: /* XXX sometimes this is not for files */
|
||||||
case ENAMETOOLONG:
|
case ENAMETOOLONG:
|
||||||
case EBADF:
|
case EBADF:
|
||||||
@ -52,30 +32,3 @@ index 2f12bcc..5bfd648 100644
|
|||||||
return (ISC_R_INVALIDFILE);
|
return (ISC_R_INVALIDFILE);
|
||||||
case ENOENT:
|
case ENOENT:
|
||||||
return (ISC_R_FILENOTFOUND);
|
return (ISC_R_FILENOTFOUND);
|
||||||
diff --git a/lib/isc/unix/stdio.c b/lib/isc/unix/stdio.c
|
|
||||||
index e60fa65..77f0b13 100644
|
|
||||||
--- a/lib/isc/unix/stdio.c
|
|
||||||
+++ b/lib/isc/unix/stdio.c
|
|
||||||
@@ -149,3 +149,22 @@ isc_stdio_sync(FILE *f) {
|
|
||||||
return (isc__errno2result(errno));
|
|
||||||
}
|
|
||||||
|
|
||||||
+isc_result_t
|
|
||||||
+isc_stdio_fgetc(FILE *f, int *ret) {
|
|
||||||
+ int r;
|
|
||||||
+ isc_result_t result = ISC_R_SUCCESS;
|
|
||||||
+
|
|
||||||
+#if defined(HAVE_FLOCKFILE) && defined(HAVE_GETCUNLOCKED)
|
|
||||||
+ r = fgetc_unlocked(f);
|
|
||||||
+#else
|
|
||||||
+ r = fgets(f);
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
+ if (r == EOF)
|
|
||||||
+ result = ferror(f) ? isc__errno2result(errno) : ISC_R_EOF;
|
|
||||||
+
|
|
||||||
+ *ret = r;
|
|
||||||
+
|
|
||||||
+ return result;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
|
@ -1,51 +0,0 @@
|
|||||||
diff --git a/configure.ac b/configure.ac
|
|
||||||
index 26c509e..c1bfd62 100644
|
|
||||||
--- a/configure.ac
|
|
||||||
+++ b/configure.ac
|
|
||||||
@@ -4152,6 +4152,10 @@ if test "yes" = "$use_atomic"; then
|
|
||||||
AC_MSG_RESULT($arch)
|
|
||||||
fi
|
|
||||||
|
|
||||||
+if test ! "$arch" = "x86_64" -a "$have_xaddq" = "yes"; then
|
|
||||||
+ AC_MSG_ERROR([XADDQ present but disabled by Fedora patch!])
|
|
||||||
+fi
|
|
||||||
+
|
|
||||||
if test "yes" = "$have_atomic"; then
|
|
||||||
AC_MSG_CHECKING([compiler support for inline assembly code])
|
|
||||||
|
|
||||||
diff --git a/lib/isc/include/isc/platform.h.in b/lib/isc/include/isc/platform.h.in
|
|
||||||
index c902d46..9c7c342 100644
|
|
||||||
--- a/lib/isc/include/isc/platform.h.in
|
|
||||||
+++ b/lib/isc/include/isc/platform.h.in
|
|
||||||
@@ -284,19 +284,25 @@
|
|
||||||
* If the "xaddq" operation (64bit xadd) is available on this architecture,
|
|
||||||
* ISC_PLATFORM_HAVEXADDQ will be defined.
|
|
||||||
*/
|
|
||||||
-@ISC_PLATFORM_HAVEXADDQ@
|
|
||||||
|
|
||||||
/*
|
|
||||||
- * If the 32-bit "atomic swap" operation is available on this
|
|
||||||
- * architecture, ISC_PLATFORM_HAVEATOMICSTORE" will be defined.
|
|
||||||
+ * If the 64-bit "atomic swap" operation is available on this
|
|
||||||
+ * architecture, ISC_PLATFORM_HAVEATOMICSTOREQ" will be defined.
|
|
||||||
*/
|
|
||||||
-@ISC_PLATFORM_HAVEATOMICSTORE@
|
|
||||||
+
|
|
||||||
+#ifdef __x86_64__
|
|
||||||
+#define ISC_PLATFORM_HAVEXADDQ 1
|
|
||||||
+#define ISC_PLATFORM_HAVEATOMICSTOREQ 1
|
|
||||||
+#else
|
|
||||||
+#undef ISC_PLATFORM_HAVEXADDQ
|
|
||||||
+#undef ISC_PLATFORM_HAVEATOMICSTOREQ
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
/*
|
|
||||||
- * If the 64-bit "atomic swap" operation is available on this
|
|
||||||
+ * If the 32-bit "atomic swap" operation is available on this
|
|
||||||
* architecture, ISC_PLATFORM_HAVEATOMICSTORE" will be defined.
|
|
||||||
*/
|
|
||||||
-@ISC_PLATFORM_HAVEATOMICSTOREQ@
|
|
||||||
+@ISC_PLATFORM_HAVEATOMICSTORE@
|
|
||||||
|
|
||||||
/*
|
|
||||||
* If the "compare-and-exchange" operation is available on this architecture,
|
|
@ -1,31 +1,31 @@
|
|||||||
diff --git a/lib/dns/resolver.c b/lib/dns/resolver.c
|
diff --git a/lib/dns/resolver.c b/lib/dns/resolver.c
|
||||||
index ecb3ddb..f7f73cd 100644
|
index 31549c6..65a14b6 100644
|
||||||
--- a/lib/dns/resolver.c
|
--- a/lib/dns/resolver.c
|
||||||
+++ b/lib/dns/resolver.c
|
+++ b/lib/dns/resolver.c
|
||||||
@@ -1456,7 +1456,7 @@ log_edns(fetchctx_t *fctx) {
|
@@ -1762,7 +1762,7 @@ log_edns(fetchctx_t *fctx) {
|
||||||
*/
|
*/
|
||||||
dns_name_format(&fctx->domain, domainbuf, sizeof(domainbuf));
|
dns_name_format(&fctx->domain, domainbuf, sizeof(domainbuf));
|
||||||
isc_log_write(dns_lctx, DNS_LOGCATEGORY_EDNS_DISABLED,
|
isc_log_write(dns_lctx, DNS_LOGCATEGORY_EDNS_DISABLED,
|
||||||
- DNS_LOGMODULE_RESOLVER, ISC_LOG_INFO,
|
- DNS_LOGMODULE_RESOLVER, ISC_LOG_INFO,
|
||||||
+ DNS_LOGMODULE_RESOLVER, ISC_LOG_DEBUG(1),
|
+ DNS_LOGMODULE_RESOLVER, ISC_LOG_DEBUG(1),
|
||||||
"success resolving '%s' (in '%s'?) after %s",
|
"success resolving '%s' (in '%s'?) after %s", fctx->info,
|
||||||
fctx->info, domainbuf, fctx->reason);
|
domainbuf, fctx->reason);
|
||||||
|
}
|
||||||
@@ -4667,7 +4667,7 @@ log_lame(fetchctx_t *fctx, dns_adbaddrinfo_t *addrinfo) {
|
@@ -5298,7 +5298,7 @@ log_lame(fetchctx_t *fctx, dns_adbaddrinfo_t *addrinfo) {
|
||||||
dns_name_format(&fctx->domain, domainbuf, sizeof(domainbuf));
|
dns_name_format(&fctx->domain, domainbuf, sizeof(domainbuf));
|
||||||
isc_sockaddr_format(&addrinfo->sockaddr, addrbuf, sizeof(addrbuf));
|
isc_sockaddr_format(&addrinfo->sockaddr, addrbuf, sizeof(addrbuf));
|
||||||
isc_log_write(dns_lctx, DNS_LOGCATEGORY_LAME_SERVERS,
|
isc_log_write(dns_lctx, DNS_LOGCATEGORY_LAME_SERVERS,
|
||||||
- DNS_LOGMODULE_RESOLVER, ISC_LOG_INFO,
|
- DNS_LOGMODULE_RESOLVER, ISC_LOG_INFO,
|
||||||
+ DNS_LOGMODULE_RESOLVER, ISC_LOG_DEBUG(1),
|
+ DNS_LOGMODULE_RESOLVER, ISC_LOG_DEBUG(1),
|
||||||
"lame server resolving '%s' (in '%s'?): %s",
|
"lame server resolving '%s' (in '%s'?): %s", namebuf,
|
||||||
namebuf, domainbuf, addrbuf);
|
domainbuf, addrbuf);
|
||||||
}
|
}
|
||||||
@@ -4685,7 +4685,7 @@ log_formerr(fetchctx_t *fctx, const char *format, ...) {
|
@@ -5316,7 +5316,7 @@ log_formerr(fetchctx_t *fctx, const char *format, ...) {
|
||||||
isc_sockaddr_format(&fctx->addrinfo->sockaddr, nsbuf, sizeof(nsbuf));
|
isc_sockaddr_format(&fctx->addrinfo->sockaddr, nsbuf, sizeof(nsbuf));
|
||||||
|
|
||||||
isc_log_write(dns_lctx, DNS_LOGCATEGORY_RESOLVER,
|
isc_log_write(dns_lctx, DNS_LOGCATEGORY_RESOLVER,
|
||||||
- DNS_LOGMODULE_RESOLVER, ISC_LOG_NOTICE,
|
- DNS_LOGMODULE_RESOLVER, ISC_LOG_NOTICE,
|
||||||
+ DNS_LOGMODULE_RESOLVER, ISC_LOG_DEBUG(1),
|
+ DNS_LOGMODULE_RESOLVER, ISC_LOG_DEBUG(1),
|
||||||
"DNS format error from %s resolving %s for %s: %s",
|
"DNS format error from %s resolving %s for %s: %s", nsbuf,
|
||||||
nsbuf, fctx->info, fctx->clientstr, msgbuf);
|
fctx->info, fctx->clientstr, msgbuf);
|
||||||
}
|
}
|
||||||
|
@ -1,14 +0,0 @@
|
|||||||
diff -up bind-9.7.2-P3/lib/lwres/lwconfig.c.rh669163 bind-9.7.2-P3/lib/lwres/lwconfig.c
|
|
||||||
--- bind-9.7.2-P3/lib/lwres/lwconfig.c.rh669163 2011-01-28 14:48:38.934472578 +0100
|
|
||||||
+++ bind-9.7.2-P3/lib/lwres/lwconfig.c 2011-01-28 14:49:50.421326035 +0100
|
|
||||||
@@ -612,6 +612,10 @@ lwres_conf_parse(lwres_context_t *ctx, c
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ /* Ignore options with no parameters */
|
|
||||||
+ if (stopchar == '\n')
|
|
||||||
+ continue;
|
|
||||||
+
|
|
||||||
if (strlen(word) == 0U)
|
|
||||||
rval = LWRES_R_SUCCESS;
|
|
||||||
else if (strcmp(word, "nameserver") == 0)
|
|
@ -1,44 +0,0 @@
|
|||||||
diff --git a/bin/dig/dig.docbook b/bin/dig/dig.docbook
|
|
||||||
index 1079421..f11abd1 100644
|
|
||||||
--- a/bin/dig/dig.docbook
|
|
||||||
+++ b/bin/dig/dig.docbook
|
|
||||||
@@ -1177,6 +1177,39 @@ dig +qr www.isc.org any -x 127.0.0.1 isc.org ns +noqr
|
|
||||||
</para>
|
|
||||||
</refsection>
|
|
||||||
|
|
||||||
+ <refsection><info><title>RETURN CODES</title></info>
|
|
||||||
+ <para>
|
|
||||||
+ <command>Dig</command> return codes are:
|
|
||||||
+ <variablelist>
|
|
||||||
+ <varlistentry>
|
|
||||||
+ <listitem>
|
|
||||||
+ <para>0: Everything went well, including things like NXDOMAIN</para>
|
|
||||||
+ </listitem>
|
|
||||||
+ </varlistentry>
|
|
||||||
+ <varlistentry>
|
|
||||||
+ <listitem>
|
|
||||||
+ <para>1: Usage error</para>
|
|
||||||
+ </listitem>
|
|
||||||
+ </varlistentry>
|
|
||||||
+ <varlistentry>
|
|
||||||
+ <listitem>
|
|
||||||
+ <para>8: Couldn't open batch file</para>
|
|
||||||
+ </listitem>
|
|
||||||
+ </varlistentry>
|
|
||||||
+ <varlistentry>
|
|
||||||
+ <listitem>
|
|
||||||
+ <para>9: No reply from server</para>
|
|
||||||
+ </listitem>
|
|
||||||
+ </varlistentry>
|
|
||||||
+ <varlistentry>
|
|
||||||
+ <listitem>
|
|
||||||
+ <para>10: Internal error</para>
|
|
||||||
+ </listitem>
|
|
||||||
+ </varlistentry>
|
|
||||||
+ </variablelist>
|
|
||||||
+ </para>
|
|
||||||
+ </refsection>
|
|
||||||
+
|
|
||||||
<refsection><info><title>FILES</title></info>
|
|
||||||
|
|
||||||
<para><filename>/etc/resolv.conf</filename>
|
|
534
SOURCES/codesign2021.txt
Normal file
534
SOURCES/codesign2021.txt
Normal file
@ -0,0 +1,534 @@
|
|||||||
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
|
|
||||||
|
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
|
||||||
|
=fX+D
|
||||||
|
-----END PGP PUBLIC KEY BLOCK-----
|
||||||
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
|
|
||||||
|
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
|
||||||
|
4xcYgqlVpv15O7VrD+I=
|
||||||
|
=Uugw
|
||||||
|
-----END PGP PUBLIC KEY BLOCK-----
|
@ -1,148 +0,0 @@
|
|||||||
# A schema for storing DNS zones in LDAP
|
|
||||||
#
|
|
||||||
attributetype ( 1.3.6.1.4.1.2428.20.0.0 NAME 'dNSTTL'
|
|
||||||
DESC 'An integer denoting time to live'
|
|
||||||
EQUALITY integerMatch
|
|
||||||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )
|
|
||||||
|
|
||||||
attributetype ( 1.3.6.1.4.1.2428.20.0.1 NAME 'dNSClass'
|
|
||||||
DESC 'The class of a resource record'
|
|
||||||
EQUALITY caseIgnoreIA5Match
|
|
||||||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
|
|
||||||
|
|
||||||
attributetype ( 1.3.6.1.4.1.2428.20.0.2 NAME 'zoneName'
|
|
||||||
DESC 'The name of a zone, i.e. the name of the highest node in the zone'
|
|
||||||
EQUALITY caseIgnoreIA5Match
|
|
||||||
SUBSTR caseIgnoreIA5SubstringsMatch
|
|
||||||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
|
|
||||||
|
|
||||||
attributetype ( 1.3.6.1.4.1.2428.20.0.3 NAME 'relativeDomainName'
|
|
||||||
DESC 'The starting labels of a domain name'
|
|
||||||
EQUALITY caseIgnoreIA5Match
|
|
||||||
SUBSTR caseIgnoreIA5SubstringsMatch
|
|
||||||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
|
|
||||||
|
|
||||||
attributetype ( 1.3.6.1.4.1.2428.20.1.12 NAME 'pTRRecord'
|
|
||||||
DESC 'domain name pointer, RFC 1035'
|
|
||||||
EQUALITY caseIgnoreIA5Match
|
|
||||||
SUBSTR caseIgnoreIA5SubstringsMatch
|
|
||||||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
|
|
||||||
|
|
||||||
attributetype ( 1.3.6.1.4.1.2428.20.1.13 NAME 'hInfoRecord'
|
|
||||||
DESC 'host information, RFC 1035'
|
|
||||||
EQUALITY caseIgnoreIA5Match
|
|
||||||
SUBSTR caseIgnoreIA5SubstringsMatch
|
|
||||||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
|
|
||||||
|
|
||||||
attributetype ( 1.3.6.1.4.1.2428.20.1.14 NAME 'mInfoRecord'
|
|
||||||
DESC 'mailbox or mail list information, RFC 1035'
|
|
||||||
EQUALITY caseIgnoreIA5Match
|
|
||||||
SUBSTR caseIgnoreIA5SubstringsMatch
|
|
||||||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
|
|
||||||
|
|
||||||
attributetype ( 1.3.6.1.4.1.2428.20.1.16 NAME 'tXTRecord'
|
|
||||||
DESC 'text string, RFC 1035'
|
|
||||||
EQUALITY caseIgnoreIA5Match
|
|
||||||
SUBSTR caseIgnoreIA5SubstringsMatch
|
|
||||||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
|
|
||||||
|
|
||||||
attributetype ( 1.3.6.1.4.1.2428.20.1.18 NAME 'aFSDBRecord'
|
|
||||||
DESC 'for AFS Data Base location, RFC 1183'
|
|
||||||
EQUALITY caseIgnoreIA5Match
|
|
||||||
SUBSTR caseIgnoreIA5SubstringsMatch
|
|
||||||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
|
|
||||||
|
|
||||||
attributetype ( 1.3.6.1.4.1.2428.20.1.24 NAME 'SigRecord'
|
|
||||||
DESC 'Signature, RFC 2535'
|
|
||||||
EQUALITY caseIgnoreIA5Match
|
|
||||||
SUBSTR caseIgnoreIA5SubstringsMatch
|
|
||||||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
|
|
||||||
|
|
||||||
attributetype ( 1.3.6.1.4.1.2428.20.1.25 NAME 'KeyRecord'
|
|
||||||
DESC 'Key, RFC 2535'
|
|
||||||
EQUALITY caseIgnoreIA5Match
|
|
||||||
SUBSTR caseIgnoreIA5SubstringsMatch
|
|
||||||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
|
|
||||||
|
|
||||||
attributetype ( 1.3.6.1.4.1.2428.20.1.28 NAME 'aAAARecord'
|
|
||||||
DESC 'IPv6 address, RFC 1886'
|
|
||||||
EQUALITY caseIgnoreIA5Match
|
|
||||||
SUBSTR caseIgnoreIA5SubstringsMatch
|
|
||||||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
|
|
||||||
|
|
||||||
attributetype ( 1.3.6.1.4.1.2428.20.1.29 NAME 'LocRecord'
|
|
||||||
DESC 'Location, RFC 1876'
|
|
||||||
EQUALITY caseIgnoreIA5Match
|
|
||||||
SUBSTR caseIgnoreIA5SubstringsMatch
|
|
||||||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
|
|
||||||
|
|
||||||
attributetype ( 1.3.6.1.4.1.2428.20.1.30 NAME 'nXTRecord'
|
|
||||||
DESC 'non-existant, RFC 2535'
|
|
||||||
EQUALITY caseIgnoreIA5Match
|
|
||||||
SUBSTR caseIgnoreIA5SubstringsMatch
|
|
||||||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
|
|
||||||
|
|
||||||
attributetype ( 1.3.6.1.4.1.2428.20.1.33 NAME 'sRVRecord'
|
|
||||||
DESC 'service location, RFC 2782'
|
|
||||||
EQUALITY caseIgnoreIA5Match
|
|
||||||
SUBSTR caseIgnoreIA5SubstringsMatch
|
|
||||||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
|
|
||||||
|
|
||||||
attributetype ( 1.3.6.1.4.1.2428.20.1.35 NAME 'nAPTRRecord'
|
|
||||||
DESC 'Naming Authority Pointer, RFC 2915'
|
|
||||||
EQUALITY caseIgnoreIA5Match
|
|
||||||
SUBSTR caseIgnoreIA5SubstringsMatch
|
|
||||||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
|
|
||||||
|
|
||||||
attributetype ( 1.3.6.1.4.1.2428.20.1.36 NAME 'kXRecord'
|
|
||||||
DESC 'Key Exchange Delegation, RFC 2230'
|
|
||||||
EQUALITY caseIgnoreIA5Match
|
|
||||||
SUBSTR caseIgnoreIA5SubstringsMatch
|
|
||||||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
|
|
||||||
|
|
||||||
attributetype ( 1.3.6.1.4.1.2428.20.1.37 NAME 'certRecord'
|
|
||||||
DESC 'certificate, RFC 2538'
|
|
||||||
EQUALITY caseIgnoreIA5Match
|
|
||||||
SUBSTR caseIgnoreIA5SubstringsMatch
|
|
||||||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
|
|
||||||
|
|
||||||
attributetype ( 1.3.6.1.4.1.2428.20.1.38 NAME 'a6Record'
|
|
||||||
DESC 'A6 Record Type, RFC 2874'
|
|
||||||
EQUALITY caseIgnoreIA5Match
|
|
||||||
SUBSTR caseIgnoreIA5SubstringsMatch
|
|
||||||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
|
|
||||||
|
|
||||||
attributetype ( 1.3.6.1.4.1.2428.20.1.39 NAME 'dNameRecord'
|
|
||||||
DESC 'Non-Terminal DNS Name Redirection, RFC 2672'
|
|
||||||
EQUALITY caseIgnoreIA5Match
|
|
||||||
SUBSTR caseIgnoreIA5SubstringsMatch
|
|
||||||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
|
|
||||||
|
|
||||||
attributetype ( 1.3.6.1.4.1.2428.20.1.43 NAME 'dSRecord'
|
|
||||||
DESC 'Delegation Signer, RFC 3658'
|
|
||||||
EQUALITY caseIgnoreIA5Match
|
|
||||||
SUBSTR caseIgnoreIA5SubstringsMatch
|
|
||||||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
|
|
||||||
|
|
||||||
attributetype ( 1.3.6.1.4.1.2428.20.1.46 NAME 'rRSIGRecord'
|
|
||||||
DESC 'RRSIG, RFC 3755'
|
|
||||||
EQUALITY caseIgnoreIA5Match
|
|
||||||
SUBSTR caseIgnoreIA5SubstringsMatch
|
|
||||||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
|
|
||||||
|
|
||||||
attributetype ( 1.3.6.1.4.1.2428.20.1.47 NAME 'nSECRecord'
|
|
||||||
DESC 'NSEC, RFC 3755'
|
|
||||||
EQUALITY caseIgnoreIA5Match
|
|
||||||
SUBSTR caseIgnoreIA5SubstringsMatch
|
|
||||||
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
|
|
||||||
|
|
||||||
objectclass ( 1.3.6.1.4.1.2428.20.3 NAME 'dNSZone'
|
|
||||||
SUP top STRUCTURAL
|
|
||||||
MUST ( zoneName $ relativeDomainName )
|
|
||||||
MAY ( DNSTTL $ DNSClass $
|
|
||||||
ARecord $ MDRecord $ MXRecord $ NSRecord $
|
|
||||||
SOARecord $ CNAMERecord $ PTRRecord $ HINFORecord $
|
|
||||||
MINFORecord $ TXTRecord $ SIGRecord $ KEYRecord $
|
|
||||||
AAAARecord $ LOCRecord $ NXTRecord $ SRVRecord $
|
|
||||||
NAPTRRecord $ KXRecord $ CERTRecord $ A6Record $
|
|
||||||
DNAMERecord ) )
|
|
17
SOURCES/generate-rndc-key.sh
Normal file → Executable file
17
SOURCES/generate-rndc-key.sh
Normal file → Executable file
@ -1,12 +1,23 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
. /etc/rc.d/init.d/functions
|
if [ -r /etc/rc.d/init.d/functions ]; then
|
||||||
|
. /etc/rc.d/init.d/functions
|
||||||
|
else
|
||||||
|
success() {
|
||||||
|
echo $" OK "
|
||||||
|
}
|
||||||
|
|
||||||
|
failure() {
|
||||||
|
echo -n " "
|
||||||
|
echo $"FAILED"
|
||||||
|
}
|
||||||
|
fi
|
||||||
|
|
||||||
# This script generates /etc/rndc.key if doesn't exist AND if there is no rndc.conf
|
# This script generates /etc/rndc.key if doesn't exist AND if there is no rndc.conf
|
||||||
|
|
||||||
if [ ! -s /etc/rndc.key -a ! -s /etc/rndc.conf ]; then
|
if [ ! -s /etc/rndc.key -a ! -s /etc/rndc.conf ]; then
|
||||||
echo -n $"Generating /etc/rndc.key:"
|
echo -n $"Generating /etc/rndc.key:"
|
||||||
if /usr/sbin/rndc-confgen -a -A hmac-sha256 -r /dev/urandom > /dev/null 2>&1
|
if /usr/sbin/rndc-confgen -a -A hmac-sha256 > /dev/null 2>&1
|
||||||
then
|
then
|
||||||
chmod 640 /etc/rndc.key
|
chmod 640 /etc/rndc.key
|
||||||
chown root:named /etc/rndc.key
|
chown root:named /etc/rndc.key
|
||||||
@ -14,7 +25,9 @@ if [ ! -s /etc/rndc.key -a ! -s /etc/rndc.conf ]; then
|
|||||||
success $"/etc/rndc.key generation"
|
success $"/etc/rndc.key generation"
|
||||||
echo
|
echo
|
||||||
else
|
else
|
||||||
|
rc=$?
|
||||||
failure $"/etc/rndc.key generation"
|
failure $"/etc/rndc.key generation"
|
||||||
echo
|
echo
|
||||||
|
exit $rc
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
@ -1,41 +0,0 @@
|
|||||||
.\" Copyright (C) 2004, 2005 Stig Venaas <venaas@uninett.no>
|
|
||||||
.\"
|
|
||||||
.\" Permission to use, copy, modify, and distribute this software for any
|
|
||||||
.\" purpose with or without fee is hereby granted, provided that the above
|
|
||||||
.\" copyright notice and this permission notice appear in all copies.
|
|
||||||
.\" Manpage written by Jan Gorig
|
|
||||||
.TH ldap2zone 1 "15 March 2010" "BIND9"
|
|
||||||
.SH NAME
|
|
||||||
ldap2zone - Creates zone file from LDAP dnszone information
|
|
||||||
.SH SYNOPSIS
|
|
||||||
.B ldap2zone zone-name LDAP-URL default-ttl [serial]
|
|
||||||
.SH DESCRIPTION
|
|
||||||
ldap2zone is a tool that reads info for a zone from LDAP and constructs a standard plain ascii zone file that is written to the standard output. The LDAP information has to be stored using the dnszone schema. The schema is used by BIND with LDAP back-end.
|
|
||||||
|
|
||||||
\fBzone-name\fR
|
|
||||||
.RS 4
|
|
||||||
Name of the zone, eg "mydomain.net."
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fBLDAP-URL\fR
|
|
||||||
.RS 4
|
|
||||||
LDAP URL to dnszone information
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fBdefault-ttl\fR
|
|
||||||
.RS 4
|
|
||||||
Default TTL value to be used in zone
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fBserial\fR
|
|
||||||
.RS 4
|
|
||||||
(optional) Program checks this number to be different than SOA serial number.
|
|
||||||
.RE
|
|
||||||
|
|
||||||
.SH "EXIT STATUS"
|
|
||||||
Exits with 0 on success or 1 on failure.
|
|
||||||
.SH "SEE ALSO"
|
|
||||||
named(8) ldap(3)
|
|
||||||
http://www.venaas.no/dns/ldap2zone/
|
|
||||||
.SH "COPYRIGHT"
|
|
||||||
Copyright (C) 2004, 2005 Stig Venaas
|
|
@ -1,411 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2004, 2005 Stig Venaas <venaas@uninett.no>
|
|
||||||
* $Id: ldap2zone.c,v 1.1 2007/07/24 15:18:00 atkac Exp $
|
|
||||||
*
|
|
||||||
* Permission to use, copy, modify, and distribute this software for any
|
|
||||||
* purpose with or without fee is hereby granted, provided that the above
|
|
||||||
* copyright notice and this permission notice appear in all copies.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define LDAP_DEPRECATED 1
|
|
||||||
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <ctype.h>
|
|
||||||
|
|
||||||
#include <ldap.h>
|
|
||||||
|
|
||||||
struct string {
|
|
||||||
void *data;
|
|
||||||
size_t len;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct assstack_entry {
|
|
||||||
struct string key;
|
|
||||||
struct string val;
|
|
||||||
struct assstack_entry *next;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct assstack_entry *assstack_find(struct assstack_entry *stack, struct string *key);
|
|
||||||
void assstack_push(struct assstack_entry **stack, struct assstack_entry *item);
|
|
||||||
void assstack_insertbottom(struct assstack_entry **stack, struct assstack_entry *item);
|
|
||||||
void printsoa(struct string *soa);
|
|
||||||
void printrrs(char *defaultttl, struct assstack_entry *item);
|
|
||||||
void print_zone(char *defaultttl, struct assstack_entry *stack);
|
|
||||||
void usage(char *name);
|
|
||||||
void err(char *name, const char *msg);
|
|
||||||
int putrr(struct assstack_entry **stack, struct berval *name, char *type, char *ttl, struct berval *val);
|
|
||||||
|
|
||||||
struct assstack_entry *assstack_find(struct assstack_entry *stack, struct string *key) {
|
|
||||||
for (; stack; stack = stack->next)
|
|
||||||
if (stack->key.len == key->len && !memcmp(stack->key.data, key->data, key->len))
|
|
||||||
return stack;
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
void assstack_push(struct assstack_entry **stack, struct assstack_entry *item) {
|
|
||||||
item->next = *stack;
|
|
||||||
*stack = item;
|
|
||||||
}
|
|
||||||
|
|
||||||
void assstack_insertbottom(struct assstack_entry **stack, struct assstack_entry *item) {
|
|
||||||
struct assstack_entry *p;
|
|
||||||
|
|
||||||
item->next = NULL;
|
|
||||||
if (!*stack) {
|
|
||||||
*stack = item;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
/* find end, should keep track of end somewhere */
|
|
||||||
/* really a queue, not a stack */
|
|
||||||
p = *stack;
|
|
||||||
while (p->next)
|
|
||||||
p = p->next;
|
|
||||||
p->next = item;
|
|
||||||
}
|
|
||||||
|
|
||||||
void printsoa(struct string *soa) {
|
|
||||||
char *s;
|
|
||||||
size_t i;
|
|
||||||
|
|
||||||
s = (char *)soa->data;
|
|
||||||
i = 0;
|
|
||||||
while (i < soa->len) {
|
|
||||||
putchar(s[i]);
|
|
||||||
if (s[i++] == ' ')
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
while (i < soa->len) {
|
|
||||||
putchar(s[i]);
|
|
||||||
if (s[i++] == ' ')
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
printf("(\n\t\t\t\t");
|
|
||||||
while (i < soa->len) {
|
|
||||||
putchar(s[i]);
|
|
||||||
if (s[i++] == ' ')
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
printf("; Serialnumber\n\t\t\t\t");
|
|
||||||
while (i < soa->len) {
|
|
||||||
if (s[i] == ' ')
|
|
||||||
break;
|
|
||||||
putchar(s[i++]);
|
|
||||||
}
|
|
||||||
i++;
|
|
||||||
printf("\t; Refresh\n\t\t\t\t");
|
|
||||||
while (i < soa->len) {
|
|
||||||
if (s[i] == ' ')
|
|
||||||
break;
|
|
||||||
putchar(s[i++]);
|
|
||||||
}
|
|
||||||
i++;
|
|
||||||
printf("\t; Retry\n\t\t\t\t");
|
|
||||||
while (i < soa->len) {
|
|
||||||
if (s[i] == ' ')
|
|
||||||
break;
|
|
||||||
putchar(s[i++]);
|
|
||||||
}
|
|
||||||
i++;
|
|
||||||
printf("\t; Expire\n\t\t\t\t");
|
|
||||||
while (i < soa->len) {
|
|
||||||
putchar(s[i++]);
|
|
||||||
}
|
|
||||||
printf(" )\t; Minimum TTL\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
void printrrs(char *defaultttl, struct assstack_entry *item) {
|
|
||||||
struct assstack_entry *stack;
|
|
||||||
char *s;
|
|
||||||
int first;
|
|
||||||
size_t i;
|
|
||||||
char *ttl, *type;
|
|
||||||
int top;
|
|
||||||
|
|
||||||
s = (char *)item->key.data;
|
|
||||||
|
|
||||||
if (item->key.len == 1 && *s == '@') {
|
|
||||||
top = 1;
|
|
||||||
printf("@\t");
|
|
||||||
} else {
|
|
||||||
top = 0;
|
|
||||||
for (i = 0; i < item->key.len; i++)
|
|
||||||
putchar(s[i]);
|
|
||||||
if (item->key.len < 8)
|
|
||||||
putchar('\t');
|
|
||||||
putchar('\t');
|
|
||||||
}
|
|
||||||
|
|
||||||
first = 1;
|
|
||||||
for (stack = (struct assstack_entry *) item->val.data; stack; stack = stack->next) {
|
|
||||||
ttl = (char *)stack->key.data;
|
|
||||||
s = strchr(ttl, ' ');
|
|
||||||
*s++ = '\0';
|
|
||||||
type = s;
|
|
||||||
|
|
||||||
if (first)
|
|
||||||
first = 0;
|
|
||||||
else
|
|
||||||
printf("\t\t");
|
|
||||||
|
|
||||||
if (strcmp(defaultttl, ttl))
|
|
||||||
printf("%s", ttl);
|
|
||||||
putchar('\t');
|
|
||||||
|
|
||||||
if (top) {
|
|
||||||
top = 0;
|
|
||||||
printf("IN\t%s\t", type);
|
|
||||||
/* Should always be SOA here */
|
|
||||||
if (!strcmp(type, "SOA")) {
|
|
||||||
printsoa(&stack->val);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
} else
|
|
||||||
printf("%s\t", type);
|
|
||||||
|
|
||||||
s = (char *)stack->val.data;
|
|
||||||
for (i = 0; i < stack->val.len; i++)
|
|
||||||
putchar(s[i]);
|
|
||||||
putchar('\n');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void print_zone(char *defaultttl, struct assstack_entry *stack) {
|
|
||||||
printf("$TTL %s\n", defaultttl);
|
|
||||||
for (; stack; stack = stack->next)
|
|
||||||
printrrs(defaultttl, stack);
|
|
||||||
};
|
|
||||||
|
|
||||||
void usage(char *name) {
|
|
||||||
fprintf(stderr, "Usage:%s zone-name LDAP-URL default-ttl [serial]\n", name);
|
|
||||||
exit(1);
|
|
||||||
};
|
|
||||||
|
|
||||||
void err(char *name, const char *msg) {
|
|
||||||
fprintf(stderr, "%s: %s\n", name, msg);
|
|
||||||
exit(1);
|
|
||||||
};
|
|
||||||
|
|
||||||
int putrr(struct assstack_entry **stack, struct berval *name, char *type, char *ttl, struct berval *val) {
|
|
||||||
struct string key;
|
|
||||||
struct assstack_entry *rr, *rrdata;
|
|
||||||
|
|
||||||
/* Do nothing if name or value have 0 length */
|
|
||||||
if (!name->bv_len || !val->bv_len)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
/* see if already have an entry for this name */
|
|
||||||
key.len = name->bv_len;
|
|
||||||
key.data = name->bv_val;
|
|
||||||
|
|
||||||
rr = assstack_find(*stack, &key);
|
|
||||||
if (!rr) {
|
|
||||||
/* Not found, create and push new entry */
|
|
||||||
rr = (struct assstack_entry *) malloc(sizeof(struct assstack_entry));
|
|
||||||
if (!rr)
|
|
||||||
return -1;
|
|
||||||
rr->key.len = name->bv_len;
|
|
||||||
rr->key.data = (void *) malloc(rr->key.len);
|
|
||||||
if (!rr->key.data) {
|
|
||||||
free(rr);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
memcpy(rr->key.data, name->bv_val, name->bv_len);
|
|
||||||
rr->val.len = sizeof(void *);
|
|
||||||
rr->val.data = NULL;
|
|
||||||
if (name->bv_len == 1 && *(char *)name->bv_val == '@')
|
|
||||||
assstack_push(stack, rr);
|
|
||||||
else
|
|
||||||
assstack_insertbottom(stack, rr);
|
|
||||||
}
|
|
||||||
|
|
||||||
rrdata = (struct assstack_entry *) malloc(sizeof(struct assstack_entry));
|
|
||||||
if (!rrdata) {
|
|
||||||
free(rr->key.data);
|
|
||||||
free(rr);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
rrdata->key.len = strlen(type) + strlen(ttl) + 1;
|
|
||||||
rrdata->key.data = (void *) malloc(rrdata->key.len);
|
|
||||||
if (!rrdata->key.data) {
|
|
||||||
free(rrdata);
|
|
||||||
free(rr->key.data);
|
|
||||||
free(rr);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
sprintf((char *)rrdata->key.data, "%s %s", ttl, type);
|
|
||||||
|
|
||||||
rrdata->val.len = val->bv_len;
|
|
||||||
rrdata->val.data = (void *) malloc(val->bv_len);
|
|
||||||
if (!rrdata->val.data) {
|
|
||||||
free(rrdata->key.data);
|
|
||||||
free(rrdata);
|
|
||||||
free(rr->key.data);
|
|
||||||
free(rr);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
memcpy(rrdata->val.data, val->bv_val, val->bv_len);
|
|
||||||
|
|
||||||
if (!strcmp(type, "SOA"))
|
|
||||||
assstack_push((struct assstack_entry **) &(rr->val.data), rrdata);
|
|
||||||
else
|
|
||||||
assstack_insertbottom((struct assstack_entry **) &(rr->val.data), rrdata);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int main(int argc, char **argv) {
|
|
||||||
char *s, *hostporturl, *base = NULL;
|
|
||||||
char *ttl, *defaultttl;
|
|
||||||
LDAP *ld;
|
|
||||||
char *fltr = NULL;
|
|
||||||
LDAPMessage *res, *e;
|
|
||||||
char *a, **ttlvals, **soavals, *serial;
|
|
||||||
struct berval **vals, **names;
|
|
||||||
char type[64];
|
|
||||||
BerElement *ptr;
|
|
||||||
int i, j, rc, msgid;
|
|
||||||
struct assstack_entry *zone = NULL;
|
|
||||||
|
|
||||||
if (argc < 4 || argc > 5)
|
|
||||||
usage(argv[0]);
|
|
||||||
|
|
||||||
hostporturl = argv[2];
|
|
||||||
|
|
||||||
if (hostporturl != strstr( hostporturl, "ldap"))
|
|
||||||
err(argv[0], "Not an LDAP URL");
|
|
||||||
|
|
||||||
s = strchr(hostporturl, ':');
|
|
||||||
|
|
||||||
if (!s || strlen(s) < 3 || s[1] != '/' || s[2] != '/')
|
|
||||||
err(argv[0], "Not an LDAP URL");
|
|
||||||
|
|
||||||
s = strchr(s+3, '/');
|
|
||||||
if (s) {
|
|
||||||
*s++ = '\0';
|
|
||||||
base = s;
|
|
||||||
s = strchr(base, '?');
|
|
||||||
if (s)
|
|
||||||
err(argv[0], "LDAP URL can only contain host, port and base");
|
|
||||||
}
|
|
||||||
|
|
||||||
defaultttl = argv[3];
|
|
||||||
|
|
||||||
rc = ldap_initialize(&ld, hostporturl);
|
|
||||||
if (rc != LDAP_SUCCESS)
|
|
||||||
err(argv[0], "ldap_initialize() failed");
|
|
||||||
|
|
||||||
if (argc == 5) {
|
|
||||||
/* serial number specified, check if different from one in SOA */
|
|
||||||
fltr = (char *)malloc(strlen(argv[1]) + strlen("(&(relativeDomainName=@)(zoneName=))") + 1);
|
|
||||||
sprintf(fltr, "(&(relativeDomainName=@)(zoneName=%s))", argv[1]);
|
|
||||||
msgid = ldap_search(ld, base, LDAP_SCOPE_SUBTREE, fltr, NULL, 0);
|
|
||||||
if (msgid == -1)
|
|
||||||
err(argv[0], "ldap_search() failed");
|
|
||||||
|
|
||||||
while ((rc = ldap_result(ld, msgid, 0, NULL, &res)) != LDAP_RES_SEARCH_RESULT ) {
|
|
||||||
/* not supporting continuation references at present */
|
|
||||||
if (rc != LDAP_RES_SEARCH_ENTRY)
|
|
||||||
err(argv[0], "ldap_result() returned cont.ref? Exiting");
|
|
||||||
|
|
||||||
/* only one entry per result message */
|
|
||||||
e = ldap_first_entry(ld, res);
|
|
||||||
if (e == NULL) {
|
|
||||||
ldap_msgfree(res);
|
|
||||||
err(argv[0], "ldap_first_entry() failed");
|
|
||||||
}
|
|
||||||
|
|
||||||
soavals = ldap_get_values(ld, e, "SOARecord");
|
|
||||||
if (soavals)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
ldap_msgfree(res);
|
|
||||||
if (!soavals) {
|
|
||||||
err(argv[0], "No SOA Record found");
|
|
||||||
}
|
|
||||||
|
|
||||||
/* We have a SOA, compare serial numbers */
|
|
||||||
/* Only checkinf first value, should be only one */
|
|
||||||
s = strchr(soavals[0], ' ');
|
|
||||||
s++;
|
|
||||||
s = strchr(s, ' ');
|
|
||||||
s++;
|
|
||||||
serial = s;
|
|
||||||
s = strchr(s, ' ');
|
|
||||||
*s = '\0';
|
|
||||||
if (!strcmp(serial, argv[4])) {
|
|
||||||
ldap_value_free(soavals);
|
|
||||||
err(argv[0], "serial numbers match");
|
|
||||||
}
|
|
||||||
ldap_value_free(soavals);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!fltr)
|
|
||||||
fltr = (char *)malloc(strlen(argv[1]) + strlen("(zoneName=)") + 1);
|
|
||||||
if (!fltr)
|
|
||||||
err(argv[0], "Malloc failed");
|
|
||||||
sprintf(fltr, "(zoneName=%s)", argv[1]);
|
|
||||||
|
|
||||||
msgid = ldap_search(ld, base, LDAP_SCOPE_SUBTREE, fltr, NULL, 0);
|
|
||||||
if (msgid == -1)
|
|
||||||
err(argv[0], "ldap_search() failed");
|
|
||||||
|
|
||||||
while ((rc = ldap_result(ld, msgid, 0, NULL, &res)) != LDAP_RES_SEARCH_RESULT ) {
|
|
||||||
/* not supporting continuation references at present */
|
|
||||||
if (rc != LDAP_RES_SEARCH_ENTRY)
|
|
||||||
err(argv[0], "ldap_result() returned cont.ref? Exiting");
|
|
||||||
|
|
||||||
/* only one entry per result message */
|
|
||||||
e = ldap_first_entry(ld, res);
|
|
||||||
if (e == NULL) {
|
|
||||||
ldap_msgfree(res);
|
|
||||||
err(argv[0], "ldap_first_entry() failed");
|
|
||||||
}
|
|
||||||
|
|
||||||
names = ldap_get_values_len(ld, e, "relativeDomainName");
|
|
||||||
if (!names)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
ttlvals = ldap_get_values(ld, e, "dNSTTL");
|
|
||||||
ttl = ttlvals ? ttlvals[0] : defaultttl;
|
|
||||||
|
|
||||||
for (a = ldap_first_attribute(ld, e, &ptr); a != NULL; a = ldap_next_attribute(ld, e, ptr)) {
|
|
||||||
char *s;
|
|
||||||
|
|
||||||
for (s = a; *s; s++)
|
|
||||||
*s = toupper(*s);
|
|
||||||
s = strstr(a, "RECORD");
|
|
||||||
if ((s == NULL) || (s == a) || (s - a >= (signed int)sizeof(type))) {
|
|
||||||
ldap_memfree(a);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
strncpy(type, a, s - a);
|
|
||||||
type[s - a] = '\0';
|
|
||||||
vals = ldap_get_values_len(ld, e, a);
|
|
||||||
if (vals) {
|
|
||||||
for (i = 0; vals[i]; i++)
|
|
||||||
for (j = 0; names[j]; j++)
|
|
||||||
if (putrr(&zone, names[j], type, ttl, vals[i]))
|
|
||||||
err(argv[0], "malloc failed");
|
|
||||||
ldap_value_free_len(vals);
|
|
||||||
}
|
|
||||||
ldap_memfree(a);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ptr)
|
|
||||||
ber_free(ptr, 0);
|
|
||||||
if (ttlvals)
|
|
||||||
ldap_value_free(ttlvals);
|
|
||||||
ldap_value_free_len(names);
|
|
||||||
/* free this result */
|
|
||||||
ldap_msgfree(res);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* free final result */
|
|
||||||
ldap_msgfree(res);
|
|
||||||
|
|
||||||
print_zone(defaultttl, zone);
|
|
||||||
return 0;
|
|
||||||
}
|
|
@ -16,6 +16,8 @@
|
|||||||
/etc/named
|
/etc/named
|
||||||
/usr/lib64/bind
|
/usr/lib64/bind
|
||||||
/usr/lib/bind
|
/usr/lib/bind
|
||||||
|
/usr/lib64/named
|
||||||
|
/usr/lib/named
|
||||||
/usr/share/GeoIP
|
/usr/share/GeoIP
|
||||||
/run/named
|
/run/named
|
||||||
/proc/sys/net/ipv4/ip_local_port_range
|
/proc/sys/net/ipv4/ip_local_port_range
|
||||||
|
@ -1,12 +0,0 @@
|
|||||||
[Unit]
|
|
||||||
Description=Set-up/destroy chroot environment for named-sdb
|
|
||||||
BindsTo=named-sdb-chroot.service
|
|
||||||
Wants=named-setup-rndc.service
|
|
||||||
After=named-setup-rndc.service
|
|
||||||
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=oneshot
|
|
||||||
RemainAfterExit=yes
|
|
||||||
ExecStart=/usr/libexec/setup-named-chroot.sh /var/named/chroot_sdb on /etc/named-chroot.files
|
|
||||||
ExecStop=/usr/libexec/setup-named-chroot.sh /var/named/chroot_sdb off /etc/named-chroot.files
|
|
@ -1,30 +0,0 @@
|
|||||||
# Don't forget to add "$AddUnixListenSocket /var/named/chroot_sdb/dev/log"
|
|
||||||
# line to your /etc/rsyslog.conf file. Otherwise your logging becomes
|
|
||||||
# broken when rsyslogd daemon is restarted (due update, for example).
|
|
||||||
|
|
||||||
[Unit]
|
|
||||||
Description=Berkeley Internet Name Domain (DNS)
|
|
||||||
Wants=nss-lookup.target
|
|
||||||
Requires=named-sdb-chroot-setup.service
|
|
||||||
Before=nss-lookup.target
|
|
||||||
After=named-sdb-chroot-setup.service
|
|
||||||
After=network.target
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=forking
|
|
||||||
Environment=NAMEDCONF=/etc/named.conf
|
|
||||||
EnvironmentFile=-/etc/sysconfig/named
|
|
||||||
Environment=KRB5_KTNAME=/etc/named.keytab
|
|
||||||
PIDFile=/var/named/chroot_sdb/run/named/named.pid
|
|
||||||
|
|
||||||
ExecStartPre=/bin/bash -c 'if [ ! "$DISABLE_ZONE_CHECKING" == "yes" ]; then /usr/sbin/named-checkconf -t /var/named/chroot_sdb -z "$NAMEDCONF"; else echo "Checking of zone files is disabled"; fi'
|
|
||||||
ExecStart=/usr/sbin/named-sdb -u named -c ${NAMEDCONF} -t /var/named/chroot_sdb $OPTIONS
|
|
||||||
|
|
||||||
ExecReload=/bin/sh -c 'if /usr/sbin/rndc null > /dev/null 2>&1; then /usr/sbin/rndc reload; else /bin/kill -HUP $MAINPID; fi'
|
|
||||||
|
|
||||||
ExecStop=/bin/sh -c '/usr/sbin/rndc stop > /dev/null 2>&1 || /bin/kill -TERM $MAINPID'
|
|
||||||
|
|
||||||
PrivateTmp=false
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
@ -1 +0,0 @@
|
|||||||
.so man8/named.8.gz
|
|
@ -1,26 +0,0 @@
|
|||||||
[Unit]
|
|
||||||
Description=Berkeley Internet Name Domain (DNS)
|
|
||||||
Wants=nss-lookup.target
|
|
||||||
Wants=named-setup-rndc.service
|
|
||||||
Before=nss-lookup.target
|
|
||||||
After=named-setup-rndc.service
|
|
||||||
After=network.target
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=forking
|
|
||||||
Environment=NAMEDCONF=/etc/named.conf
|
|
||||||
EnvironmentFile=-/etc/sysconfig/named
|
|
||||||
Environment=KRB5_KTNAME=/etc/named.keytab
|
|
||||||
PIDFile=/run/named/named.pid
|
|
||||||
|
|
||||||
ExecStartPre=/bin/bash -c 'if [ ! "$DISABLE_ZONE_CHECKING" == "yes" ]; then /usr/sbin/named-checkconf -z "$NAMEDCONF"; else echo "Checking of zone files is disabled"; fi'
|
|
||||||
ExecStart=/usr/sbin/named-sdb -u named -c ${NAMEDCONF} $OPTIONS
|
|
||||||
|
|
||||||
ExecReload=/bin/sh -c 'if /usr/sbin/rndc null > /dev/null 2>&1; then /usr/sbin/rndc reload; else /bin/kill -HUP $MAINPID; fi'
|
|
||||||
|
|
||||||
ExecStop=/bin/sh -c '/usr/sbin/rndc stop > /dev/null 2>&1 || /bin/kill -TERM $MAINPID'
|
|
||||||
|
|
||||||
PrivateTmp=true
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
@ -30,10 +30,10 @@ options {
|
|||||||
*/
|
*/
|
||||||
recursion yes;
|
recursion yes;
|
||||||
|
|
||||||
dnssec-enable yes;
|
|
||||||
dnssec-validation yes;
|
dnssec-validation yes;
|
||||||
|
|
||||||
managed-keys-directory "/var/named/dynamic";
|
managed-keys-directory "/var/named/dynamic";
|
||||||
|
geoip-directory "/usr/share/GeoIP";
|
||||||
|
|
||||||
pid-file "/run/named/named.pid";
|
pid-file "/run/named/named.pid";
|
||||||
session-keyfile "/run/named/session.key";
|
session-keyfile "/run/named/session.key";
|
||||||
|
@ -63,10 +63,6 @@ options
|
|||||||
|
|
||||||
/* DNSSEC related options. See information about keys ("Trusted keys", bellow) */
|
/* DNSSEC related options. See information about keys ("Trusted keys", bellow) */
|
||||||
|
|
||||||
/* Enable serving of DNSSEC related data - enable on both authoritative
|
|
||||||
and recursive servers DNSSEC aware servers */
|
|
||||||
dnssec-enable yes;
|
|
||||||
|
|
||||||
/* Enable DNSSEC validation on recursive servers */
|
/* Enable DNSSEC validation on recursive servers */
|
||||||
dnssec-validation yes;
|
dnssec-validation yes;
|
||||||
|
|
||||||
@ -182,8 +178,8 @@ view "internal"
|
|||||||
|
|
||||||
key ddns_key
|
key ddns_key
|
||||||
{
|
{
|
||||||
algorithm hmac-md5;
|
algorithm hmac-sha256;
|
||||||
secret "use /usr/sbin/dnssec-keygen to generate TSIG keys";
|
secret "use /usr/sbin/ddns-confgen to generate TSIG keys";
|
||||||
};
|
};
|
||||||
|
|
||||||
view "external"
|
view "external"
|
||||||
@ -214,39 +210,34 @@ view "external"
|
|||||||
/* Trusted keys
|
/* Trusted keys
|
||||||
|
|
||||||
This statement contains DNSSEC keys. If you want DNSSEC aware resolver you
|
This statement contains DNSSEC keys. If you want DNSSEC aware resolver you
|
||||||
have to configure at least one trusted key.
|
should configure at least one trusted key.
|
||||||
|
|
||||||
Note that no key written below is valid. Especially root key because root zone
|
Note that no key written below is valid. Especially root key because root zone
|
||||||
is not signed yet.
|
is not signed yet.
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
trusted-keys {
|
trust-anchors {
|
||||||
// Root Key
|
// Root Key
|
||||||
"." 257 3 3 "BNY4wrWM1nCfJ+CXd0rVXyYmobt7sEEfK3clRbGaTwSJxrGkxJWoZu6I7PzJu/
|
. initial-key 257 3 8 "AwEAAaz/tAm8yTn4Mfeh5eyI96WSVexTBAvkMgJzkKTOiW1vkIbzxeF3
|
||||||
E9gx4UC1zGAHlXKdE4zYIpRhaBKnvcC2U9mZhkdUpd1Vso/HAdjNe8LmMlnzY3
|
+/4RgWOq7HrxRixHlFlExOLAJr5emLvN7SWXgnLh4+B5xQlNVz8Og8kv
|
||||||
zy2Xy4klWOADTPzSv9eamj8V18PHGjBLaVtYvk/ln5ZApjYghf+6fElrmLkdaz
|
ArMtNROxVQuCaSnIDdD5LKyWbRd2n9WGe2R8PzgCmr3EgVLrjyBxWezF
|
||||||
MQ2OCnACR817DF4BBa7UR/beDHyp5iWTXWSi6XmoJLbG9Scqc7l70KDqlvXR3M
|
0jLHwVN8efS3rCj/EWgvIWgb9tarpVUDK/b58Da+sqqls3eNbuv7pr+e
|
||||||
/lUUVRbkeg1IPJSidmK3ZyCllh4XSKbje/45SKucHgnwU5jefMtq66gKodQj+M
|
oZG+SrDK6nWeL3c6H5Apxz7LjVc1uTIdsIXxuOLYA4/ilBmSVIzuDWfd
|
||||||
iA21AfUVe7u99WzTLzY3qlxDhxYQQ20FQ97S+LKUTpQcq27R7AT3/V5hRQxScI
|
RUfhHdY6+cn8HFRm+2hM8AnXGXws9555KrUB5qihylGa8subX2Nn6UwN
|
||||||
Nqwcz4jYqZD2fQdgxbcDTClU0CRBdiieyLMNzXG3";
|
R1AkUTV74bU=";
|
||||||
|
|
||||||
// Key for forward zone
|
// Key for forward zone
|
||||||
example.com. 257 3 5 "AwEAAaxPMcR2x0HbQV4WeZB6oEDX+r0QM65KbhTjrW1ZaARmPhEZZe
|
example.com. static-key 257 3 8 "AwEAAZ0aqu1rJ6orJynrRfNpPmayJZoAx9Ic2/Rl9VQW
|
||||||
3Y9ifgEuq7vZ/zGZUdEGNWy+JZzus0lUptwgjGwhUS1558Hb4JKUbb
|
LMHyjxxem3VUSoNUIFXERQbj0A9Ogp0zDM9YIccKLRd6
|
||||||
OTcM8pwXlj0EiX3oDFVmjHO444gLkBO UKUf/mC7HvfwYH/Be22GnC
|
LmWiDCt7UJQxVdD+heb5Ec4qlqGmyX9MDabkvX2NvMws
|
||||||
lrinKJp1Og4ywzO9WglMk7jbfW33gUKvirTHr25GL7STQUzBb5Usxt
|
UecbYBq8oXeTT9LRmCUt9KUt/WOi6DKECxoG/bWTykrX
|
||||||
8lgnyTUHs1t3JwCY5hKZ6CqFxmAVZP20igTixin/1LcrgX/KMEGd/b
|
yBR8elD+SQY43OAVjlWrVltHxgp4/rhBCvRbmdflunaP
|
||||||
iuvF4qJCyduieHukuY3H4XMAcR+xia2 nIUPvm/oyWR8BW/hWdzOvn
|
Igu27eE2U4myDSLT8a4A0rB5uHG4PkOa9dIRs9y00M2m
|
||||||
SCThlHf3xiYleDbt/o1OTQ09A0=";
|
Wf4lyPee7vi5few2dbayHXmieGcaAHrx76NGAABeY393
|
||||||
|
xjlmDNcUkF1gpNWUla4fWZbbaYQzA93mLdrng+M=";
|
||||||
|
|
||||||
|
|
||||||
// Key for reverse zone.
|
// Key for reverse zone.
|
||||||
2.0.192.IN-ADDRPA.NET. 257 3 5 "AQOnS4xn/IgOUpBPJ3bogzwcxOdNax071L18QqZnQQQA
|
2.0.192.IN-ADDRPA.NET. initial-ds 31406 8 2 "F78CF3344F72137235098ECBBD08947C2C9001C7F6A085A17F518B5D8F6B916D";
|
||||||
VVr+iLhGTnNGp3HoWQLUIzKrJVZ3zggy3WwNT6kZo6c0
|
|
||||||
tszYqbtvchmgQC8CzKojM/W16i6MG/ea fGU3siaOdS0
|
|
||||||
yOI6BgPsw+YZdzlYMaIJGf4M4dyoKIhzdZyQ2bYQrjyQ
|
|
||||||
4LB0lC7aOnsMyYKHHYeRv PxjIQXmdqgOJGq+vsevG06
|
|
||||||
zW+1xgYJh9rCIfnm1GX/KMgxLPG2vXTD/RnLX+D3T3UL
|
|
||||||
7HJYHJhAZD5L59VvjSPsZJHeDCUyWYrvPZesZDIRvhDD
|
|
||||||
52SKvbheeTJUm6EhkzytNN2SN96QRk8j/iI8ib";
|
|
||||||
};
|
};
|
||||||
*/
|
*/
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
|
|
||||||
; <<>> DiG 9.18.20 <<>> -4 +tcp +norec +nostats @d.root-servers.net
|
; <<>> DiG 9.11.3-RedHat-9.11.3-3.fc27 <<>> +bufsize=1200 +norec @a.root-servers.net
|
||||||
; (1 server found)
|
; (2 servers found)
|
||||||
;; global options: +cmd
|
;; global options: +cmd
|
||||||
;; Got answer:
|
;; Got answer:
|
||||||
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 47286
|
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46900
|
||||||
;; flags: qr aa; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 27
|
;; flags: qr aa; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 27
|
||||||
|
|
||||||
;; OPT PSEUDOSECTION:
|
;; OPT PSEUDOSECTION:
|
||||||
; EDNS: version: 0, flags:; udp: 1450
|
; EDNS: version: 0, flags:; udp: 1472
|
||||||
;; QUESTION SECTION:
|
;; QUESTION SECTION:
|
||||||
;. IN NS
|
;. IN NS
|
||||||
|
|
||||||
@ -28,7 +28,7 @@
|
|||||||
|
|
||||||
;; ADDITIONAL SECTION:
|
;; ADDITIONAL SECTION:
|
||||||
a.root-servers.net. 518400 IN A 198.41.0.4
|
a.root-servers.net. 518400 IN A 198.41.0.4
|
||||||
b.root-servers.net. 518400 IN A 170.247.170.2
|
b.root-servers.net. 518400 IN A 199.9.14.201
|
||||||
c.root-servers.net. 518400 IN A 192.33.4.12
|
c.root-servers.net. 518400 IN A 192.33.4.12
|
||||||
d.root-servers.net. 518400 IN A 199.7.91.13
|
d.root-servers.net. 518400 IN A 199.7.91.13
|
||||||
e.root-servers.net. 518400 IN A 192.203.230.10
|
e.root-servers.net. 518400 IN A 192.203.230.10
|
||||||
@ -41,7 +41,7 @@ k.root-servers.net. 518400 IN A 193.0.14.129
|
|||||||
l.root-servers.net. 518400 IN A 199.7.83.42
|
l.root-servers.net. 518400 IN A 199.7.83.42
|
||||||
m.root-servers.net. 518400 IN A 202.12.27.33
|
m.root-servers.net. 518400 IN A 202.12.27.33
|
||||||
a.root-servers.net. 518400 IN AAAA 2001:503:ba3e::2:30
|
a.root-servers.net. 518400 IN AAAA 2001:503:ba3e::2:30
|
||||||
b.root-servers.net. 518400 IN AAAA 2801:1b8:10::b
|
b.root-servers.net. 518400 IN AAAA 2001:500:200::b
|
||||||
c.root-servers.net. 518400 IN AAAA 2001:500:2::c
|
c.root-servers.net. 518400 IN AAAA 2001:500:2::c
|
||||||
d.root-servers.net. 518400 IN AAAA 2001:500:2d::d
|
d.root-servers.net. 518400 IN AAAA 2001:500:2d::d
|
||||||
e.root-servers.net. 518400 IN AAAA 2001:500:a8::e
|
e.root-servers.net. 518400 IN AAAA 2001:500:a8::e
|
||||||
@ -54,3 +54,8 @@ k.root-servers.net. 518400 IN AAAA 2001:7fd::1
|
|||||||
l.root-servers.net. 518400 IN AAAA 2001:500:9f::42
|
l.root-servers.net. 518400 IN AAAA 2001:500:9f::42
|
||||||
m.root-servers.net. 518400 IN AAAA 2001:dc3::35
|
m.root-servers.net. 518400 IN AAAA 2001:dc3::35
|
||||||
|
|
||||||
|
;; Query time: 24 msec
|
||||||
|
;; SERVER: 198.41.0.4#53(198.41.0.4)
|
||||||
|
;; WHEN: Thu Apr 05 15:57:34 CEST 2018
|
||||||
|
;; MSG SIZE rcvd: 811
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
managed-keys {
|
trust-anchors {
|
||||||
# ROOT KEYS: See https://data.iana.org/root-anchors/root-anchors.xml
|
# ROOT KEYS: See https://data.iana.org/root-anchors/root-anchors.xml
|
||||||
# for current trust anchor information.
|
# for current trust anchor information.
|
||||||
#
|
#
|
||||||
@ -9,11 +9,5 @@ managed-keys {
|
|||||||
# file as initializing keys; thereafter, the keys in the
|
# file as initializing keys; thereafter, the keys in the
|
||||||
# managed key database will be trusted and maintained
|
# managed key database will be trusted and maintained
|
||||||
# automatically.
|
# automatically.
|
||||||
. initial-key 257 3 8 "AwEAAaz/tAm8yTn4Mfeh5eyI96WSVexTBAvkMgJzkKTOiW1vkIbzxeF3
|
. initial-ds 20326 8 2 "E06D44B80B8F1D39A95C0B0D7C65D08458E880409BBC683457104237C7F8EC8D";
|
||||||
+/4RgWOq7HrxRixHlFlExOLAJr5emLvN7SWXgnLh4+B5xQlNVz8Og8kv
|
|
||||||
ArMtNROxVQuCaSnIDdD5LKyWbRd2n9WGe2R8PzgCmr3EgVLrjyBxWezF
|
|
||||||
0jLHwVN8efS3rCj/EWgvIWgb9tarpVUDK/b58Da+sqqls3eNbuv7pr+e
|
|
||||||
oZG+SrDK6nWeL3c6H5Apxz7LjVc1uTIdsIXxuOLYA4/ilBmSVIzuDWfd
|
|
||||||
RUfhHdY6+cn8HFRm+2hM8AnXGXws9555KrUB5qihylGa8subX2Nn6UwN
|
|
||||||
R1AkUTV74bU=";
|
|
||||||
};
|
};
|
||||||
|
0
SOURCES/setup-named-chroot.sh
Normal file → Executable file
0
SOURCES/setup-named-chroot.sh
Normal file → Executable file
81
SOURCES/setup-named-softhsm.sh
Normal file → Executable file
81
SOURCES/setup-named-softhsm.sh
Normal file → Executable file
@ -2,6 +2,12 @@
|
|||||||
#
|
#
|
||||||
# This script will initialise token storage of softhsm PKCS11 provider
|
# This script will initialise token storage of softhsm PKCS11 provider
|
||||||
# in custom location. Is useful to store tokens in non-standard location.
|
# in custom location. Is useful to store tokens in non-standard location.
|
||||||
|
#
|
||||||
|
# Output can be evaluated from bash, it will prepare it for usage of temporary tokens.
|
||||||
|
# Quotes around eval are mandatory!
|
||||||
|
# Recommended use:
|
||||||
|
# eval "$(bash setup-named-softhsm.sh -A)"
|
||||||
|
#
|
||||||
|
|
||||||
SOFTHSM2_CONF="$1"
|
SOFTHSM2_CONF="$1"
|
||||||
TOKENPATH="$2"
|
TOKENPATH="$2"
|
||||||
@ -10,14 +16,55 @@ GROUPNAME="$3"
|
|||||||
# This is intended for crypto accelerators using PKCS11 interface.
|
# This is intended for crypto accelerators using PKCS11 interface.
|
||||||
# Uninitialized token would fail any crypto operation.
|
# Uninitialized token would fail any crypto operation.
|
||||||
PIN=1234
|
PIN=1234
|
||||||
|
SO_PIN=1234
|
||||||
|
LABEL=rpm
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
|
echo_i()
|
||||||
|
{
|
||||||
|
echo "#" $@
|
||||||
|
}
|
||||||
|
|
||||||
|
random()
|
||||||
|
{
|
||||||
|
if [ -x "$(which openssl 2>/dev/null)" ]; then
|
||||||
|
openssl rand -base64 $1
|
||||||
|
else
|
||||||
|
dd if=/dev/urandom bs=1c count=$1 | base64
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
usage()
|
||||||
|
{
|
||||||
|
echo "Usage: $0 -A [token directory] [group]"
|
||||||
|
echo " or: $0 <config file> <token directory> [group]"
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ "$SOFTHSM2_CONF" = "-A" -a -z "$TOKENPATH" ]; then
|
||||||
|
TOKENPATH=$(mktemp -d /var/tmp/softhsm-XXXXXX)
|
||||||
|
fi
|
||||||
|
|
||||||
if [ -z "$SOFTHSM2_CONF" -o -z "$TOKENPATH" ]; then
|
if [ -z "$SOFTHSM2_CONF" -o -z "$TOKENPATH" ]; then
|
||||||
echo "Usage: $0 <config file> <token directory> [group]" >&2
|
usage >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ "$SOFTHSM2_CONF" = "-A" ]; then
|
||||||
|
# Automagic mode instead
|
||||||
|
MODE=secure
|
||||||
|
SOFTHSM2_CONF="$TOKENPATH/softhsm2.conf"
|
||||||
|
PIN_SOURCE="$TOKENPATH/pin"
|
||||||
|
SOPIN_SOURCE="$TOKENPATH/so-pin"
|
||||||
|
TOKENPATH="$TOKENPATH/tokens"
|
||||||
|
else
|
||||||
|
MODE=legacy
|
||||||
|
fi
|
||||||
|
|
||||||
|
[ -d "$TOKENPATH" ] || mkdir -p "$TOKENPATH"
|
||||||
|
|
||||||
|
umask 0022
|
||||||
|
|
||||||
if ! [ -f "$SOFTHSM2_CONF" ]; then
|
if ! [ -f "$SOFTHSM2_CONF" ]; then
|
||||||
cat << SED > "$SOFTHSM2_CONF"
|
cat << SED > "$SOFTHSM2_CONF"
|
||||||
# SoftHSM v2 configuration file
|
# SoftHSM v2 configuration file
|
||||||
@ -32,19 +79,36 @@ log.level = ERROR
|
|||||||
slots.removable = false
|
slots.removable = false
|
||||||
SED
|
SED
|
||||||
else
|
else
|
||||||
echo "Config file $SOFTHSM2_CONF already exists" >&2
|
echo_i "Config file $SOFTHSM2_CONF already exists" >&2
|
||||||
fi
|
fi
|
||||||
|
|
||||||
[ -d "$TOKENPATH" ] || mkdir -p "$TOKENPATH"
|
if [ -n "$PIN_SOURCE" ]; then
|
||||||
|
touch "$PIN_SOURCE" "$SOPIN_SOURCE"
|
||||||
|
chmod 0600 "$PIN_SOURCE" "$SOPIN_SOURCE"
|
||||||
|
if [ -n "$GROUPNAME" ]; then
|
||||||
|
chgrp "$GROUPNAME" "$PIN_SOURCE" "$SOPIN_SOURCE"
|
||||||
|
chmod g+r "$PIN_SOURCE" "$SOPIN_SOURCE"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
export SOFTHSM2_CONF
|
export SOFTHSM2_CONF
|
||||||
|
|
||||||
if softhsm2-util --show-slots | grep 'Initialized:[[:space:]]*yes' > /dev/null
|
if softhsm2-util --show-slots | grep 'Initialized:[[:space:]]*yes' > /dev/null
|
||||||
then
|
then
|
||||||
echo "Token in ${TOKENPATH} is already initialized" >&2
|
echo_i "Token in ${TOKENPATH} is already initialized" >&2
|
||||||
|
|
||||||
|
[ -f "$PIN_SOURCE" ] && PIN=$(cat "$PIN_SOURCE")
|
||||||
|
[ -f "$SOPIN_SOURCE" ] && SO_PIN=$(cat "$SOPIN_SOURCE")
|
||||||
else
|
else
|
||||||
echo "Initializing tokens to ${TOKENPATH}..."
|
PIN=$(random 6)
|
||||||
softhsm2-util --init-token --free --label rpm --pin $PIN --so-pin $PIN
|
SO_PIN=$(random 18)
|
||||||
|
if [ -n "$PIN_SOURCE" ]; then
|
||||||
|
echo -n "$PIN" > "$PIN_SOURCE"
|
||||||
|
echo -n "$SO_PIN" > "$SOPIN_SOURCE"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo_i "Initializing tokens to ${TOKENPATH}..."
|
||||||
|
softhsm2-util --init-token --free --label "$LABEL" --pin "$PIN" --so-pin "$SO_PIN" | sed -e 's/^/# /'
|
||||||
|
|
||||||
if [ -n "$GROUPNAME" ]; then
|
if [ -n "$GROUPNAME" ]; then
|
||||||
chgrp -R -- "$GROUPNAME" "$TOKENPATH"
|
chgrp -R -- "$GROUPNAME" "$TOKENPATH"
|
||||||
@ -53,3 +117,8 @@ else
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
echo "export SOFTHSM2_CONF=\"$SOFTHSM2_CONF\""
|
echo "export SOFTHSM2_CONF=\"$SOFTHSM2_CONF\""
|
||||||
|
echo "export PIN_SOURCE=\"$PIN_SOURCE\""
|
||||||
|
echo "export SOPIN_SOURCE=\"$SOPIN_SOURCE\""
|
||||||
|
# These are intentionaly not exported
|
||||||
|
echo "PIN=\"$PIN\""
|
||||||
|
echo "SO_PIN=\"$SO_PIN\""
|
||||||
|
@ -1,53 +0,0 @@
|
|||||||
.\" Copyright (C) 2004, 2005, 2007-2009 Internet Systems Consortium, Inc. ("ISC")
|
|
||||||
.\" Copyright (C) 2000, 2001 Internet Software Consortium.
|
|
||||||
.\"
|
|
||||||
.\" Permission to use, copy, modify, and/or distribute this software for any
|
|
||||||
.\" purpose with or without fee is hereby granted, provided that the above
|
|
||||||
.\" copyright notice and this permission notice appear in all copies.
|
|
||||||
.\"
|
|
||||||
.\" THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
|
|
||||||
.\" REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
||||||
.\" AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
||||||
.\" INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
||||||
.\" LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
|
|
||||||
.\" OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
||||||
.\" PERFORMANCE OF THIS SOFTWARE.
|
|
||||||
.\"
|
|
||||||
.\" Manpage written by Jan Gorig
|
|
||||||
.TH zone2sqlite 1 "15 March 2010" "BIND9"
|
|
||||||
.SH NAME
|
|
||||||
zone2sqlite - Load BIND 9 zone file into SQLite database
|
|
||||||
.SH SYNOPSIS
|
|
||||||
.B zone2sqlite zone zonefile dbfile dbtable
|
|
||||||
.SH DESCRIPTION
|
|
||||||
zone2sqlite parses DNS zone file and creates database for use with SQLite BIND SDB driver.
|
|
||||||
|
|
||||||
\fBzone\fR
|
|
||||||
.RS 4
|
|
||||||
Zone origin, eg "mydomain.net."
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fBzonefile\fR
|
|
||||||
.RS 4
|
|
||||||
Master zone database file, eg. mydomain.net.zone
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fBdbfile\fR
|
|
||||||
.RS 4
|
|
||||||
Name of SQLite database file
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fBdbtable\fR
|
|
||||||
.RS 4
|
|
||||||
Name of table in database
|
|
||||||
.RE
|
|
||||||
|
|
||||||
.SH "EXIT STATUS"
|
|
||||||
Exits with 0 on success or 1 on failure.
|
|
||||||
.SH "SEE ALSO"
|
|
||||||
named(8)
|
|
||||||
.SH "COPYRIGHT"
|
|
||||||
Copyright \(co 2004, 2005, 2007\-2009 Internet Systems Consortium, Inc. ("ISC")
|
|
||||||
.br
|
|
||||||
Copyright \(co 2000, 2001 Internet Software Consortium.
|
|
||||||
.br
|
|
@ -1,53 +0,0 @@
|
|||||||
.\" Copyright (C) 2004, 2005, 2007-2009 Internet Systems Consortium, Inc. ("ISC")
|
|
||||||
.\" Copyright (C) 2000, 2001 Internet Software Consortium.
|
|
||||||
.\"
|
|
||||||
.\" Permission to use, copy, modify, and/or distribute this software for any
|
|
||||||
.\" purpose with or without fee is hereby granted, provided that the above
|
|
||||||
.\" copyright notice and this permission notice appear in all copies.
|
|
||||||
.\"
|
|
||||||
.\" THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
|
|
||||||
.\" REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
||||||
.\" AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
||||||
.\" INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
||||||
.\" LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
|
|
||||||
.\" OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
||||||
.\" PERFORMANCE OF THIS SOFTWARE.
|
|
||||||
.\"
|
|
||||||
.\" Manpage written by Jan Gorig
|
|
||||||
.TH zonetodb 1 "15 March 2010" "BIND9"
|
|
||||||
.SH NAME
|
|
||||||
zonetodb - Generate a PostgreSQL table from a zone.
|
|
||||||
.SH SYNOPSIS
|
|
||||||
.B zonetodb origin file dbname dbtable
|
|
||||||
.SH DESCRIPTION
|
|
||||||
zonetodb parses DNS zone file and creates table in selected database for use with PostgreSQL BIND SDB driver.
|
|
||||||
|
|
||||||
\fBzone\fR
|
|
||||||
.RS 4
|
|
||||||
Zone origin, eg "pgdb.net."
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fBfile\fR
|
|
||||||
.RS 4
|
|
||||||
Master zone database file, eg. pgdb.net.db
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fBdbname\fR
|
|
||||||
.RS 4
|
|
||||||
Name of PostgreSQL database (database must exist)
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fBdbtable\fR
|
|
||||||
.RS 4
|
|
||||||
Name of table in database
|
|
||||||
.RE
|
|
||||||
|
|
||||||
.SH "EXIT STATUS"
|
|
||||||
Exits with 0 on success or 1 on failure.
|
|
||||||
.SH "SEE ALSO"
|
|
||||||
named(8)
|
|
||||||
.SH "COPYRIGHT"
|
|
||||||
Copyright \(co 2004, 2005, 2007\-2009 Internet Systems Consortium, Inc. ("ISC")
|
|
||||||
.br
|
|
||||||
Copyright \(co 2000, 2001 Internet Software Consortium.
|
|
||||||
.br
|
|
1519
SPECS/bind.spec
1519
SPECS/bind.spec
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user