From: Lars Gustäbel Date: Mon, 5 Sep 2011 14:58:14 +0000 (+0200) Subject: Issue #12841: Fix tarfile extraction of non-existent uids/gids. X-Git-Tag: v3.2.3rc1~581^2~5 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=2e7ddd374b48649b34db6f86313379080de24280;p=thirdparty%2FPython%2Fcpython.git Issue #12841: Fix tarfile extraction of non-existent uids/gids. tarfile unnecessarily checked the existence of numerical user and group ids on extraction. If one of them did not exist the respective id of the current user (i.e. root) was used for the file and ownership information was lost. (Patch by Sebastien Luttringer) --- diff --git a/Lib/tarfile.py b/Lib/tarfile.py index 3d52a81b9e1b..1ece71619776 100644 --- a/Lib/tarfile.py +++ b/Lib/tarfile.py @@ -2368,17 +2368,11 @@ class TarFile(object): try: g = grp.getgrnam(tarinfo.gname)[2] except KeyError: - try: - g = grp.getgrgid(tarinfo.gid)[2] - except KeyError: - g = os.getgid() + g = tarinfo.gid try: u = pwd.getpwnam(tarinfo.uname)[2] except KeyError: - try: - u = pwd.getpwuid(tarinfo.uid)[2] - except KeyError: - u = os.getuid() + u = tarinfo.uid try: if tarinfo.issym() and hasattr(os, "lchown"): os.lchown(targetpath, u, g) diff --git a/Misc/NEWS b/Misc/NEWS index ff1a0add4218..bd8c49788b30 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -73,6 +73,11 @@ Core and Builtins Library ------- +- Issue #12841: tarfile unnecessarily checked the existence of numerical user + and group ids on extraction. If one of them did not exist the respective id + of the current user (i.e. root) was used for the file and ownership + information was lost. + - Issue #10946: The distutils commands bdist_dumb, bdist_wininst and bdist_msi now respect a --skip-build option given to bdist.