From 57dc09341e5eef758b1abce78822c51069157869 Mon Sep 17 00:00:00 2001 From: Stephen Tozer Date: Thu, 22 Aug 2024 10:56:28 +0100 Subject: [PATCH] [Dexter] Sanitize user details from git repo URL in dexter --version (#105533) Currently the output of dexter --version contains the raw output of `git remote get-url origin`, which may contain a username and password. This patch adds a small change to remove these from the output string. A similar patch for LLVM's default version string* also removes the git URL altogether unless opted-in to; it's not clear whether this is a necessary or desirable step yet, but if so we can trivially remove the URL from Dexter as well. *PR here: https://github.com/llvm/llvm-project/pull/105220 --- .../debuginfo-tests/dexter/dex/utils/Version.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/cross-project-tests/debuginfo-tests/dexter/dex/utils/Version.py b/cross-project-tests/debuginfo-tests/dexter/dex/utils/Version.py index 505aebaebc4f..89ab5c2dbd72 100644 --- a/cross-project-tests/debuginfo-tests/dexter/dex/utils/Version.py +++ b/cross-project-tests/debuginfo-tests/dexter/dex/utils/Version.py @@ -9,10 +9,23 @@ import os from subprocess import CalledProcessError, check_output, STDOUT import sys +from urllib.parse import urlparse, urlunparse from dex import __version__ +def sanitize_repo_url(repo): + parsed = urlparse(repo) + # No username present, repo URL is fine. + if parsed.username is None: + return repo + # Otherwise, strip the login details from the URL by reconstructing the netloc from just `(:)?`. + sanitized_netloc = parsed.hostname + if parsed.port: + sanitized_netloc = f"{sanitized_netloc}:{parsed.port}" + return urlunparse(parsed._replace(netloc=sanitized_netloc)) + + def _git_version(): dir_ = os.path.dirname(__file__) try: @@ -28,7 +41,7 @@ def _git_version(): .rstrip() .decode("utf-8") ) - repo = ( + repo = sanitize_repo_url( check_output( ["git", "remote", "get-url", "origin"], stderr=STDOUT, cwd=dir_ )