feat(fix_services): add interface name validation helper

Add _IFACE_RE regex and _validate_iface() classmethod that validates
Linux network interface names (max 15 chars, alphanumeric plus dash
and underscore). Provides a safety net against malformed names if
interface configuration is ever externalized.
This commit is contained in:
CoderFX
2026-03-11 17:36:45 +02:00
parent 3d9280a61a
commit 45d846c348

View File

@@ -25,6 +25,15 @@ class FixServices(plugins.Plugin):
Automatically disables itself when an external WiFi adapter is detected instead of the onboard brcmfmac chip. Automatically disables itself when an external WiFi adapter is detected instead of the onboard brcmfmac chip.
""" """
_IFACE_RE = re.compile(r'^[a-zA-Z0-9_-]{1,15}$')
@classmethod
def _validate_iface(cls, name):
"""Validate a Linux network interface name."""
if not cls._IFACE_RE.match(name):
raise ValueError('Invalid interface name: %r' % name)
return name
def __init__(self): def __init__(self):
self.options = dict() self.options = dict()
self.pattern = re.compile(r'ieee80211 phy0: brcmf_cfg80211_add_iface: iface validation failed: err=-95') self.pattern = re.compile(r'ieee80211 phy0: brcmf_cfg80211_add_iface: iface validation failed: err=-95')
@@ -103,6 +112,7 @@ class FixServices(plugins.Plugin):
if self.is_disabled: if self.is_disabled:
return return
try: try:
self._validate_iface("wlan0mon")
cmd_output = subprocess.check_output("ip link show wlan0mon", shell=True) cmd_output = subprocess.check_output("ip link show wlan0mon", shell=True)
logging.debug("[Fix_Services ip link show wlan0mon]: %s" % repr(cmd_output)) logging.debug("[Fix_Services ip link show wlan0mon]: %s" % repr(cmd_output))
if ",UP," in str(cmd_output): if ",UP," in str(cmd_output):