diff options
| author | Stephen Tozer <stephen.tozer@sony.com> | 2024-08-22 10:56:28 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-08-22 10:56:28 +0100 |
| commit | 57dc09341e5eef758b1abce78822c51069157869 (patch) | |
| tree | 00f4a83a83a5ba3915deb7a6a49faec6a61667d5 /cross-project-tests | |
| parent | 716f7e2d18d03039c13ad90d5b3cb4f65c413b74 (diff) | |
[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
Diffstat (limited to 'cross-project-tests')
| -rw-r--r-- | cross-project-tests/debuginfo-tests/dexter/dex/utils/Version.py | 15 |
1 files changed, 14 insertions, 1 deletions
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 `<hostname>(:<port>)?`. + 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_ ) |
