Bug 194911

Summary: [libarchive] issue extracting parts of archives created on 10.x
Product: Base System Reporter: Olli Hauer <ohauer>
Component: kernAssignee: freebsd-bugs (Nobody) <bugs>
Status: Closed Overcome By Events    
Severity: Affects Some People CC: kientzle
Priority: --- Keywords: patch
Version: 8.4-STABLE   
Hardware: amd64   
OS: Any   
Attachments:
Description Flags
patch to build libarchive and bsdtar from 10.1 on 8.4 none

Description Olli Hauer freebsd_committer freebsd_triage 2014-11-09 17:13:44 UTC
Created attachment 149223 [details]
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/
Comment 1 Olli Hauer freebsd_committer freebsd_triage 2016-01-10 20:38:14 UTC
Close since 8.4 is now EoL