1
0
mirror of git://sourceware.org/git/lvm2.git synced 2025-08-02 04:22:02 +03:00

Validate udev structures

Avoid using NULL pointers from udev. It seems like some older versions of udev
were improperly returning NULL in some case, so do not silently break here,
and give at least a warning to the user.
This commit is contained in:
Zdenek Kabelac
2012-03-04 17:40:59 +00:00
parent 462de06d96
commit d18c70b4df
3 changed files with 14 additions and 6 deletions

View File

@ -509,14 +509,21 @@ static int _insert_udev_dir(struct udev *udev, const char *dir)
goto bad;
udev_list_entry_foreach(device_entry, udev_enumerate_get_list_entry(udev_enum)) {
device = udev_device_new_from_syspath(udev, udev_list_entry_get_name(device_entry));
if (!(device = udev_device_new_from_syspath(udev, udev_list_entry_get_name(device_entry)))) {
log_warn("Udev returns NULL device.");
continue;
}
node_name = udev_device_get_devnode(device);
r &= _insert(node_name, 0, 0);
if (!(node_name = udev_device_get_devnode(device)))
log_warn("Udev returns NULL devnode.");
else
r &= _insert(node_name, 0, 0);
udev_list_entry_foreach(symlink_entry, udev_device_get_devlinks_list_entry(device)) {
symlink_name = udev_list_entry_get_name(symlink_entry);
r &= _insert(symlink_name, 0, 0);
if (!(symlink_name = udev_list_entry_get_name(symlink_entry)))
log_warn("Udev returns NULL name.");
else
r &= _insert(symlink_name, 0, 0);
}
udev_device_unref(device);