Re: rm(1) bug, possibly serious



On 9/25/07, Oliver Fromme <olli@xxxxxxxxxxxxxxxxx> wrote:
Hi,

Today I noticed the following behaviour on a 6-stable
machine:

$ cd /tmp
$ mkdir -p foo/var
$ cd foo/bar
$ rm -rf ../
rm: ../: Invalid argument
$ rm -rf ../
$

Note that the command "rm -rf ../" was entered twice.
The first time I got an error message (and exit code 1),
the second time it apparently succeeded. The very same
command.

Further investigation:

$ cd /tmp
$ mkdir -p foo/var
$ cd foo/bar
$ rm -rf ../
rm: ../: Invalid argument
$ ls -al ..
ls: ..: No such file or directory
$ ls /tmp/foo/bar
ls: /tmp/foo/bar: No such file or directory

That means: Even though "rm -rf ../" prints an error
message, indicating that the argument is invalid, it
*DOES* remove the contents of the parent directory!

To add further confusion, another "rm -rf ../" does
not print an error message and seemingly succeeds,
even though ".." does not exist anymore in the current
directory (which has been removed).

Shall I file a PR? Or is rm working correctly, and
my assumptions are wrong?

Best regards
Oliver

Confirmed on CURRENT as well. Note that if you run rf -rf .. as the
first command, the command does fail with 'rm: "." and ".." may not be
removed'. Adding a / at the end does seem to get around this check.

- Max
_______________________________________________
freebsd-stable@xxxxxxxxxxx mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-stable
To unsubscribe, send any mail to "freebsd-stable-unsubscribe@xxxxxxxxxxx"



Relevant Pages