diff options
-rw-r--r-- | udev_sysfs.c | 20 | ||||
-rw-r--r-- | udevinfo.c | 4 |
2 files changed, 14 insertions, 10 deletions
diff --git a/udev_sysfs.c b/udev_sysfs.c index 6e6f16c16f..34ae9ac14f 100644 --- a/udev_sysfs.c +++ b/udev_sysfs.c @@ -155,9 +155,21 @@ struct sysfs_device *sysfs_device_get(const char *devpath) int len; char *pos; + /* we handle only these devpathes */ + if (devpath != NULL && + strncmp(devpath, "/devices/", 9) != 0 && + strncmp(devpath, "/subsystem/", 11) != 0 && + strncmp(devpath, "/module/", 8) != 0 && + strncmp(devpath, "/bus/", 5) != 0 && + strncmp(devpath, "/class/", 7) != 0 && + strncmp(devpath, "/block/", 7) != 0) + return NULL; + dbg("open '%s'", devpath); strlcpy(devpath_real, devpath, sizeof(devpath_real)); remove_trailing_chars(devpath_real, '/'); + if (devpath[0] == '\0' ) + return NULL; /* look for device already in cache (we never put an untranslated path in the cache) */ list_for_each_entry(dev_loop, &dev_list, node) { @@ -275,14 +287,6 @@ struct sysfs_device *sysfs_device_get_parent(struct sysfs_device *dev) if (dev->parent != NULL) return dev->parent; - /* requesting a parent is only valid for these devpathes */ - if ((strncmp(dev->devpath, "/devices/", 9) != 0) && - (strncmp(dev->devpath, "/subsystem/", 11) != 0) && - (strncmp(dev->devpath, "/bus/", 5) != 0) && - (strncmp(dev->devpath, "/class/", 7) != 0) && - (strncmp(dev->devpath, "/block/", 7) != 0)) - return NULL; - strlcpy(parent_devpath, dev->devpath, sizeof(parent_devpath)); dbg("'%s'", parent_devpath); diff --git a/udevinfo.c b/udevinfo.c index cda229244d..82057de54c 100644 --- a/udevinfo.c +++ b/udevinfo.c @@ -413,7 +413,7 @@ int main(int argc, char *argv[], char *envp[]) case ACTION_ATTRIBUTE_WALK: if (path[0] != '\0') { if (print_device_chain(path) != 0) { - fprintf(stderr, "device not found\n"); + fprintf(stderr, "no valid sysfs device found\n"); rc = 4; goto exit; } @@ -424,7 +424,7 @@ int main(int argc, char *argv[], char *envp[]) goto exit; } if (print_device_chain(udev->dev->devpath) != 0) { - fprintf(stderr, "device not found\n"); + fprintf(stderr, "no valid sysfs device found\n"); rc = 4; goto exit; } |