aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPedro F. Giffuni <pfg@FreeBSD.org>2016-02-28 20:13:25 +0000
committerPedro F. Giffuni <pfg@FreeBSD.org>2016-02-28 20:13:25 +0000
commit6baa733ddfdda38f924d4540ca4d2391a4bc3a14 (patch)
treece9afbfc811c909d0132d72c0cff0874151cf187
parent4ad8676058916450a892eb247dcd43250a9c94fd (diff)
downloadsrc-6baa733ddfdda38f924d4540ca4d2391a4bc3a14.tar.gz
src-6baa733ddfdda38f924d4540ca4d2391a4bc3a14.zip
Import openresolv 3.7.3vendor/openresolv/3.7.3
Notes
Notes: svn path=/vendor/openresolv/dist/; revision=296164 svn path=/vendor/openresolv/3.7.3/; revision=296166; tag=vendor/openresolv/3.7.3
-rw-r--r--Makefile2
-rw-r--r--resolvconf.conf.5.in9
-rw-r--r--resolvconf.in28
3 files changed, 31 insertions, 8 deletions
diff --git a/Makefile b/Makefile
index a898b95e6b51..3171a032c2f7 100644
--- a/Makefile
+++ b/Makefile
@@ -1,5 +1,5 @@
PKG= openresolv
-VERSION= 3.7.1
+VERSION= 3.7.3
# Nasty hack so that make clean works without configure being run
_CONFIG_MK!= test -e config.mk && echo config.mk || echo config-null.mk
diff --git a/resolvconf.conf.5.in b/resolvconf.conf.5.in
index 7aa14507f4e8..ddf0558e91a7 100644
--- a/resolvconf.conf.5.in
+++ b/resolvconf.conf.5.in
@@ -1,4 +1,4 @@
-.\" Copyright (c) 2009-2015 Roy Marples
+.\" Copyright (c) 2009-2016 Roy Marples
.\" All rights reserved
.\"
.\" Redistribution and use in source and binary forms, with or without
@@ -22,7 +22,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.Dd May 14, 2015
+.Dd February 21, 2016
.Dt RESOLVCONF.CONF 5
.Os
.Sh NAME
@@ -42,8 +42,11 @@ must contain valid shell commands.
Listed below are the standard
.Nm
variables that may be set.
-If the values contain white space for special shell characters,
+If the values contain whitespace, wildcards or other special shell characters,
ensure they are quoted and escaped correctly.
+See the
+.Sy replace
+variable for an example on quoting.
.Pp
After updating this file, you may wish to run
.Nm resolvconf -u
diff --git a/resolvconf.in b/resolvconf.in
index a946ed8c44b5..829321e16e8f 100644
--- a/resolvconf.in
+++ b/resolvconf.in
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright (c) 2007-2015 Roy Marples
+# Copyright (c) 2007-2016 Roy Marples
# All rights reserved
# Redistribution and use in source and binary forms, with or without
@@ -55,6 +55,7 @@ METRICDIR="$VARDIR/metrics"
PRIVATEDIR="$VARDIR/private"
EXCLUSIVEDIR="$VARDIR/exclusive"
LOCKDIR="$VARDIR/lock"
+_PWD="$PWD"
warn()
{
@@ -119,6 +120,21 @@ echo_resolv()
IFS="$OIFS"
}
+# Strip any trailing dot from each name as a FQDN does not belong
+# in resolv.conf(5)
+# If you think otherwise, capture a DNS trace and you'll see libc
+# will strip it regardless.
+# This also solves setting up duplicate zones in our subscribers.
+strip_trailing_dots()
+{
+ local n=
+
+ for n; do
+ printf "%s" "${n%.}"
+ done
+ printf "\n"
+}
+
# Parse resolv.conf's and make variables
# for domain name servers, search name servers and global nameservers
parse_resolv()
@@ -162,14 +178,14 @@ parse_resolv()
$islocal || ns="$ns${line#* } "
;;
"domain "*)
+ search="$(strip_trailing_dots ${line#* })"
if [ -z "$domain" ]; then
- domain="${line#* }"
+ domain="$search"
echo "DOMAIN=\"$domain\""
fi
- search="${line#* }"
;;
"search "*)
- search="${line#* }"
+ search="$(strip_trailing_dots ${line#* })"
;;
*)
[ -n "$line" ] && continue
@@ -752,6 +768,10 @@ eval "$(make_vars)"
export RESOLVCONF DOMAINS SEARCH NAMESERVERS LOCALNAMESERVERS
: ${list_resolv:=list_resolv -l}
retval=0
+
+# Run scripts in the same directory resolvconf is run from
+# in case any scripts accidently dump files in the wrong place.
+cd "$_PWD"
for script in "$LIBEXECDIR"/*; do
if [ -f "$script" ]; then
eval script_enabled="\$${script##*/}"