From 5804b53bb1b5058815b664f5478c92df19ba8cc9 Mon Sep 17 00:00:00 2001 From: Martin Hauser Date: Fri, 13 Mar 2026 15:50:27 +0100 Subject: [PATCH] fix(utilities): Add atomic group in expandable field regex pattern Replace non-capturing group with atomic group in expansion bracket regex to prevent excessive backtracking. Add missing 'object' key to bulk view context for template compatibility. --- netbox/netbox/views/generic/bulk_views.py | 1 + netbox/utilities/forms/fields/expandable.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/netbox/netbox/views/generic/bulk_views.py b/netbox/netbox/views/generic/bulk_views.py index 9db40a0b0..25756e212 100644 --- a/netbox/netbox/views/generic/bulk_views.py +++ b/netbox/netbox/views/generic/bulk_views.py @@ -258,6 +258,7 @@ class BulkCreateView(GetReturnURLMixin, BaseMultiObjectView): def _get_context(self, request, form, model_form): model = self.queryset.model return { + 'object': None, 'obj_type': model._meta.verbose_name, 'obj_type_plural': model._meta.verbose_name_plural, 'form': form, diff --git a/netbox/utilities/forms/fields/expandable.py b/netbox/utilities/forms/fields/expandable.py index 157d825a5..2bc59c7ad 100644 --- a/netbox/utilities/forms/fields/expandable.py +++ b/netbox/utilities/forms/fields/expandable.py @@ -59,7 +59,7 @@ class ExpandableIPNetworkField(forms.CharField): return [value] # Replace expansion brackets with a neutral value to get a parseable IP/CIDR - stripped = re.sub(r'\[[^\]]+\]', '0', value) + stripped = re.sub(r'(?>\[[^\]]+\])', '0', value) try: family = netaddr.IPNetwork(stripped).version except (netaddr.AddrFormatError, ValueError):