chiark / gitweb /
if needed, store database entries also for devices which do not have a device node
[elogind.git] / udev / lib / libudev-device.c
index c4714e4088d1a8dc6f1b5b0cc774fab307bf6e12..055263bbef750232c22d48ff1b535f19ec634448 100644 (file)
@@ -859,11 +859,16 @@ const char *udev_device_get_sysattr_value(struct udev_device *udev_device, const
        }
 
        if (S_ISLNK(statbuf.st_mode)) {
-               /* links return the last element of the target path */
                char target[UTIL_NAME_SIZE];
                int len;
                char *pos;
 
+               /* some core links return the last element of the target path */
+               if (strcmp(sysattr, "driver") != 0 &&
+                   strcmp(sysattr, "subsystem") != 0 &&
+                   strcmp(sysattr, "module") != 0)
+                       goto out;
+
                len = readlink(path, target, sizeof(target));
                if (len > 0) {
                        target[len] = '\0';