GNU tar 1.31's regression test 41, numeric.at, is broken on filesystems
with BSD semantics (GID inherited from directory) if run in a
directory whose GID does not match the primary GID of the executing
user.

I already reported this problem for 1.29 and 1.30.  A fix had been
suggested for 1.29, but was never committed.
https://lists.gnu.org/archive/html/bug-tar/2016-06/msg00001.html

Testsuite.log from FreeBSD 12 attached.
(User naddy:naddy, directory naddy:wheel.)

-- 
Christian "naddy" Weisgerber                          na...@mips.inka.de
#                             -*- compilation -*-
41. numeric.at:18: testing --numeric-owner basic tests ...
./numeric.at:29:
mkdir posix
(cd posix
TEST_TAR_FORMAT=posix
export TEST_TAR_FORMAT
TAR_OPTIONS="-H posix"
export TAR_OPTIONS
rm -rf *

mkdir dir
genfile --file dir/file

MYUID=$(id -u) || exit 77
MYGID=$(id -g) || exit 77
MYUSR=$(id -un) || exit 77
MYGRP=$(id -gn) || exit 77


decho --create
tar --create -vvf a dir --numeric-owner | awk '2=="'"$MYUID/$MYGID"'" {print 
"OK"; next} {print}'
tar --create -vvf a dir | awk '2=="'"$MYUSR/$MYGRP"'" {print "OK"; next} 
{print}'


decho --list
tar --list -vvf a dir --numeric-owner | awk '2=="'"$MYUID/$MYGID"'" {print 
"OK"; next} {print}'
tar --list -vvf a dir | awk '2=="'"$MYUSR/$MYGRP"'" {print "OK"; next} {print}'


decho --diff
tar --diff -vvf a dir --numeric-owner | awk '2=="'"$MYUID/$MYGID"'" {print 
"OK"; next} {print}'
tar --diff -vvf a dir | awk '2=="'"$MYUSR/$MYGRP"'" {print "OK"; next} {print}'


decho --extract
tar --extract -vvf a dir --numeric-owner | awk '2=="'"$MYUID/$MYGID"'" {print 
"OK"; next} {print}'
tar --extract -vvf a dir | awk '2=="'"$MYUSR/$MYGRP"'" {print "OK"; next} 
{print}'

)
--- -   2019-01-11 16:33:18.634802000 +0100
+++ 
/usr/ports/archivers/gtar/work/tar-1.31/tests/testsuite.dir/at-groups/41/stdout 
    2019-01-11 16:33:18.633907000 +0100
@@ -1,21 +1,21 @@
 --create
-OK
-OK
-OK
-OK
+drwxr-xr-x 1000/0            0 2019-01-11 16:33 dir/
+-rw-r--r-- 1000/0            0 2019-01-11 16:33 dir/file
+drwxr-xr-x naddy/wheel       0 2019-01-11 16:33 dir/
+-rw-r--r-- naddy/wheel       0 2019-01-11 16:33 dir/file
 --list
-OK
-OK
-OK
-OK
+drwxr-xr-x 1000/0            0 2019-01-11 16:33 dir/
+-rw-r--r-- 1000/0            0 2019-01-11 16:33 dir/file
+drwxr-xr-x naddy/wheel       0 2019-01-11 16:33 dir/
+-rw-r--r-- naddy/wheel       0 2019-01-11 16:33 dir/file
 --diff
-OK
-OK
-OK
-OK
+drwxr-xr-x 1000/0            0 2019-01-11 16:33 dir/
+-rw-r--r-- 1000/0            0 2019-01-11 16:33 dir/file
+drwxr-xr-x naddy/wheel       0 2019-01-11 16:33 dir/
+-rw-r--r-- naddy/wheel       0 2019-01-11 16:33 dir/file
 --extract
-OK
-OK
-OK
-OK
+drwxr-xr-x 1000/0            0 2019-01-11 16:33 dir/
+-rw-r--r-- 1000/0            0 2019-01-11 16:33 dir/file
+drwxr-xr-x naddy/wheel       0 2019-01-11 16:33 dir/
+-rw-r--r-- naddy/wheel       0 2019-01-11 16:33 dir/file
 
41. numeric.at:18: 41. --numeric-owner basic tests (numeric.at:18): FAILED 
(numeric.at:29)

Reply via email to