rm(1) bug, possibly serious

Oliver Fromme olli at lurza.secnetix.de
Tue Sep 25 08:14:14 PDT 2007


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

-- 
Oliver Fromme, secnetix GmbH & Co. KG, Marktplatz 29, 85567 Grafing b. M.
Handelsregister: Registergericht Muenchen, HRA 74606,  Geschäftsfuehrung:
secnetix Verwaltungsgesellsch. mbH, Handelsregister: Registergericht Mün-
chen, HRB 125758,  Geschäftsführer: Maik Bachmann, Olaf Erb, Ralf Gebhart

FreeBSD-Dienstleistungen, -Produkte und mehr:  http://www.secnetix.de/bsd

"The scanf() function is a large and complex beast that often does
something almost but not quite entirely unlike what you desired."
        -- Chris Torek


More information about the freebsd-stable mailing list