From 34a2e09ae66a43ddba088da9ae5fdc226a8748df Mon Sep 17 00:00:00 2001 From: Philipp Moritz Date: Mon, 24 Oct 2022 21:46:52 -0700 Subject: [PATCH] Fix race condition when tarfile is used from multiple processes --- Lib/tarfile.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Lib/tarfile.py b/Lib/tarfile.py index a08f247f496b3d..c33a082e27767d 100755 --- a/Lib/tarfile.py +++ b/Lib/tarfile.py @@ -2163,10 +2163,10 @@ def _extract_member(self, tarinfo, targetpath, set_attrs=True, # Create all upper directories. upperdirs = os.path.dirname(targetpath) - if upperdirs and not os.path.exists(upperdirs): + if upperdirs: # Create directories that are not part of the archive with # default permissions. - os.makedirs(upperdirs) + os.makedirs(upperdirs, exist_ok=True) if tarinfo.islnk() or tarinfo.issym(): self._dbg(1, "%s -> %s" % (tarinfo.name, tarinfo.linkname))