From 35384b596387bbb941b118901e1ecdd3528dd809 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= Date: Mon, 10 Nov 2025 16:30:00 +0100 Subject: [PATCH] qui-devices: do not crash if some properties are denied in policy Default policy doesn't allow accessing device-related features on dom0. Don't crash widget on this. Fixes https://github.com/QubesOS/qubes-issues/issues/10114 --- qui/devices/device_widget.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/qui/devices/device_widget.py b/qui/devices/device_widget.py index 2d375944..e5634296 100644 --- a/qui/devices/device_widget.py +++ b/qui/devices/device_widget.py @@ -475,9 +475,12 @@ def initialize_features(self, *_args, **_kwargs): mic_dev_strings = [] if microphone: for domain in domains: - mic_feature = domain.features.get( - backend.FEATURE_ATTACH_WITH_MIC, False - ) + try: + mic_feature = domain.features.get( + backend.FEATURE_ATTACH_WITH_MIC, False + ) + except qubesadmin.exc.QubesDaemonAccessError: + continue if isinstance(mic_feature, str): mic_dev_strings.extend( [dev for dev in mic_feature.split(" ") if dev] @@ -493,7 +496,12 @@ def initialize_features(self, *_args, **_kwargs): self.parent_ports_to_hide = [] parent_ids_to_hide = [] for domain in domains: - children_feature = domain.features.get(backend.FEATURE_HIDE_CHILDREN, False) + try: + children_feature = domain.features.get( + backend.FEATURE_HIDE_CHILDREN, False + ) + except qubesadmin.exc.QubesDaemonAccessError: + continue if isinstance(children_feature, str): parent_ids_to_hide.extend([s for s in children_feature.split(" ") if s])