[Regression] Editting stale symlink removes symlink and creates file symlink points to
Pavel Roskin
proski at gnu.org
Sun Dec 8 00:59:38 UTC 2002
Hello!
> Max Derzhak <max /at/linux.zp.ua> reported new regression in mcedit. If
> you type F4 on stale symlink and press Esc-Esc or F10 after it (no
> editting at all) mcedit creates empty file symlink points to and removes
> original symlink.
The problem is not related to VFS, so I'll talk in terms on libc
functions.
stat() fails, the file is opened with O_CREAT, creating the link target.
If the file has not been modified, it's removed. open() resolves
symlinks, unlink() doesn't, hence the result.
I think that editing stale symlinks is insane. If stat() fails, then we
expect to create a new file. That's what O_EXCL is for. I'm applying a
patch that uses O_EXCL whenever stat() fails. Editing stale symlinks is
now impossible. I think it's reasonable.
I realize that O_EXCL may not be implemented in every VFS, but it's a
separate problem. Actually, direntry.c knows this flag, so only
filesystems with its own open() need to be changed.
--
Regards,
Pavel Roskin
More information about the mc-devel
mailing list