Package: fakeroot
Version: 1.30.1-1.1
Severity: grave
Control: affects -1 + mmdebstrap

Hi,

since glibc 2.34 and coreutils 9.1, fakeroot fails to preserve ownership
information when running "cp -a" on a file owned by a user other than
root. On armel, armhf and i386 (our 32 bit arches), you can reproduce
this problem by running inside fakeroot:

$ touch foo
$ chown 0:42 foo
$ ls -lha foo
$ cp -a foo bar
$ ls -lha bar"

which will print this:

-rw-r--r-- 1 root shadow 0 Feb  5 23:00 foo
-rw-r--r-- 1 root root 0 Feb  5 23:00 bar

I submitted an improvement to the `cp-a` test which adds a check for the
ownership information in addition to the mode checks as a merge request
for that test here:

https://salsa.debian.org/clint/fakeroot/-/merge_requests/19

Observe how the salsaci pipeline succeds for amd64 but fails on i386.
The reason is that on i386, fakeroot will not retain the ownership
information.

A quick comparison of the strace output on arm64 (which does not have
this problem) and armhf (which does have this problem) shows that arm64
calls fchown() while armhf calls fchown32() which is not wrapped by
fakeroot. Maybe that is the problem?

This breaks my package mmdebstrap in a similar way as #1023286 did.

Since I think that `cp -a` functionality is quite essential, I'm making
this bug RC. Feel free to adjust accordingly.

Thanks!

cheers, josch

Reply via email to