[llvm] [Dexter] Sanitize user details from git repo URL in dexter --version (PR #105533)
Stephen Tozer via llvm-commits
llvm-commits at lists.llvm.org
Wed Aug 21 07:12:11 PDT 2024
https://github.com/SLTozer created https://github.com/llvm/llvm-project/pull/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[0] 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.
[0]: https://github.com/llvm/llvm-project/pull/105220
>From 1be4c5aa0d1347e3dccce02b7a83ff82788a72a9 Mon Sep 17 00:00:00 2001
From: Stephen Tozer <stephen.tozer at sony.com>
Date: Wed, 21 Aug 2024 15:07:48 +0100
Subject: [PATCH] Sanitize user details from git repo URL in dexter --version
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[0] 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.
[0]: 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 505aebaebc4f42..89ab5c2dbd72a3 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_
)
More information about the llvm-commits
mailing list