aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Krahl <robin.krahl@ireas.org>2020-01-06 13:16:00 +0100
committerRobin Krahl <robin.krahl@ireas.org>2020-01-06 13:16:00 +0100
commit2f1c76bf82619e0809a41a1df4fe0e26c6315270 (patch)
tree4d77864bf1131798e5523d067d9d6287e3b8f5ad
parent2c52393d12dbb16ce1d643cf020aff964da6ec89 (diff)
downloadlibnitrokey-2f1c76bf82619e0809a41a1df4fe0e26c6315270.tar.gz
libnitrokey-2f1c76bf82619e0809a41a1df4fe0e26c6315270.tar.bz2
device: Check for nullptr in Device::enumerate
While the fields of the hid_device_info struct should not be null, it is better to perform an explicit check before trying to construct strings from them.
-rw-r--r--device.cc18
1 files changed, 10 insertions, 8 deletions
diff --git a/device.cc b/device.cc
index bc42965..5f26d65 100644
--- a/device.cc
+++ b/device.cc
@@ -209,14 +209,16 @@ std::vector<DeviceInfo> Device::enumerate(){
auto pInfo_ = pInfo;
std::vector<DeviceInfo> res;
while (pInfo != nullptr){
- auto deviceModel = product_id_to_model(pInfo->product_id);
- if (deviceModel.has_value()) {
- std::string path(pInfo->path);
- std::wstring serialNumberW(pInfo->serial_number);
- std::wstring_convert<std::codecvt_utf8<wchar_t>> converter;
- std::string serialNumber = converter.to_bytes(serialNumberW);
- DeviceInfo info = { deviceModel.value(), path, serialNumber };
- res.push_back(info);
+ if (pInfo->path != nullptr && pInfo->serial_number != nullptr) {
+ auto deviceModel = product_id_to_model(pInfo->product_id);
+ if (deviceModel.has_value()) {
+ std::string path(pInfo->path);
+ std::wstring serialNumberW(pInfo->serial_number);
+ std::wstring_convert<std::codecvt_utf8<wchar_t>> converter;
+ std::string serialNumber = converter.to_bytes(serialNumberW);
+ DeviceInfo info = { deviceModel.value(), path, serialNumber };
+ res.push_back(info);
+ }
}
pInfo = pInfo->next;
}