From d02e4e77753f580ab91afc5915333222edc82104 Mon Sep 17 00:00:00 2001 From: Jim Meyering Date: Thu, 23 Aug 2007 11:51:01 +0200 Subject: Don't let ln be a party to destroying user data. * src/ln.c: Include "file-set.h", "hash.h" and "hash-triple.h". (dest_set, DEST_INFO_INITIAL_CAPACITY): New globals. (do_link): Refuse to remove a just-created link. Record a name,dev,ino triple for each link we create. (main): Initialize dest_set, if needed. * tests/mv/childproof: Test for the above fix. * NEWS: Document this. Reported by Eric Blake. Signed-off-by: Jim Meyering --- tests/mv/childproof | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) (limited to 'tests') diff --git a/tests/mv/childproof b/tests/mv/childproof index 092afc81f..e35afb6b4 100755 --- a/tests/mv/childproof +++ b/tests/mv/childproof @@ -1,8 +1,9 @@ #!/bin/sh -# Ensure that cp/mv don't clobber a just-copied file. -# With fileutils-4.1 and earlier, this test would fail. +# Ensure that cp/mv/ln don't clobber a just-copied/moved/linked file. +# With fileutils-4.1 and earlier, this test would fail for cp and mv. +# With coreutils-6.9 and earlier, this test would fail for ln. -# Copyright (C) 2001, 2004, 2006 Free Software Foundation, Inc. +# Copyright (C) 2001, 2004, 2006-2007 Free Software Foundation, Inc. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -21,6 +22,7 @@ if test "$VERBOSE" = yes; then set -x cp --version mv --version + ln --version fi . $srcdir/../envvar-check @@ -87,4 +89,15 @@ test -f b/g && fail=1 # b/g should have been moved test -f c/f || fail=1 test -f c/g || fail=1 +# Test ln -f. + +rm -f a/f b/f c/f +echo a > a/f || fail=1 +echo b > b/f || fail=1 +ln -f a/f b/f c 2> /dev/null && fail=1 +# a/f and c/f must be linked +test `stat --format %i a/f` = `stat --format %i c/f` || fail=1 +# b/f and c/f must not be linked +test `stat --format %i b/f` = `stat --format %i c/f` && fail=1 + (exit $fail); exit $fail -- cgit v1.2.3-54-g00ecf