Some side tracking fixing undefined behaviour and memory vulnurabilities
This commit is contained in:
@@ -27,14 +27,27 @@
|
||||
#include "libusbwrap/interface/IUsbDevice.hpp"
|
||||
|
||||
namespace libusbwrap {
|
||||
|
||||
struct usbDevice_deleter {
|
||||
void operator()(libusb_device* dev_ptr) const {
|
||||
if (nullptr != dev_ptr) {
|
||||
libusb_unref_device(dev_ptr);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
using usbDevice_ptr = std::unique_ptr<libusb_device, usbDevice_deleter>;
|
||||
|
||||
class UsbDevice : public IUsbDevice {
|
||||
public:
|
||||
explicit UsbDevice(libusb_context* ctx, libusb_device* dev);
|
||||
explicit UsbDevice(libusb_context* ctx, usbDevice_ptr dev);
|
||||
~UsbDevice() override;
|
||||
|
||||
// delete copy ctor and assignment
|
||||
UsbDevice(const UsbDevice&) = delete;
|
||||
UsbDevice& operator=(UsbDevice&) = delete;
|
||||
UsbDevice(const UsbDevice&) = delete;
|
||||
UsbDevice& operator=(const UsbDevice&) = delete;
|
||||
UsbDevice(UsbDevice&&) = delete;
|
||||
UsbDevice& operator=(UsbDevice&&) = delete;
|
||||
|
||||
bool open() override;
|
||||
void close() override;
|
||||
@@ -58,9 +71,9 @@ class UsbDevice : public IUsbDevice {
|
||||
|
||||
private:
|
||||
libusb_context* mLibusbCtx{nullptr};
|
||||
libusb_device* mLibusbDev{nullptr};
|
||||
usbDevice_ptr mLibusbDev{nullptr};
|
||||
libusb_device_handle* mLibusbDevHandle{nullptr};
|
||||
libusb_device_descriptor mLibusbDevDesc;
|
||||
libusb_device_descriptor mLibusbDevDesc{0};
|
||||
std::atomic<bool> mIsOpen = false;
|
||||
Error mLastError = Error::SUCCESS;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user