From fa91ad3ece4328e1235a49f8fdda9e4c528c70ee Mon Sep 17 00:00:00 2001 From: David Lundgren Date: Mon, 21 Jul 2025 12:13:51 -0500 Subject: [PATCH] sysrc: add missing name format check Also use `self.module.fail_json` through out --- plugins/modules/sysrc.py | 9 ++++++--- tests/integration/targets/sysrc/tasks/main.yml | 13 +++++++++++++ 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/plugins/modules/sysrc.py b/plugins/modules/sysrc.py index 25e6973065..ea710fe7f3 100644 --- a/plugins/modules/sysrc.py +++ b/plugins/modules/sysrc.py @@ -105,8 +105,7 @@ changed: from ansible_collections.community.general.plugins.module_utils.module_helper import StateModuleHelper -import errno -import os +import re class Sysrc(StateModuleHelper): @@ -125,6 +124,10 @@ class Sysrc(StateModuleHelper): use_old_vardict = False def __init_module__(self): + # OID style names are not supported + if not re.match('^[a-zA-Z0-9_]+$', self.vars.name): + self.module.fail_json(msg="Name may only contain alpha-numeric and underscore characters") + self.sysrc = self.module.get_bin_path('sysrc', True) def _contains(self): @@ -165,7 +168,7 @@ class Sysrc(StateModuleHelper): (rc, out, err) = self.module.run_command(cmd) if "Permission denied" in err: - raise OSError(errno.EACCES, "Permission denied for %s" % self.vars.path) + self.module.fail_json(msg="Permission denied for %s" % self.vars.path) return rc, out, err diff --git a/tests/integration/targets/sysrc/tasks/main.yml b/tests/integration/targets/sysrc/tasks/main.yml index c5c249e7cd..3b3b5a9ec7 100644 --- a/tests/integration/targets/sysrc/tasks/main.yml +++ b/tests/integration/targets/sysrc/tasks/main.yml @@ -422,6 +422,19 @@ - > 'k1="v2"' in sysrc_10394_content.stdout_lines + ## + ## sysrc - additional tests + ## + - name: Ensure failure on OID style name since sysrc does not support them + sysrc: + name: not.valid.var + value: test + register: sysrc_name_check + failed_when: + - sysrc_name_check is not failed + - > + 'Name may only contain alpha-numeric and underscore characters' != sysrc_name_check.msg + always: - name: Restore /etc/rc.conf