rmdir(2) behavior to prevent pax(1) from working
Hiroki Sato
hrs at allbsd.org
Mon Dec 27 07:09:25 PST 2004
Hi,
I notice that the current rmdir(2) implementation allows
rmdir(2) to remove a directory path whose final component is
either "." or ".." (such as /tmp/foo/bar/.).
This sounds no problem, but the pax(1) utility depends on this
behavior at least. Try the following commands:
% cd /tmp
% mkdir a b
% touch a/foo
% cd a
% pax -r -w . ../b
In this case pax(1) should go into a infinite loop.
The SUSv3 also says "If the path argument refers to a path
whose final component is either dot or dot-dot, rmdir() shall fail."
so I think it is better to be fixed.
Probably kern_rmdir() @ sys/kern/vfs_syscalls.c needs
some sort of sanity check for the trailing "." and "..",
but unfortunately I have no idea about a concrete solution because
I am not familiar with the new VFS/namecache API...
Could anyone investigate this problem?
--
| Hiroki SATO
Attachment:
pgp00006.pgp
-------------- next part --------------
A non-text attachment was scrubbed...
Name: pgp00006.pgp
Type: application/octet-stream
Size: 187 bytes
Desc: "Description: PGP signature"
URL: <http://lists.dragonflybsd.org/pipermail/kernel/attachments/20041227/dd54930e/attachment-0019.obj>
More information about the Kernel
mailing list