Commit 60225630 authored by Lars Gustäbel's avatar Lars Gustäbel

Issue #2004: Use mode 0700 for temporary directories and default

permissions for missing directories.

(will backport to 2.5)
parent b9a5ed5a
...@@ -2021,15 +2021,11 @@ class TarFile(object): ...@@ -2021,15 +2021,11 @@ class TarFile(object):
for tarinfo in members: for tarinfo in members:
if tarinfo.isdir(): if tarinfo.isdir():
# Extract directory with a safe mode, so that # Extract directories with a safe mode.
# all files below can be extracted as well.
try:
os.makedirs(os.path.join(path, tarinfo.name), 0700)
except EnvironmentError:
pass
directories.append(tarinfo) directories.append(tarinfo)
else: tarinfo = copy.copy(tarinfo)
self.extract(tarinfo, path) tarinfo.mode = 0700
self.extract(tarinfo, path)
# Reverse sort directories. # Reverse sort directories.
directories.sort(lambda a, b: cmp(a.name, b.name)) directories.sort(lambda a, b: cmp(a.name, b.name))
...@@ -2134,6 +2130,8 @@ class TarFile(object): ...@@ -2134,6 +2130,8 @@ class TarFile(object):
# Create all upper directories. # Create all upper directories.
upperdirs = os.path.dirname(targetpath) upperdirs = os.path.dirname(targetpath)
if upperdirs and not os.path.exists(upperdirs): if upperdirs and not os.path.exists(upperdirs):
# Create directories that are not part of the archive with
# default permissions.
os.makedirs(upperdirs) os.makedirs(upperdirs)
if tarinfo.islnk() or tarinfo.issym(): if tarinfo.islnk() or tarinfo.issym():
...@@ -2170,7 +2168,9 @@ class TarFile(object): ...@@ -2170,7 +2168,9 @@ class TarFile(object):
"""Make a directory called targetpath. """Make a directory called targetpath.
""" """
try: try:
os.mkdir(targetpath) # Use a safe mode for the directory, the real mode is set
# later in _extract_member().
os.mkdir(targetpath, 0700)
except EnvironmentError, e: except EnvironmentError, e:
if e.errno != errno.EEXIST: if e.errno != errno.EEXIST:
raise raise
......
...@@ -388,6 +388,9 @@ Core and builtins ...@@ -388,6 +388,9 @@ Core and builtins
Library Library
------- -------
- #2004: tarfile.py: Use mode 0700 for temporary directories and default
permissions for missing directories.
- #175006: The debugger used to skip the condition of a "while" statement - #175006: The debugger used to skip the condition of a "while" statement
after the first iteration. Now it correctly steps on the expression, and after the first iteration. Now it correctly steps on the expression, and
breakpoints on the "while" statement are honored on each loop. breakpoints on the "while" statement are honored on each loop.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment