summaryrefslogtreecommitdiff
path: root/security
diff options
context:
space:
mode:
authorhe <he@pkgsrc.org>2014-10-31 16:32:39 +0000
committerhe <he@pkgsrc.org>2014-10-31 16:32:39 +0000
commit084ec241838637969230eec288bf53fb32839d7f (patch)
tree0cb1d6e2466d16be83548cd75d223a02f616b880 /security
parentf8c7da90513f2196bd9a11fce8f93efb64a7ef72 (diff)
downloadpkgsrc-084ec241838637969230eec288bf53fb32839d7f.tar.gz
Fix a bug related to restoring various data from .xfrd-state files:
there's no need to byte-swap values read from a local file. This would cause some IXFRs to mysteriously and consistently fail until manual intervention is done, because the wrong (byte-swapped) SOA serial# was being stuffed into the IXFR requests. Ref. https://issues.opendnssec.org/browse/SUPPORT-147. Also fix the rc.d script to not insist that the components must be running to allow "stop" to proceed, so that "restart" or "stop" can be done if one or both of the processes have exited or crashed. Bump PKGREVISION.
Diffstat (limited to 'security')
-rw-r--r--security/opendnssec/Makefile4
-rw-r--r--security/opendnssec/distinfo3
-rwxr-xr-xsecurity/opendnssec/files/opendnssec.sh7
-rw-r--r--security/opendnssec/patches/patch-signer_src_wire_xfrd.c27
4 files changed, 34 insertions, 7 deletions
diff --git a/security/opendnssec/Makefile b/security/opendnssec/Makefile
index 834a1c3ac74..97a06c970bb 100644
--- a/security/opendnssec/Makefile
+++ b/security/opendnssec/Makefile
@@ -1,8 +1,8 @@
-# $NetBSD: Makefile,v 1.46 2014/10/28 13:26:37 he Exp $
+# $NetBSD: Makefile,v 1.47 2014/10/31 16:32:39 he Exp $
#
DISTNAME= opendnssec-1.4.6
-PKGREVISION= 2
+PKGREVISION= 3
CATEGORIES= security net
MASTER_SITES= http://www.opendnssec.org/files/source/
diff --git a/security/opendnssec/distinfo b/security/opendnssec/distinfo
index 44f29f51e51..addd7149866 100644
--- a/security/opendnssec/distinfo
+++ b/security/opendnssec/distinfo
@@ -1,4 +1,4 @@
-$NetBSD: distinfo,v 1.26 2014/09/27 19:41:06 pettai Exp $
+$NetBSD: distinfo,v 1.27 2014/10/31 16:32:39 he Exp $
SHA1 (opendnssec-1.4.6.tar.gz) = 2318b31546d0d4118cd03b9591ba76d259e1b0b0
RMD160 (opendnssec-1.4.6.tar.gz) = a7c3bbfa42edd64fffbb0680db6f9c372ded2c85
@@ -6,3 +6,4 @@ Size (opendnssec-1.4.6.tar.gz) = 1014314 bytes
SHA1 (patch-aa) = 104e077af6c368cbb5fc3034d58b2f2249fcf991
SHA1 (patch-enforcer_utils_Makefile.am) = bee7cb4f3cfe5aae96c5726a115eb8b6587288dd
SHA1 (patch-enforcer_utils_Makefile.in) = da9fce97e631bb81607851f9758b206ea975b052
+SHA1 (patch-signer_src_wire_xfrd.c) = 2158991c46ac415d187c45b654d548a459547693
diff --git a/security/opendnssec/files/opendnssec.sh b/security/opendnssec/files/opendnssec.sh
index 369aab00b07..81e6b976547 100755
--- a/security/opendnssec/files/opendnssec.sh
+++ b/security/opendnssec/files/opendnssec.sh
@@ -1,6 +1,6 @@
#!/bin/sh
#
-# $NetBSD: opendnssec.sh,v 1.1 2014/10/28 13:26:37 he Exp $
+# $NetBSD: opendnssec.sh,v 1.2 2014/10/31 16:32:39 he Exp $
#
# PROVIDE: opendnssec
@@ -85,9 +85,8 @@ ods_stop () {
echo 1>&2 "$signer not running (no $signerd_pidfile file)"
rv=$(($rv + 1))
fi
- if [ $rv != 0 ]; then
- exit $rv
- fi
+
+# Ignore warnings, so that we can stop or restart if one component has crashed
$ods_control stop
diff --git a/security/opendnssec/patches/patch-signer_src_wire_xfrd.c b/security/opendnssec/patches/patch-signer_src_wire_xfrd.c
new file mode 100644
index 00000000000..c5e3569f812
--- /dev/null
+++ b/security/opendnssec/patches/patch-signer_src_wire_xfrd.c
@@ -0,0 +1,27 @@
+$NetBSD: patch-signer_src_wire_xfrd.c,v 1.1 2014/10/31 16:32:39 he Exp $
+
+There's no need for htonl() on values restored from a local file.
+This causes IXFRs to fail, because the wrong SOA version number
+is being stuffed into the IXFR requests(!)
+
+--- signer/src/wire/xfrd.c.orig 2014-07-21 09:30:09.000000000 +0000
++++ signer/src/wire/xfrd.c
+@@ -265,12 +265,12 @@ xfrd_recover(xfrd_type* xfrd)
+ xfrd->timeout.tv_sec = timeout;
+ xfrd->timeout.tv_nsec = 0;
+ xfrd->master = NULL; /* acl_find_num(...) */
+- xfrd->soa.ttl = htonl(soa_ttl);
+- xfrd->soa.serial = htonl(soa_serial);
+- xfrd->soa.refresh = htonl(soa_refresh);
+- xfrd->soa.retry = htonl(soa_retry);
+- xfrd->soa.expire = htonl(soa_expire);
+- xfrd->soa.minimum = htonl(soa_minimum);
++ xfrd->soa.ttl = soa_ttl;
++ xfrd->soa.serial = soa_serial;
++ xfrd->soa.refresh = soa_refresh;
++ xfrd->soa.retry = soa_retry;
++ xfrd->soa.expire = soa_expire;
++ xfrd->soa.minimum = soa_minimum;
+ xfrd->soa.mname[0] = xfrd_recover_dname(xfrd->soa.mname+1,
+ soa_mname);
+ xfrd->soa.rname[0] = xfrd_recover_dname(xfrd->soa.rname+1,