From: stratakis Date: Thu, 9 Jul 2026 20:43:54 +0000 (+0200) Subject: gh-98894: Quote test_dtrace tracer subcommands (#152901) X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a159c6851f47549d2bc0cd37a0f555951bb11d7b;p=thirdparty%2FPython%2Fcpython.git gh-98894: Quote test_dtrace tracer subcommands (#152901) Use shlex.join() when building tracer -c command strings for avoiding issues with spaces. --- diff --git a/Lib/test/test_dtrace.py b/Lib/test/test_dtrace.py index e1662a70b26d..30731b8f90ac 100644 --- a/Lib/test/test_dtrace.py +++ b/Lib/test/test_dtrace.py @@ -1,6 +1,7 @@ import dis import os.path import re +import shlex import signal import subprocess import sys @@ -92,7 +93,7 @@ def run_readelf(cmd): if proc.returncode: raise AssertionError( - f"Command {' '.join(cmd)!r} failed " + f"Command {shlex.join(cmd)!r} failed " f"with exit code {proc.returncode}: " f"stdout={stdout!r} stderr={stderr!r}" ) @@ -139,7 +140,7 @@ class TraceBackend: raise if check_returncode and proc.returncode: raise AssertionError( - f"Command {' '.join(command)!r} failed " + f"Command {shlex.join(command)!r} failed " f"with exit code {proc.returncode}: output={stdout!r}" ) return stdout @@ -148,7 +149,7 @@ class TraceBackend: python_flags = [] if optimize_python: python_flags.extend(["-O"] * optimize_python) - subcommand = " ".join([sys.executable] + python_flags + [python_file]) + subcommand = shlex.join([sys.executable] + python_flags + [python_file]) return self.trace(script_file, subcommand, timeout=60, check_returncode=True) @@ -276,7 +277,7 @@ gc__done:1""", try: proc = create_process_group( - ["bpftrace", "-e", program, "-c", " ".join(subcommand)], + ["bpftrace", "-e", program, "-c", shlex.join(subcommand)], stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True, @@ -314,7 +315,8 @@ gc__done:1""", program = f'usdt:{sys.executable}:python:function__entry {{ printf("probe: success\\n"); exit(); }}' try: proc = create_process_group( - ["bpftrace", "-e", program, "-c", f"{sys.executable} -c pass"], + ["bpftrace", "-e", program, "-c", + shlex.join([sys.executable, "-c", "pass"])], stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True,