[Python-checkins] cpython (3.2): Issue #12841: Fix tarfile extraction of non-existent uids/gids.

lars.gustaebel python-checkins at python.org
Mon Sep 5 17:14:43 CEST 2011


http://hg.python.org/cpython/rev/2bc122347351
changeset:   72272:2bc122347351
branch:      3.2
parent:      72270:9896fc2a8167
user:        Lars Gustäbel <lars at gustaebel.de>
date:        Mon Sep 05 16:58:14 2011 +0200
summary:
  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)

files:
  Lib/tarfile.py |  10 ++--------
  Misc/NEWS      |   5 +++++
  2 files changed, 7 insertions(+), 8 deletions(-)


diff --git a/Lib/tarfile.py b/Lib/tarfile.py
--- a/Lib/tarfile.py
+++ b/Lib/tarfile.py
@@ -2368,17 +2368,11 @@
             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
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -73,6 +73,11 @@
 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.
 

-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list