From b3e1cc6552b1b837ab36d7bb2a847c3af7342eca Mon Sep 17 00:00:00 2001 From: shawnc722 Date: Thu, 29 Apr 2021 02:00:47 -0400 Subject: [PATCH] Fix invalid serial numbers crashing the python interface. (cherry picked from commit a5ff98940cbe2e91ecaf2445febd87e373f35723) --- .../SteelSeriesController/SteelSeriesOldApexController.cpp | 7 ++++++- .../SteelSeriesController/SteelSeriesRivalController.cpp | 7 ++++++- .../SteelSeriesController/SteelSeriesSenseiController.cpp | 6 +++++- .../SteelSeriesController/SteelSeriesSiberiaController.cpp | 7 ++++++- 4 files changed, 23 insertions(+), 4 deletions(-) diff --git a/Controllers/SteelSeriesController/SteelSeriesOldApexController.cpp b/Controllers/SteelSeriesController/SteelSeriesOldApexController.cpp index afcbd999..91b3ffb6 100644 --- a/Controllers/SteelSeriesController/SteelSeriesOldApexController.cpp +++ b/Controllers/SteelSeriesController/SteelSeriesOldApexController.cpp @@ -66,7 +66,12 @@ char* SteelSeriesOldApexController::GetDeviceName() std::string SteelSeriesOldApexController::GetSerialString() { wchar_t serial_string[128]; - hid_get_serial_number_string(dev, serial_string, 128); + int ret = hid_get_serial_number_string(dev, serial_string, 128); + + if (ret != 0) + { + return(""); + } std::wstring return_wstring = serial_string; std::string return_string(return_wstring.begin(), return_wstring.end()); diff --git a/Controllers/SteelSeriesController/SteelSeriesRivalController.cpp b/Controllers/SteelSeriesController/SteelSeriesRivalController.cpp index b4b6e3af..4e4881ae 100644 --- a/Controllers/SteelSeriesController/SteelSeriesRivalController.cpp +++ b/Controllers/SteelSeriesController/SteelSeriesRivalController.cpp @@ -57,7 +57,12 @@ char* SteelSeriesRivalController::GetDeviceName() std::string SteelSeriesRivalController::GetSerialString() { wchar_t serial_string[128]; - hid_get_serial_number_string(dev, serial_string, 128); + int ret = hid_get_serial_number_string(dev, serial_string, 128); + + if (ret != 0) + { + return(""); + } std::wstring return_wstring = serial_string; std::string return_string(return_wstring.begin(), return_wstring.end()); diff --git a/Controllers/SteelSeriesController/SteelSeriesSenseiController.cpp b/Controllers/SteelSeriesController/SteelSeriesSenseiController.cpp index 0b6416fc..f927fda3 100644 --- a/Controllers/SteelSeriesController/SteelSeriesSenseiController.cpp +++ b/Controllers/SteelSeriesController/SteelSeriesSenseiController.cpp @@ -57,7 +57,11 @@ char* SteelSeriesSenseiController::GetDeviceName() std::string SteelSeriesSenseiController::GetSerialString() { wchar_t serial_string[128]; - hid_get_serial_number_string(dev, serial_string, 128); + int ret = hid_get_serial_number_string(dev, serial_string, 128); + if (ret != 0) + { + return(""); + } std::wstring return_wstring = serial_string; std::string return_string(return_wstring.begin(), return_wstring.end()); diff --git a/Controllers/SteelSeriesController/SteelSeriesSiberiaController.cpp b/Controllers/SteelSeriesController/SteelSeriesSiberiaController.cpp index 49e0ef62..cca454ae 100644 --- a/Controllers/SteelSeriesController/SteelSeriesSiberiaController.cpp +++ b/Controllers/SteelSeriesController/SteelSeriesSiberiaController.cpp @@ -61,7 +61,12 @@ char* SteelSeriesSiberiaController::GetDeviceName() std::string SteelSeriesSiberiaController::GetSerialString() { wchar_t serial_string[128]; - hid_get_serial_number_string(dev, serial_string, 128); + int ret = hid_get_serial_number_string(dev, serial_string, 128); + + if (ret != 0) + { + return(""); + } std::wstring return_wstring = serial_string; std::string return_string(return_wstring.begin(), return_wstring.end());