This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: Tar file symbolic link bug fix
Type: Stage:
Components: Extension Modules Versions: Python 2.3
process
Status: closed Resolution: fixed
Dependencies: Superseder:
Assigned To: Nosy List: ellers88, lars.gustaebel, loewis
Priority: normal Keywords: patch

Created on 2005-03-20 20:14 by ellers88, last changed 2022-04-11 14:56 by admin. This issue is now closed.

Files
File name Uploaded Description Edit
tarfile.patch ellers88, 2005-03-20 20:14 Patch file
Messages (5)
msg48018 - (view) Author: Ellers (ellers88) Date: 2005-03-20 20:14
OS: linux

If you use tarfile.py to create a tarfile with a
symbolic link followed by a regular file, then use gnu
tar to list the contents you will see:

tar tvf archives/test1.my.tar
	lrwxrwxrwx andrew/dev        3 2005-03-20 16:00:35
barlink -> bar
	tar: Skipping to next header
	tar: Error exit delayed from previous errors

I have traced the problem down to the size field in the
tar header being set to the length of the link target
name, not zero as it should be.

I have put an extended description and proof of this at:

http://software.ellerton.net/supertar/README.txt
http://software.ellerton.net/supertar/PythonTarPatchProof.tar

The patch file attached fixes this by setting size == 0
if filetype == SYMLINK, and verified this works
perfectly on linux.

CAUTION: I don't know, though I can fairly safely
assume, that this will work also on other unix's.

(Shameless plug: this is where the supertar utility
is/will be: http://software.ellerton.net/supertar/ )
msg48019 - (view) Author: Lars Gustäbel (lars.gustaebel) * (Python committer) Date: 2005-03-22 19:21
Logged In: YES 
user_id=642936

The size for a non-regular file is already set to zero but
at the wrong place. It is currently done in the add() method
and not in gettarinfo() as it should be. Since you use the
addfile() and gettarinfo() methods in your test script, you
get unwanted results.

I submitted patch #1168594 that fixes the whole problem in a
more generic way and is closely related to the fix for bug
#1031148 from last year.
msg48020 - (view) Author: Martin v. Löwis (loewis) * (Python committer) Date: 2005-03-22 19:47
Logged In: YES 
user_id=21627

Following gustaebel's recommendation, I reject this patch, and will accept 
1168594 instead.
msg48021 - (view) Author: Ellers (ellers88) Date: 2005-03-22 21:10
Logged In: YES 
user_id=1046139

I don't mind which patch is accepted, so long as all uses
where a symlink is added results in the correct result, i.e.
size==0  :)
msg48022 - (view) Author: Martin v. Löwis (loewis) * (Python committer) Date: 2005-08-27 10:10
Logged In: YES 
user_id=21627

I have now committed #1168594, both for 2.4 and 2.5.
History
Date User Action Args
2022-04-11 14:56:10adminsetgithub: 41729
2005-03-20 20:14:59ellers88create