mirror of https://github.com/python/cpython
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)
This commit is contained in:
parent
cbce2c01a0
commit
8babfdfd45
|
@ -2264,17 +2264,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)
|
||||
|
|
|
@ -40,6 +40,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.
|
||||
|
||||
|
|
Loading…
Reference in New Issue