Package: fakeroot Version: 1.29-1 Severity: important Control: affects -1 + mmdebstrap
Hi, glibc 2.34 introduced several new functions on 32 bit arches which are used by coreutils since 9.1 which was built with glibc 2.34. Since these new functions are not wrapped by fakeroot, ownership information will be wrong on 32 bit arches like i386 or armhf. To show what should happen, lets run this on amd64: mmdebstrap --arch=amd64 --include=fakeroot,adduser --variant=apt \ --customize-hook='chroot "$1" adduser --gecos user --disabled-password user' \ --customize-hook='chroot "$1" runuser -u user -- /bin/bash' \ unstable /dev/null [...] user@hoothoot:/$ whoami user user@hoothoot:/$ fakeroot /bin/bash root@hoothoot:/# whoami root root@hoothoot:/# cd /tmp/ root@hoothoot:/tmp# echo foo > bar root@hoothoot:/tmp# echo baz > blub root@hoothoot:/tmp# chown --reference=/tmp/bar blub root@hoothoot:/tmp# ls -lha bar blub -rw-r--r-- 1 root root 4 Nov 1 18:39 bar -rw-r--r-- 1 root root 4 Nov 1 18:39 blub Success! Both files are owned by the (fake) root user. And now lets run it on i386: $ mmdebstrap --arch=i386 --include=fakeroot,adduser --variant=apt \ --customize-hook='chroot "$1" adduser --gecos user --disabled-password user' \ --customize-hook='chroot "$1" runuser -u user -- /bin/bash' \ unstable /dev/null [...] user@hoothoot:/$ whoami user user@hoothoot:/$ fakeroot /bin/bash root@hoothoot:/# whoami root root@hoothoot:/# cd /tmp/ root@hoothoot:/tmp# echo foo > bar root@hoothoot:/tmp# echo baz > blub root@hoothoot:/tmp# chown --reference=/tmp/bar blub root@hoothoot:/tmp# ls -lha bar blub -rw-r--r-- 1 root root 4 Nov 1 18:26 bar -rw-r--r-- 1 user user 4 Nov 1 18:26 blub The file blub is not owned by the fake root user but by the outer user "user". This is incorrect. When investigating what is going on I found that the "chown" command calls __stat64_time64 on i386 which will return the normal user "user" which suggests to me that the function is not wrapped by fakeroot even though it should. Other functions that might be interesting from glibc 2.34 and might need wrapping are __fstatat64_time64 and __lstat64_time64. This is breaking my package mmdebstrap. Thanks! cheers, josch