Dear subscribers,
I use tar-1.22.91 under solaris. With some input tarfiles (created with GNU tar or with the solaris tar), tar -t produces the following message: tar: rmtlseek not stopped at a record boundary tar: Error is not recoverable: exiting now A proposed patch is as follows: ----------------------------------------------- In src/buffer.c, replace (around line 863): if (size < record_size) with if (size < (off_t)record_size) ----------------------------------------------- An example of such a `faulty' tarfile can be created using (my personal data has been edited): (csh, under solaris) jupiter% tar --version | head -1 tar (GNU tar) 1.22.91 jupiter% /usr/bin/tar --version |& head -1 tar: s: unknown function modifier jupiter% rm -rf mydir; mkdir mydir jupiter% dd if=/dev/zero of=mydir/myfile1 bs=6000 count=1 1+0 records in 1+0 records out jupiter% cp mydir/myfile1 mydir/myfile2 jupiter% tar cf g6000.tar mydir jupiter% /usr/bin/tar cf s6000.tar mydir jupiter% ls -l g6000.tar s6000.tar -rw-r--r-- 1 myname mygroup 20480 Feb 24 14:45 g6000.tar -rw-r--r-- 1 myname mygroup 14848 Feb 24 14:45 s6000.tar jupiter% tar tvf g6000.tar drwxr-xr-x myname/mygroup 0 2010-02-24 14:45 mydir/ -rw-r--r-- myname/mygroup 6000 2010-02-24 14:45 mydir/myfile1 tar: rmtlseek not stopped at a record boundary tar: Error is not recoverable: exiting now jupiter% tar tvf s6000.tar drwxr-xr-x myname/mygroup 0 2010-02-24 14:45 mydir/ -rw-r--r-- myname/mygroup 6000 2010-02-24 14:45 mydir/myfile1 tar: rmtlseek not stopped at a record boundary tar: Error is not recoverable: exiting now jupiter% tar --no-seek -tvf g6000.tar drwxr-xr-x myname/mygroup 0 2010-02-24 15:06 mydir/ -rw-r--r-- myname/mygroup 6000 2010-02-24 15:06 mydir/myfile1 -rw-r--r-- myname/mygroup 6000 2010-02-24 15:06 mydir/myfile2 jupiter% Additional information: - This occurs under Solaris 8 or Solaris 10, not on Cygwin-1.7, not on Darwin-9.8.0. - This occurs under tar-1.22.91 with no specific additional option and under tar-1.20, tar-1.21, tar-1.22, tar-1.22.90 and tar-1.22.91 under the -n (`--seek') option. - With `tar -x' (instead of `tar -t') the problem is identical. - With the option `--no-seek' (available only under tar-1.22.91), the problem disappears. - If the value `bs=6000' above is changed into something below 5120 or something above 9216, the problem disappears. - See patch above. Thank you for your help. Denis Excoffier.
