GNU bug report logs - #25342
ln: avoid race condition with "ln -f src dst"

Previous Next

Package: coreutils;

Reported by: Mirsad Goran Todorovac <mtodorov3_69 <at> yahoo.com>

Date: Mon, 2 Jan 2017 23:12:01 UTC

Severity: wishlist

Full log


Message #23 received at 25342 <at> debbugs.gnu.org (full text, mbox):

From: Mirsad Goran Todorovac <mtodorov3_69 <at> yahoo.com>
To: Paul Eggert <eggert <at> cs.ucla.edu>, 
 "25342 <at> debbugs.gnu.org" <25342 <at> debbugs.gnu.org>
Subject: Re: bug#25342: GNU coreutils: race condition in "ln -f source dest"
Date: Thu, 5 Jan 2017 08:50:54 +0000 (UTC)
[Message part 1 (text/plain, inline)]
Pity, 'cause it works for me with a small workaround:link("copy2", "copy2~")                 = 0
getpid()                                = 3085
linkat(AT_FDCWD, "copy", AT_FDCWD, "copy.003085.bak", 0) = 0
renameat(AT_FDCWD, "copy.003085.bak", AT_FDCWD, "copy2") = 0
I did not exactly understand? What else can be moved, if not two hard links?Directory entry can be one of pointer to inode (file, directory or less likely something else), or pointer to another directory entry (symbolic link), ain't that right?
Can you please provide me with a reference of such behavior of renameat()? I realized just now that you want to make your code universal and protable.On Ubuntu Linux it works for me.
marvin <at> marvin-desktop:~$ uname -a
Linux marvin-desktop 3.5.0-34-generic #55-Ubuntu SMP Thu Jun 6 20:20:19 UTC 2013 i686 athlon i686 GNU/Linux
marvin <at> marvin-desktop:~$ dpkg -l | egrep 'libc6'
ii  libc6:i386                                 2.23-0ubuntu5                                 i386         GNU C 

If you can provide me with a reference, I'll try to understand renameat() problem.
Best of luck in New Year,M.T.

 

    On Thursday, January 5, 2017 8:57 AM, Paul Eggert <eggert <at> cs.ucla.edu> wrote:
 

 Mirsad Goran Todorovac wrote:
> Please consider the trace below.

As I don't know what you're tracing, I don't know what to consider.

But really, the basic idea is simple: renameat mishandles the case where old and 
new names are already hard links, and any code based on renameat needs to work 
around this problem. (We can't easily change renameat's behavior, as the 
behavior is required by POSIX.)


   
[Message part 2 (text/html, inline)]

This bug report was last modified 6 years and 234 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.