chiark / gitweb /
libudev: set errno properly in all error conditions of udev_device_new_from_syspath()
authorLennart Poettering <lennart@poettering.net>
Wed, 3 Dec 2014 00:59:42 +0000 (01:59 +0100)
committerLennart Poettering <lennart@poettering.net>
Wed, 3 Dec 2014 01:04:55 +0000 (02:04 +0100)
src/libudev/libudev-device.c

index 5f196bd9b8aa7dea78255117bd1f9d963cf2a380..16ee1f4be3ff3d4ef03d50ae65117b5b83927560 100644 (file)
@@ -723,8 +723,13 @@ _public_ struct udev_device *udev_device_new_from_syspath(struct udev *udev, con
                         return NULL;
         } else {
                 /* everything else just needs to be a directory */
-                if (stat(path, &statbuf) != 0 || !S_ISDIR(statbuf.st_mode))
+                if (stat(path, &statbuf) != 0)
                         return NULL;
+
+                if (!S_ISDIR(statbuf.st_mode)) {
+                        errno = EISDIR;
+                        return NULL;
+                }
         }
 
         udev_device = udev_device_new(udev);