diff options
author | Jeremy Kerr <jk@ozlabs.org> | 2013-11-29 13:44:54 +0800 |
---|---|---|
committer | Jeremy Kerr <jk@ozlabs.org> | 2013-12-02 12:05:13 +0800 |
commit | c4f34e487fbf061ee6385d1f75e4ef0084c9a1ba (patch) | |
tree | 0391dd15dabad5369c3505bd033b36de04b1a057 /discover/udev.c | |
parent | 9e5b77f258b8e993f480763d8e5269bd8c87b508 (diff) | |
download | talos-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.c | 3 |
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); |