From: Jack Jansen Date: Tue, 22 Apr 2003 22:03:11 +0000 (+0000) Subject: Fix by Lars Gustaebel for bug 721871: don't get upset if the prefix X-Git-Tag: v2.3c1~1075 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=2b4b5a54d6138e1d8be56b83574a16146306e630;p=python Fix by Lars Gustaebel for bug 721871: don't get upset if the prefix field contains garbage after the first NUL character. --- diff --git a/Lib/tarfile.py b/Lib/tarfile.py index af733deb32..9dd8601cb6 100644 --- a/Lib/tarfile.py +++ b/Lib/tarfile.py @@ -671,18 +671,13 @@ class TarInfo(object): tarinfo.devminor = int(buf[337:345], 8) except ValueError: tarinfo.devmajor = tarinfo.devmajor = 0 + tarinfo.prefix = buf[345:500] # The prefix field is used for filenames > 100 in # the POSIX standard. - # name = prefix + "/" + name - prefix = buf[345:500] - while prefix and prefix[-1] == NUL: - prefix = prefix[:-1] - if len(prefix.split(NUL)) == 1: - tarinfo.prefix = prefix - tarinfo.name = normpath(os.path.join(tarinfo.prefix, tarinfo.name)) - else: - tarinfo.prefix = buf[345:500] + # name = prefix + '/' + name + if tarinfo.type != GNUTYPE_SPARSE: + tarinfo.name = normpath(os.path.join(nts(tarinfo.prefix), tarinfo.name)) # Directory names should have a '/' at the end. if tarinfo.isdir() and tarinfo.name[-1:] != "/":