]> git.ipfire.org Git - thirdparty/plymouth.git/commitdiff
device-manager: Fix crash if XKB keymap could not be created
authorRay Strode <rstrode@redhat.com>
Thu, 1 Dec 2022 19:18:39 +0000 (14:18 -0500)
committerRay Strode <rstrode@redhat.com>
Thu, 1 Dec 2022 19:21:26 +0000 (14:21 -0500)
This commit fixes a crash introduced in the last commit when an
xkb keymap can't be created.

Closes: https://gitlab.freedesktop.org/plymouth/plymouth/-/issues/199
src/libply-splash-core/ply-device-manager.c

index 7e21bffe36e0878b25c6e2572b91bd46206df435..15a14c653f95a5cff0fcb4b9f687ec44604033ac 100644 (file)
@@ -463,6 +463,18 @@ create_devices_for_subsystem (ply_device_manager_t *manager,
         struct udev_list_entry *entry;
         bool found_device = false;
 
+        if (strcmp (subsystem, SUBSYSTEM_INPUT) == 0) {
+                if (ply_kernel_command_line_has_argument ("plymouth.use-legacy-input")) {
+                        ply_trace ("Not creating devices for subsystem " SUBSYSTEM_INPUT " because plymouth.use-legacy-input on command line");
+                        return false;
+                }
+
+                if (manager->xkb_keymap == NULL) {
+                        ply_trace ("Not creating devices for subsystem " SUBSYSTEM_INPUT " because there is no configure XKB layout");
+                        return false;
+                }
+        }
+
         ply_trace ("creating objects for %s devices",
                    strcmp (subsystem, SUBSYSTEM_FRAME_BUFFER) == 0 ?
                    "frame buffer" :