summaryrefslogtreecommitdiff
path: root/tests/ln
diff options
context:
space:
mode:
authorJim Meyering <meyering@fb.com>2014-03-13 17:05:04 -0700
committerJim Meyering <meyering@fb.com>2014-03-13 20:05:10 -0700
commit0093ac8d57a0f1a16fd09d98f6a524dddb6053e7 (patch)
treebe5995a36e912c3881b1651c1e1a420142129560 /tests/ln
parent4f211822dddd1777dc915f2df4e2ed3b65c68301 (diff)
downloadcoreutils-0093ac8d57a0f1a16fd09d98f6a524dddb6053e7.tar.xz
ln: with -sr, don't segfault for a TARGET of ''
Prior to this change, "ln -sr '' F" would segfault, attempting to read path2[1] in relpath.c's path_common_prefix function. This problem arises whenever canonicalize_filename_mode returns NULL. * src/ln.c (convert_abs_rel): Call relpath only when both canonicalize_filename_mode calls return non-NULL. * tests/ln/relative.sh: Add a test to trigger this failure. * THANKS.in: List reporter's name/address. * NEWS (Bug fixes): Mention it. Reported by Erik Bernstein in 739752@bugs.debian.org. Fixes http://bugs.gnu.org/17010.
Diffstat (limited to 'tests/ln')
-rwxr-xr-xtests/ln/relative.sh5
1 files changed, 5 insertions, 0 deletions
diff --git a/tests/ln/relative.sh b/tests/ln/relative.sh
index 7636695ce..5cf280a58 100755
--- a/tests/ln/relative.sh
+++ b/tests/ln/relative.sh
@@ -45,4 +45,9 @@ mkdir web
ln -sr latest web/latest
test $(readlink web/latest) = '../release2' || fail=1
+# Expect this to fail with exit status 1, or to succeed quietly (freebsd).
+# Prior to coreutils-8.23, it would segfault.
+ln -sr '' F
+case $? in [01]) ;; *) fail=1;; esac
+
Exit $fail