diff options
author | Szczepan Zalega <szczepan@nitrokey.com> | 2017-03-07 11:37:41 +0100 |
---|---|---|
committer | Szczepan Zalega <szczepan@nitrokey.com> | 2017-03-11 15:41:52 +0100 |
commit | 257062b9a5130cf25dfd26d4ec93880abde1c9ce (patch) | |
tree | a84ccaa669d60e860a97bee9250c4f5c8cf25ec3 /device.cc | |
parent | 1b1a3211faa806d656b0ebb50864348c595857ed (diff) | |
download | libnitrokey-257062b9a5130cf25dfd26d4ec93880abde1c9ce.tar.gz libnitrokey-257062b9a5130cf25dfd26d4ec93880abde1c9ce.tar.bz2 |
Check for null device reference in case of failed reconnection
Signed-off-by: Szczepan Zalega <szczepan@nitrokey.com>
Diffstat (limited to 'device.cc')
-rw-r--r-- | device.cc | 20 |
1 files changed, 9 insertions, 11 deletions
@@ -77,14 +77,13 @@ int Device::send(const void *packet) { std::lock_guard<std::mutex> lock(mex_dev_com); LOG(std::string(__FUNCTION__) + std::string(" *IN* "), Loglevel::DEBUG_L2); - if (mp_devhandle == nullptr) { - LOG(std::string("Connection fail") , Loglevel::DEBUG_L2); - throw DeviceNotConnected("Attempted HID send on an invalid descriptor."); - } - int send_feature_report = -1; for (int i = 0; i < 3 && send_feature_report < 0; ++i) { + if (mp_devhandle == nullptr) { + LOG(std::string("Connection fail") , Loglevel::DEBUG_L2); + throw DeviceNotConnected("Attempted HID send on an invalid descriptor."); + } send_feature_report = hid_send_feature_report( mp_devhandle, (const unsigned char *)(packet), HID_REPORT_SIZE); if (send_feature_report < 0) _reconnect(); @@ -101,13 +100,12 @@ int Device::recv(void *packet) { int status; int retry_count = 0; - - if (mp_devhandle == nullptr){ - LOG(std::string("Connection fail") , Loglevel::DEBUG_L2); - throw DeviceNotConnected("Attempted HID receive on an invalid descriptor."); - } - for (;;) { + if (mp_devhandle == nullptr){ + LOG(std::string("Connection fail") , Loglevel::DEBUG_L2); + throw DeviceNotConnected("Attempted HID receive on an invalid descriptor."); + } + status = (hid_get_feature_report(mp_devhandle, (unsigned char *)(packet), HID_REPORT_SIZE)); |