mirror of https://github.com/python/cpython.git
Issue #2004: Use mode 0700 for temporary directories and default
permissions for missing directories. (will backport to 2.5)
This commit is contained in:
parent
dc6d9e1f5e
commit
0192e43d64
|
@ -2021,14 +2021,10 @@ def extractall(self, path=".", members=None):
|
||||||
|
|
||||||
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)
|
||||||
|
tarinfo.mode = 0700
|
||||||
self.extract(tarinfo, path)
|
self.extract(tarinfo, path)
|
||||||
|
|
||||||
# Reverse sort directories.
|
# Reverse sort directories.
|
||||||
|
@ -2134,6 +2130,8 @@ def _extract_member(self, tarinfo, targetpath):
|
||||||
# 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 @@ def makedir(self, tarinfo, targetpath):
|
||||||
"""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
|
||||||
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.
|
||||||
|
|
Loading…
Reference in New Issue