From nobody@FreeBSD.org  Tue Aug 26 08:56:08 2008
Return-Path: <nobody@FreeBSD.org>
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id BCA51106568C
	for <freebsd-gnats-submit@FreeBSD.org>; Tue, 26 Aug 2008 08:56:08 +0000 (UTC)
	(envelope-from nobody@FreeBSD.org)
Received: from www.freebsd.org (www.freebsd.org [IPv6:2001:4f8:fff6::21])
	by mx1.freebsd.org (Postfix) with ESMTP id B333F8FC08
	for <freebsd-gnats-submit@FreeBSD.org>; Tue, 26 Aug 2008 08:56:08 +0000 (UTC)
	(envelope-from nobody@FreeBSD.org)
Received: from www.freebsd.org (localhost [127.0.0.1])
	by www.freebsd.org (8.14.2/8.14.2) with ESMTP id m7Q8u818060397
	for <freebsd-gnats-submit@FreeBSD.org>; Tue, 26 Aug 2008 08:56:08 GMT
	(envelope-from nobody@www.freebsd.org)
Received: (from nobody@localhost)
	by www.freebsd.org (8.14.2/8.14.1/Submit) id m7Q8u8SF060396;
	Tue, 26 Aug 2008 08:56:08 GMT
	(envelope-from nobody)
Message-Id: <200808260856.m7Q8u8SF060396@www.freebsd.org>
Date: Tue, 26 Aug 2008 08:56:08 GMT
From: Etienne <na.eb.ml@gmail.com>
To: freebsd-gnats-submit@FreeBSD.org
Subject: tar -x -P doesn't follow symlinks that already exist in target location
X-Send-Pr-Version: www-3.1
X-GNATS-Notify:

>Number:         126849
>Category:       bin
>Synopsis:       tar(1) -x -P doesn't follow symlinks that already exist in target location
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    kientzle
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Tue Aug 26 09:00:11 UTC 2008
>Closed-Date:    Tue Sep 16 05:11:44 UTC 2008
>Last-Modified:  Tue Sep 16 05:11:44 UTC 2008
>Originator:     Etienne
>Release:        FreeBSD 6.3-RELEASE
>Organization:
NETASQ
>Environment:
FreeBSD jcd.localhost 6.3-RELEASE FreeBSD 6.3-RELEASE #1: Thu Aug  7 16:37:14 CEST 2008     root@jcd.localhost:/usr/obj/usr/src/sys/SMP  i386
>Description:
When extracting an archive, the -P option behavior of bsdtar differs on FreeBSD 6.2 and FreeBSD 6.3 :
when an archive containing "dir/file" is extracted somewhere "dir" already exists as a symlink to another location,
   - on FreeBSD 6.2, "dir" is left as a symlink and "file" is extracted into the target directory of the symlink (that is the behavior of gnu tar too)
   - on FreeBSD 6.3, "dir" is overwritten and contains "file" (there is no more symlink)

The problem still exists with bsdtar 2.5.5 - libarchive 2.5.5
>How-To-Repeat:
# create a tar file
mkdir dir
touch dir/file
tar cf test.tar dir

# remove files
rm -fr dir

#create a link
mkdir real_dir
ln -s real_dir dir

#untar
tar xPf test.tar

Results depending on FreeBSD versions :
FreeBSD 6.2              FreeBSD 6.3
.                    |   .
|-- dir -> real_dir  |   |-- dir
`-- real_dir         |   |   `-- file
    `-- file         |   `-- real_dir

>Fix:


>Release-Note:
>Audit-Trail:
Responsible-Changed-From-To: freebsd-bugs->kientzle 
Responsible-Changed-By: gavin 
Responsible-Changed-When: Tue Aug 26 09:51:54 UTC 2008 
Responsible-Changed-Why:  
Over to bsdtar maintainer for evaluation 

http://www.freebsd.org/cgi/query-pr.cgi?pr=126849 

From: Boris MARECHAL <boris.marechal@netasq.com>
To: bug-followup@FreeBSD.org, na.eb.ml@gmail.com,
	kientzle@FreeBSD.org
Cc:  
Subject: Re: bin/126849: tar(1) -x -P doesn't follow symlinks that already exist in target location
Date: Fri, 5 Sep 2008 16:23:05 +0200

 --Apple-Mail-35--348266462
 Content-Type: text/plain;
 	charset=US-ASCII;
 	format=flowed
 Content-Transfer-Encoding: 7bit
 
 No news about this regression for FreeBSD 6.4 ?
 --Apple-Mail-35--348266462
 Content-Disposition: attachment;
 	filename=smime.p7s
 Content-Type: application/pkcs7-signature;
 	name=smime.p7s
 Content-Transfer-Encoding: base64
 
 MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIFczCCBW8w
 ggRXoAMCAQICCnDGsUgWa/KQamQwDQYJKoZIhvcNAQEEBQAwgZExCzAJBgNVBAYTAkZSMQ0wCwYD
 VQQIEwROb3JkMRowGAYDVQQHExFWaWxsZW5ldXZlIGQnQXNjcTEuMCwGA1UEChMlTkVUQVNRIC0g
 U2VjdXJlIEludGVybmV0IENvbm5lY3Rpdml0eTEnMCUGA1UECxMeTkVUQVNRIENlcnRpZmljYXRp
 b24gQXV0aG9yaXR5MB4XDTA4MDEwMzExMTIzNFoXDTEwMDEwMjExMTIzNFowgdQxCzAJBgNVBAYU
 AkZSMQ0wCwYDVQQIFAROb3JkMS4wLAYDVQQKFCVORVRBU1EgLSBTZWN1cmUgSW50ZXJuZXQgQ29u
 bmVjdGl2aXR5MScwJQYDVQQLFB5ORVRBU1EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxGjAYBgNV
 BAcUEVZpbGxlbmV1dmUgZCdBc2NxMRcwFQYDVQQDFA5Cb3JpcyBNQVJFQ0hBTDEoMCYGCSqGSIb3
 DQEJARYZYm9yaXMubWFyZWNoYWxAbmV0YXNxLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkC
 gYEA5GEoHCGB2ZhZx/I7Jq0hetpb+HPf2DKzieLoklK125o3RaSdHELZYnWB2Cvi6xRG5p+wmOl2
 ABo0qwxkve2QfdapHXppQo2aNVp++Z528p22ASaQzJnzBT9JTPVxMFopgMbMBgCmMrye6lpI3laW
 HEoCcIrfD4Vfus4i62JCwvMCAwEAAaOCAgYwggICMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFDIY
 DOPzGbqvpVtqkCbFSKhMMB2wMIG+BgNVHSMEgbYwgbOAFCcq6x3ZRNo6F3NqCSAgySWo+X+yoYGX
 pIGUMIGRMQswCQYDVQQGEwJGUjENMAsGA1UECBMETm9yZDEaMBgGA1UEBxMRVmlsbGVuZXV2ZSBk
 J0FzY3ExLjAsBgNVBAoTJU5FVEFTUSAtIFNlY3VyZSBJbnRlcm5ldCBDb25uZWN0aXZpdHkxJzAl
 BgNVBAsTHk5FVEFTUSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eYIBADAOBgNVHQ8BAf8EBAMCBeAw
 EQYJYIZIAYb4QgEBBAQDAgWgMIHNBgNVHR8EgcUwgcIwWqBYoFaGVGxkYXA6Ly9wa2kubmV0YXNx
 LmNvbS9jbj1md2NhLG91PWNhcyxvPW5ldGFzcSxkYz1mcj9jZXJ0aWZpY2F0ZVJldm9jYXRpb25M
 aXN0O2JpbmFyeTA4oDagNIYyaHR0cDovL2ludHJhbmV0Lm5ldGFzcS5jb20vaW50cmFuZXQvcGtp
 L25ldGFzcS5jcmwwKqAooCaGJGh0dHA6Ly93d3cubmV0YXNxLmNvbS9wa2kvbmV0YXNxLmNybDAf
 BglghkgBhvhCAQ0EEhYQVXNlciBDZXJ0aWZpY2F0ZTANBgkqhkiG9w0BAQQFAAOCAQEATwF5SdOw
 IoofZ5U2A16VEBBstYXne5mBItzdvsU8U2AlPXVXcr3/ZsvM0J9ivjKRge1LHVaOgChpxBN5aGhD
 QfKrWVYPALiqn8gQYWlJ5hmlJvxeAQOBU/hpLx9Y5bJ+3DQBjyDsghdRCL6/0Ym5Aj/VgEiTI/1t
 hgK6XNCRyonyTnArtGGhgwEqxOSSQ2zkUvg24DLhzSdUMtC+NydUyatJsHiqVuxuM22wVmCQCbjq
 M9hjGfae9zD1ieAPyeqEHmyCqwBeYblH3EXxnWwXRdKU2VzH1ZAJr5du5hEmlB5yCSEEqMP6joYJ
 w0QErq8VZxj1SlbEECPqrYz/muQDRzGCAxIwggMOAgEBMIGgMIGRMQswCQYDVQQGEwJGUjENMAsG
 A1UECBMETm9yZDEaMBgGA1UEBxMRVmlsbGVuZXV2ZSBkJ0FzY3ExLjAsBgNVBAoTJU5FVEFTUSAt
 IFNlY3VyZSBJbnRlcm5ldCBDb25uZWN0aXZpdHkxJzAlBgNVBAsTHk5FVEFTUSBDZXJ0aWZpY2F0
 aW9uIEF1dGhvcml0eQIKcMaxSBZr8pBqZDAJBgUrDgMCGgUAoIIBxzAYBgkqhkiG9w0BCQMxCwYJ
 KoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0wODA5MDUxNDIzMDZaMCMGCSqGSIb3DQEJBDEWBBS6
 SQZjfyaeXW3UHxsI3Sytm1eNTzCBsQYJKwYBBAGCNxAEMYGjMIGgMIGRMQswCQYDVQQGEwJGUjEN
 MAsGA1UECBMETm9yZDEaMBgGA1UEBxMRVmlsbGVuZXV2ZSBkJ0FzY3ExLjAsBgNVBAoTJU5FVEFT
 USAtIFNlY3VyZSBJbnRlcm5ldCBDb25uZWN0aXZpdHkxJzAlBgNVBAsTHk5FVEFTUSBDZXJ0aWZp
 Y2F0aW9uIEF1dGhvcml0eQIKcMaxSBZr8pBqZDCBswYLKoZIhvcNAQkQAgsxgaOggaAwgZExCzAJ
 BgNVBAYTAkZSMQ0wCwYDVQQIEwROb3JkMRowGAYDVQQHExFWaWxsZW5ldXZlIGQnQXNjcTEuMCwG
 A1UEChMlTkVUQVNRIC0gU2VjdXJlIEludGVybmV0IENvbm5lY3Rpdml0eTEnMCUGA1UECxMeTkVU
 QVNRIENlcnRpZmljYXRpb24gQXV0aG9yaXR5AgpwxrFIFmvykGpkMA0GCSqGSIb3DQEBAQUABIGA
 d1wiTDKFjeO+waHWwHznYVTMjkSgTwo53I4HQQr8OpX0fDbFo4P8ZwZEGqDu8HpSFMm3yo7LRT02
 d+LCu24tTcLmUwbsrz7n0ID/5niucr1Iebbv/KDWYTwQvqCz+vz+Fd267QBqEV1qiQ49HD3dh/zR
 iCyQnZeJoprt2dqd7+IAAAAAAAA=
 
 --Apple-Mail-35--348266462--

From: Tim Kientzle <kientzle@freebsd.org>
To: Boris MARECHAL <boris.marechal@netasq.com>
Cc: bug-followup@freebsd.org, na.eb.ml@gmail.com
Subject: Re: bin/126849: tar(1) -x -P doesn't follow symlinks that already
 exist in target location
Date: Sat, 06 Sep 2008 16:17:45 -0700

 I have a candidate patch that I'm testing now.  Here's the
 behavior I'm working towards:
 
   * With -P, a dir in the archive will:
       * follow a symlink to an existing dir
       * replace a broken symlink
       * replace a symlink to a non-dir
 
   * Without -P, a dir in the archive will:
       * replace a symlink to an existing dir
       * replace a broken symlink
       * replace a symlink to a non-dir
 
   * Non-dirs never follow symlinks
 

From: dfilter@FreeBSD.ORG (dfilter service)
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: bin/126849: commit references a PR
Date: Sun,  7 Sep 2008 05:22:58 +0000 (UTC)

 kientzle    2008-09-07 05:22:33 UTC
 
   FreeBSD src repository
 
   Modified files:
     lib/libarchive       archive_write_disk.c 
     lib/libarchive/test  test_write_disk_secure.c 
   Log:
   SVN rev 182838 on 2008-09-07 05:22:33Z by kientzle
   
   When restoring a directory, allow symlinks to be followed.  The full
   logic here gets a little complex, but the net effect is that the
   SECURE_SYMLINKS flag will prevent us from ever following a symlink.
   Without it, we'll only follow symlinks to dirs.  bsdtar specifies
   SECURE_SYMLINKS by default, suppresses it for -P.
   
   I've also beefed up the write_disk_secure test to verify this
   behavior.
   
   PR:             bin/126849
   
   Revision  Changes    Path
   1.36      +15 -3     src/lib/libarchive/archive_write_disk.c
   1.6       +73 -0     src/lib/libarchive/test/test_write_disk_secure.c
 _______________________________________________
 cvs-all@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/cvs-all
 To unsubscribe, send any mail to "cvs-all-unsubscribe@freebsd.org"
 

From: dfilter@FreeBSD.ORG (dfilter service)
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: bin/126849: commit references a PR
Date: Sun,  7 Sep 2008 06:16:09 +0000 (UTC)

 kientzle    2008-09-07 06:15:45 UTC
 
   FreeBSD src repository
 
   Modified files:
     lib/libarchive/test  test_write_disk_secure.c 
   Log:
   SVN rev 182839 on 2008-09-07 06:15:45Z by kientzle
   
   Correct the comments here.
   
   PR:             bin/126849
   MFC after:      3 days
   
   Revision  Changes    Path
   1.7       +2 -2      src/lib/libarchive/test/test_write_disk_secure.c
 _______________________________________________
 cvs-all@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/cvs-all
 To unsubscribe, send any mail to "cvs-all-unsubscribe@freebsd.org"
 
State-Changed-From-To: open->closed 
State-Changed-By: kientzle 
State-Changed-When: Tue Sep 16 05:11:03 UTC 2008 
State-Changed-Why:  
Fixed in -CURRENT, 7-STABLE, and 6-STABLE. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=126849 
>Unformatted:
