aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortoni <toni@hacktop.lan>2016-10-20 17:10:12 +0200
committertoni <toni@hacktop.lan>2016-10-20 17:10:12 +0200
commit311a7bd0a5ff05af235444670250b25b85e7ede9 (patch)
treeaab41f532f4a7e23459b02003b920e9faa2e977c
parent8fbadac6c72c461a639443ebade00372b8402402 (diff)
empty domain suffix marker
-rwxr-xr-xbuild/install-sh21
-rw-r--r--src/utils.c2
2 files changed, 16 insertions, 7 deletions
diff --git a/build/install-sh b/build/install-sh
index 377bb86..756420d 100755
--- a/build/install-sh
+++ b/build/install-sh
@@ -345,34 +345,41 @@ do
# is incompatible with FreeBSD 'install' when (umask & 300) != 0.
;;
*)
+ # $RANDOM is not portable (e.g. dash); use it when possible to
+ # lower collision chance
tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
- trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
+ trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0
+ # As "mkdir -p" follows symlinks and we work in /tmp possibly; so
+ # create the $tmpdir first (and fail if unsuccessful) to make sure
+ # that nobody tries to guess the $tmpdir name.
if (umask $mkdir_umask &&
- exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
+ $mkdirprog $mkdir_mode "$tmpdir" &&
+ exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1
then
if test -z "$dir_arg" || {
# Check for POSIX incompatibilities with -m.
# HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
# other-writable bit of parent directory when it shouldn't.
# FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
- ls_ld_tmpdir=`ls -ld "$tmpdir"`
+ test_tmpdir="$tmpdir/a"
+ ls_ld_tmpdir=`ls -ld "$test_tmpdir"`
case $ls_ld_tmpdir in
d????-?r-*) different_mode=700;;
d????-?--*) different_mode=755;;
*) false;;
esac &&
- $mkdirprog -m$different_mode -p -- "$tmpdir" && {
- ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
+ $mkdirprog -m$different_mode -p -- "$test_tmpdir" && {
+ ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"`
test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
}
}
then posix_mkdir=:
fi
- rmdir "$tmpdir/d" "$tmpdir"
+ rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir"
else
# Remove any dirs left behind by ancient mkdir implementations.
- rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
+ rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null
fi
trap '' 0;;
esac;;
diff --git a/src/utils.c b/src/utils.c
index b7e421d..ada8528 100644
--- a/src/utils.c
+++ b/src/utils.c
@@ -82,6 +82,8 @@ utGetDomainInfo(char **szDefDomain, char **szDefServer)
return 1;
*szDefDomain = calloc(257, sizeof(char));
memcpy(*szDefDomain, _res.defdname, 256);
+ if (strnlen(*szDefDomain, 256) == 0)
+ *szDefDomain[0] = '-';
*szDefServer = calloc(IFNAMSIZ, sizeof(char));
memcpy(*szDefServer, inet_ntoa(_res.nsaddr_list[0].sin_addr), IFNAMSIZ-1);
res_close();