[PATCH 0/2] MR8550: winebus.sys: Mind potential udev_device_get_subsystem error, don't leak fd.
For the first patch, I observed a crash on accessing this system being NULL on one game's hang log. I don't know if that is the actual problem or consequences of something else from the info I've got, but the check looks like the right thing to do: documentation [1] lists NULL as possible error return. 1. https://manpages.debian.org/stretch/libudev-dev/udev_device_get_subsystem.3.... -- https://gitlab.winehq.org/wine/wine/-/merge_requests/8550
From: Paul Gofman <pgofman(a)codeweavers.com> --- dlls/winebus.sys/bus_udev.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/dlls/winebus.sys/bus_udev.c b/dlls/winebus.sys/bus_udev.c index e35cd9d3281..ca96c80a0d1 100644 --- a/dlls/winebus.sys/bus_udev.c +++ b/dlls/winebus.sys/bus_udev.c @@ -1233,7 +1233,13 @@ static void udev_add_device(struct udev_device *dev, int fd) get_device_subsystem_info(dev, "usb", "usb_device", &desc, &bus); if (bus == BUS_BLUETOOTH) desc.is_bluetooth = TRUE; - subsystem = udev_device_get_subsystem(dev); + if (!(subsystem = udev_device_get_subsystem(dev))) + { + WARN("udev_device_get_subsystem failed for %s.\n", debugstr_a(devnode)); + close(fd); + return; + } + if (!strcmp(subsystem, "hidraw")) { static const WCHAR hidraw[] = {'h','i','d','r','a','w',0}; -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/8550
From: Paul Gofman <pgofman(a)codeweavers.com> --- dlls/winebus.sys/bus_udev.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/dlls/winebus.sys/bus_udev.c b/dlls/winebus.sys/bus_udev.c index ca96c80a0d1..39b810b7588 100644 --- a/dlls/winebus.sys/bus_udev.c +++ b/dlls/winebus.sys/bus_udev.c @@ -1332,6 +1332,10 @@ static void udev_add_device(struct udev_device *dev, int fd) bus_event_queue_device_created(&event_queue, &impl->unix_device, &desc); } #endif + else + { + close(fd); + } } #ifdef HAVE_SYS_INOTIFY_H -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/8550
This merge request was approved by Rémi Bernon. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/8550
participants (3)
-
Paul Gofman -
Paul Gofman (@gofman) -
Rémi Bernon