From: Ivailo Monev Date: Fri, 29 Apr 2022 06:12:16 +0000 (+0300) Subject: kinfocenter: check libusb functions return values from usbview module X-Git-Tag: 4.22.0~611 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=6f225f84b1ef5a3836db26b48ace3dc3358d4200;p=kde%2Fkde-workspace.git kinfocenter: check libusb functions return values from usbview module Signed-off-by: Ivailo Monev --- diff --git a/kinfocenter/Modules/usbview/usbdevices.cpp b/kinfocenter/Modules/usbview/usbdevices.cpp index 6ab598e5..78f671c6 100644 --- a/kinfocenter/Modules/usbview/usbdevices.cpp +++ b/kinfocenter/Modules/usbview/usbdevices.cpp @@ -143,18 +143,29 @@ QString USBDevice::dump() { return r; } -bool USBDevice::init() { +void USBDevice::init() { _devices.clear(); struct libusb_context *libusbctx = nullptr; - libusb_init(&libusbctx); + int libusbstatus = libusb_init(&libusbctx); + if (libusbstatus != LIBUSB_SUCCESS) { + kWarning() << libusb_error_name(libusbstatus); + return; + } + struct libusb_device **libusbdevices = nullptr; const size_t libusbdevicessize = libusb_get_device_list(libusbctx, &libusbdevices); // qDebug() << Q_FUNC_INFO << libusbdevicessize; for (size_t i = 0; i < libusbdevicessize; i++) { USBDevice* device = new USBDevice(); struct libusb_device_descriptor libusbdevice; - libusb_get_device_descriptor(libusbdevices[i], &libusbdevice); + ::memset(&libusbdevice, 0, sizeof(struct libusb_device_descriptor)); + libusbstatus = libusb_get_device_descriptor(libusbdevices[i], &libusbdevice); + if (libusbstatus != LIBUSB_SUCCESS) { + kWarning() << libusb_error_name(libusbstatus); + _devices.clear(); + break; + } // qDebug() << Q_FUNC_INFO << libusbdevice.idVendor << libusbdevice.idProduct; device->_bus = libusb_get_bus_number(libusbdevices[i]); @@ -193,6 +204,4 @@ bool USBDevice::init() { } libusb_free_device_list(libusbdevices, 1); libusb_exit(libusbctx); - - return (libusbdevicessize > 0); } diff --git a/kinfocenter/Modules/usbview/usbdevices.h b/kinfocenter/Modules/usbview/usbdevices.h index 3f2d423a..b1cbc571 100644 --- a/kinfocenter/Modules/usbview/usbdevices.h +++ b/kinfocenter/Modules/usbview/usbdevices.h @@ -42,7 +42,7 @@ public: return _devices; } static USBDevice *find(int bus, int device); - static bool init(); + static void init(); private: static QList _devices;