Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:dirkmueller:acdc:as_python3_module
salt.22688
wipe-notify_socket-from-env-in-cmdmod-bsc-11933...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File wipe-notify_socket-from-env-in-cmdmod-bsc-1193357-30.patch of Package salt.22688
From 02479e90c220181013cf15813c2d7a3b86abec4c Mon Sep 17 00:00:00 2001 From: Victor Zhestkov <vzhestkov@suse.com> Date: Fri, 28 Jan 2022 16:39:38 +0300 Subject: [PATCH] Wipe NOTIFY_SOCKET from env in cmdmod (bsc#1193357) - 3002.2 (#472) * Remove NOTIFY_SOCKET env variable from cmd.run calls * Add test for NOTIFY_SOCKET env variable wiping --- salt/modules/cmdmod.py | 3 +++ tests/unit/modules/test_cmdmod.py | 42 +++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) diff --git a/salt/modules/cmdmod.py b/salt/modules/cmdmod.py index f24e7cc9ae..624e5a2bfb 100644 --- a/salt/modules/cmdmod.py +++ b/salt/modules/cmdmod.py @@ -606,6 +606,9 @@ def _run( if prepend_path: run_env["PATH"] = ":".join((prepend_path, run_env["PATH"])) + if "NOTIFY_SOCKET" not in env: + run_env.pop("NOTIFY_SOCKET", None) + if python_shell is None: python_shell = False diff --git a/tests/unit/modules/test_cmdmod.py b/tests/unit/modules/test_cmdmod.py index 15b97f8568..b84ae6c281 100644 --- a/tests/unit/modules/test_cmdmod.py +++ b/tests/unit/modules/test_cmdmod.py @@ -351,6 +351,48 @@ class CMDMODTestCase(TestCase, LoaderModuleMockMixin): if not salt.utils.platform.is_darwin(): getpwnam_mock.assert_called_with("foobar") + @skipIf(salt.utils.platform.is_windows(), "Do not run on Windows") + def test_os_environment_do_not_pass_notify_socket(self): + """ + Make sure NOTIFY_SOCKET environment variable is not passed + to the command if not explicitly set with env parameter. + """ + with patch("pwd.getpwnam") as getpwnam_mock: + new_env = os.environ.copy() + new_env.update({"NOTIFY_SOCKET": "/run/systemd/notify"}) + with patch("subprocess.Popen") as popen_mock, patch( + "os.environ.copy", return_value=new_env + ): + popen_mock.return_value = Mock( + communicate=lambda *args, **kwags: [b"", None], + pid=lambda: 1, + retcode=0, + ) + + with patch.dict(cmdmod.__grains__, {"os": "SUSE", "os_family": "Suse"}): + if sys.platform.startswith(("freebsd", "openbsd")): + shell = "/bin/sh" + else: + shell = "/bin/bash" + + cmdmod._run("ls", cwd=tempfile.gettempdir(), shell=shell) + + self.assertTrue( + "NOTIFY_SOCKET" not in popen_mock.call_args_list[0][1]["env"] + ) + + cmdmod._run( + "ls", + cwd=tempfile.gettempdir(), + shell=shell, + env={"NOTIFY_SOCKET": "/run/systemd/notify.new"}, + ) + + self.assertEqual( + popen_mock.call_args_list[1][1]["env"]["NOTIFY_SOCKET"], + "/run/systemd/notify.new", + ) + @skipIf(not salt.utils.platform.is_darwin(), "applicable to macOS only") def test_shell_properly_handled_on_macOS(self): """ -- 2.34.1
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor