GNU bug report logs - #62607
cp --recursive --backup broken in 9.2

Previous Next

Package: coreutils;

Reported by: Kristian Klausen <kristian <at> klausen.dk>

Date: Sun, 2 Apr 2023 04:48:03 UTC

Severity: normal

Done: Pádraig Brady <P <at> draigBrady.com>

Bug is archived. No further changes may be made.

Full log


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

From: Pádraig Brady <P <at> draigBrady.com>
To: Kristian Klausen <kristian <at> klausen.dk>, 62607 <at> debbugs.gnu.org
Cc: bug-gnulib <bug-gnulib <at> gnu.org>
Subject: Re: bug#62607: cp --recursive --backup broken in 9.2
Date: Mon, 3 Apr 2023 18:19:44 +0100
[Message part 1 (text/plain, inline)]
On 02/04/2023 13:40, Pádraig Brady wrote:
> On 01/04/2023 23:40, Kristian Klausen via GNU coreutils Bug Reports wrote:
>> Hi
>>
>> After upgrading to coreutils 9.2-2 on Arch Linux the following:
>> mkdir -p src dst
>> touch {src,dst}/bar
>> cp --recursive --backup src/* dst
>> fails with:
>> cp: cannot create regular file 'dst/foo/bar': File exists
>>
>> Running strace on cp I noticed:
>> renameat2(4, "foo/bar", 4, "foo/bar~", 0) = -1 ENOENT (No such file or
>> directory)
>>
>> In coreutils 9.1-3 the syscall succeeds:
>> renameat2(4, "bar", 4, "bar~", 0)       = 0
>>
>> I assume renameat2 is called with the wrong oldpath and newpath in 9.2
>> and that it should just be the basename and not the full relative path.
>>
>> Cheers
>> Kristian Klausen
> 
> Your analysis is correct wrt the wrong paths being given to the renameat2().
> This is related to https://bugs.gnu.org/55029
> 
> For completeness the correct repro is:
> 
>     mkdir -p {src,dst}/foo
>     touch {src,dst}/foo/bar
>     cp --recursive --backup src/* dst

The attached two patches should address this.
The first fixes the bug in gnulib (cc'd),
while the second adds a test to coreutils.

thanks,
Pádraig
[gnulib-backupfile-62607.patch (text/x-patch, attachment)]
[coreutils-backup-62607.patch (text/x-patch, attachment)]

This bug report was last modified 2 years and 112 days ago.

Previous Next


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