From 55fd590f3eac63f97433b68ae415027c7ff41f71 Mon Sep 17 00:00:00 2001 From: Nicholas Corgan Date: Tue, 11 Feb 2014 12:25:06 -0800 Subject: usb: better processing of strings from libusb * When overwriting a string field with a shorter string, libusb doesn't erase extra characters * Extra processing of this string (already done by load_eeprom) removes extraneous characters --- host/lib/transport/libusb1_base.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/host/lib/transport/libusb1_base.cpp b/host/lib/transport/libusb1_base.cpp index 8bd0f4354..23117f128 100644 --- a/host/lib/transport/libusb1_base.cpp +++ b/host/lib/transport/libusb1_base.cpp @@ -21,6 +21,7 @@ #include #include #include +#include #include #include #include @@ -184,7 +185,14 @@ public: ); if (ret < 0) return ""; //on error, just return empty string - return std::string((char *)buff, ret); + std::string string_descriptor((char *)buff, ret); + byte_vector_t string_vec(string_descriptor.begin(), string_descriptor.end()); + std::string out; + BOOST_FOREACH(boost::uint8_t byte, string_vec){ + if (byte < 32 or byte > 127) return out; + out += byte; + } + return out; } private: -- cgit v1.2.3