summaryrefslogtreecommitdiffstats
path: root/discover/udev.c
diff options
context:
space:
mode:
authorJeremy Kerr <jk@ozlabs.org>2013-11-29 13:44:54 +0800
committerJeremy Kerr <jk@ozlabs.org>2013-12-02 12:05:13 +0800
commitc4f34e487fbf061ee6385d1f75e4ef0084c9a1ba (patch)
tree0391dd15dabad5369c3505bd033b36de04b1a057 /discover/udev.c
parent9e5b77f258b8e993f480763d8e5269bd8c87b508 (diff)
downloadtalos-petitboot-c4f34e487fbf061ee6385d1f75e4ef0084c9a1ba.tar.gz
talos-petitboot-c4f34e487fbf061ee6385d1f75e4ef0084c9a1ba.zip
discover/udev: copy dev->device path from udev devnode
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>
Diffstat (limited to 'discover/udev.c')
-rw-r--r--discover/udev.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/discover/udev.c b/discover/udev.c
index 48ab745..5aa2898 100644
--- a/discover/udev.c
+++ b/discover/udev.c
@@ -105,7 +105,8 @@ static int udev_handle_dev_add(struct pb_udev *udev, struct udev_device *dev)
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);
OpenPOWER on IntegriCloud