* syscalls.cc (rename): Fix setting errno in case of trailing "/."

This commit is contained in:
Corinna Vinschen 2008-03-27 13:02:07 +00:00
parent e21ac1ebdb
commit 124d4c5010
2 changed files with 13 additions and 3 deletions

View File

@ -1,3 +1,7 @@
2008-03-27 Corinna Vinschen <corinna@vinschen.de>
* syscalls.cc (rename): Fix setting errno in case of trailing "/."
2008-03-27 Corinna Vinschen <corinna@vinschen.de>
* fhandler_socket.cc: Create shared objects session local throughout.

View File

@ -1497,10 +1497,16 @@ rename (const char *oldpath, const char *newpath)
if (efault.faulted (EFAULT))
return -1;
if (has_dot_last_component (oldpath, true)
|| has_dot_last_component (newpath, true))
if (has_dot_last_component (oldpath, true))
{
set_errno (EINVAL);
oldpc.check (oldpath, PC_SYM_NOFOLLOW, stat_suffixes);
set_errno (oldpc.isdir () ? EBUSY : ENOTDIR);
goto out;
}
if (has_dot_last_component (newpath, true))
{
newpc.check (newpath, PC_SYM_NOFOLLOW, stat_suffixes);
set_errno (!newpc.exists () ? ENOENT : newpc.isdir () ? EBUSY : ENOTDIR);
goto out;
}