[Bug 194911] New: [libarchive] issue extracting parts of archives created on 10.x

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Sun Nov 9 17:13:44 UTC 2014


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=194911

            Bug ID: 194911
           Summary: [libarchive] issue extracting parts of archives
                    created on 10.x
           Product: Base System
           Version: 8.4-STABLE
          Hardware: amd64
                OS: Any
            Status: Needs Triage
          Severity: Affects Some People
          Priority: ---
         Component: bin
          Assignee: freebsd-bugs at FreeBSD.org
          Reporter: ohauer at FreeBSD.org

Created attachment 149223
  --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=149223&action=edit
patch to build libarchive and bsdtar from 10.1 on 8.4

There is a possible issue / regression for tar archives packed on 10.x and
extracted on 8.4/9.x.

The following tests where done on 8.4 / 9.3 (amd64)

Test case 1
===============
$ cd $space
$ fetch
ftp://ftp.freebsd.org/pub/FreeBSD/releases/amd64/amd64/10.1-RC4/base.txz
$ tar xf base.txz ^./etc
$ mkdir t1
$ tar -C t1/ -xf base.txz ^./etc
$ diff -Nru etc/ t1/etc/

=> no diff but in both times etc/hosts.allow is corrupted


Test case 2:
===============
$ mkdir t2
$ tar -C t2/ -xf base.txz
$ diff -Nru etc/ t2/etc/
  Files etc/hosts.allow and t2/etc/hosts.allow differ

The file t2/etc/hosts.allow is extracted correct, no corruption


Now use libarchive / tar from releng/10.1 on the the 8.4 system
1. backup /usr/lib/libarchive.*
2. co, patch, build libarchive and bsdtar from releng/10.1 source

$ mkdir space && cd $space
$ svn co http://svn.freebsd.org/base/releng/10.1
$ patch -d 10.1 < libarchive.diff
$ cd $space/10.1/lib/libarchive
$ make MK_ICONV=no obj
$ cp /usr/obj/.../libarchive.so* /usr/obj/.../libarchive.a /usr/lib/
$ cd $space/10.1/usr.bin/tar
$ make MK_ICONV=no obj
$ make MK_ICONV=no


Copy the resulting /usr/obj/.../bsdtar to the space from test 1

Test case 3:
==============
$ rm -rf etc
$ ./bsdtar xf base.txz ^./etc 
$ diff -Nru etc t2/etc/

=> The file etc/hosts.allow is extracted without corruption

A copy of a corrupt hosts.allow file and the patch against 8.4 can be found
here
http://people.freebsd.org/~ohauer/diffs/libarchive/

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the freebsd-bugs mailing list