We're seeing a use-after-free, as the udev path is freed before the
discover device.
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
ddev = discover_device_create(udev->handler, name);
ddev = discover_device_create(udev->handler, name);
- ddev->device_path = udev_device_get_devnode(dev);
+ ddev->device_path = talloc_strdup(ddev, udev_device_get_devnode(dev));
+
prop = udev_device_get_property_value(dev, "ID_FS_UUID");
if (prop)
ddev->uuid = talloc_strdup(ddev, prop);
prop = udev_device_get_property_value(dev, "ID_FS_UUID");
if (prop)
ddev->uuid = talloc_strdup(ddev, prop);