From 8af1b3e03edc8a38565558aff3bf1689c1ca3545 Mon Sep 17 00:00:00 2001 From: Lumir Balhar Date: Fri, 26 Jul 2024 13:49:11 +0200 Subject: [PATCH] CVE-2024-6345 --- setuptools/package_index.py | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/setuptools/package_index.py b/setuptools/package_index.py index bdcf4a6..1d3e5b4 100755 --- a/setuptools/package_index.py +++ b/setuptools/package_index.py @@ -1,4 +1,5 @@ """PyPI and direct package downloading""" +import subprocess import sys import os import re @@ -848,7 +849,7 @@ class PackageIndex(Environment): def _download_svn(self, url, filename): url = url.split('#', 1)[0] # remove any fragment for svn's sake - creds = '' + creds = [] if url.lower().startswith('svn:') and '@' in url: scheme, netloc, path, p, q, f = urllib.parse.urlparse(url) if not netloc and path.startswith('//') and '/' in path[2:]: @@ -857,14 +858,14 @@ class PackageIndex(Environment): if auth: if ':' in auth: user, pw = auth.split(':', 1) - creds = " --username=%s --password=%s" % (user, pw) + creds = ["--username=" + user, "--password=" + pw] else: - creds = " --username=" + auth + creds = ["--username=" + auth] netloc = host parts = scheme, netloc, url, p, q, f url = urllib.parse.urlunparse(parts) self.info("Doing subversion checkout from %s to %s", url, filename) - os.system("svn checkout%s -q %s %s" % (creds, url, filename)) + subprocess.check_call(["svn", "checkout"] + creds + ["-q", url, filename]) return filename @staticmethod @@ -890,14 +891,11 @@ class PackageIndex(Environment): url, rev = self._vcs_split_rev_from_url(url, pop_prefix=True) self.info("Doing git clone from %s to %s", url, filename) - os.system("git clone --quiet %s %s" % (url, filename)) + subprocess.check_call(["git", "clone", "--quiet", url, filename]) if rev is not None: self.info("Checking out %s", rev) - os.system("(cd %s && git checkout --quiet %s)" % ( - filename, - rev, - )) + subprocess.check_call(["git", "-C", filename, "checkout", "--quiet", rev]) return filename @@ -906,14 +904,11 @@ class PackageIndex(Environment): url, rev = self._vcs_split_rev_from_url(url, pop_prefix=True) self.info("Doing hg clone from %s to %s", url, filename) - os.system("hg clone --quiet %s %s" % (url, filename)) + subprocess.check_call(["hg", "clone", "--quiet", url, filename]) if rev is not None: self.info("Updating to %s", rev) - os.system("(cd %s && hg up -C -r %s -q)" % ( - filename, - rev, - )) + subprocess.check_call(["hg", "--cwd", filename, "up", "-C", "-r", rev, "-q"]) return filename -- 2.45.2