sd-device: reject empty driver name
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Wed, 5 May 2021 15:02:49 +0000 (17:02 +0200)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Sat, 15 May 2021 17:15:36 +0000 (19:15 +0200)
If ":" was the last char in the string, we would call access() on ".../drivers/", which
would pass. It probably doesn't matter, but let's reject this anyway.

(cherry picked from commit 52a89a5f08230439f07c043d59ded1270842137b)
(cherry picked from commit 92e5ba438d48a798807104d8aed4e480c58c6465)

src/libsystemd/sd-device/sd-device.c

index 0d1a6c583ce9e61cdfe11886b7322622cb6326e5..64c83d2a8477df5bf7d1e8d9be89b2472bc3a96f 100644 (file)
@@ -275,7 +275,7 @@ _public_ int sd_device_new_from_subsystem_sysname(sd_device **ret, const char *s
                 const char *subsys, *sep;
 
                 sep = strchr(sysname, ':');
-                if (sep) {
+                if (sep && sep[1] != '\0') { /* Require ":" and something non-empty after that. */
                         subsys = memdupa_suffix0(sysname, sep - sysname);
 
                         if (snprintf_ok(syspath, sizeof syspath, "/sys/subsystem/%s/drivers/%s", subsys, sep + 1) &&