diff --git a/ui/opensnitch/dialogs/firewall_rule.py b/ui/opensnitch/dialogs/firewall_rule.py index 9e8eca06..4e5bc3fa 100644 --- a/ui/opensnitch/dialogs/firewall_rule.py +++ b/ui/opensnitch/dialogs/firewall_rule.py @@ -1445,10 +1445,10 @@ The value must be in the format: VALUE/UNITS/TIME, for example: # 3. otherwise validate that the entered value is an # int try: - if "," in statem_value or "-" in statem_value: - raise ValueError("port entered is multiport or a port range") service_idx = self.net_srv.service_by_name(statem_value) statem_value = self.net_srv.port_by_index(service_idx) + if service_idx > 0 and "," in statem_value or "-" in statem_value: + raise ValueError("port entered is multiport or a port range") except: if "," not in statem_value and "-" not in statem_value: if not self._is_valid_int_value(statem_value): diff --git a/ui/opensnitch/utils/__init__.py b/ui/opensnitch/utils/__init__.py index e7f73ad6..03793949 100644 --- a/ui/opensnitch/utils/__init__.py +++ b/ui/opensnitch/utils/__init__.py @@ -435,16 +435,28 @@ class NetworkServices(): return self.srv_array def service_by_index(self, idx): - return self.srv_array[idx] + try: + return self.srv_array[idx] + except: + return "" def service_by_name(self, name): - return self.srv_array.index(name) + try: + return self.srv_array.index(name) + except: + return -1 def port_by_index(self, idx): - return self.ports_list[idx] + try: + return self.ports_list[idx] + except: + return -1 def index_by_port(self, port): - return self.ports_list.index(str(port)) + try: + return self.ports_list.index(str(port)) + except: + return -1 class Icons(): """Util to display Qt's built-in icons when the system is not configured as