summaryrefslogtreecommitdiffstats
path: root/host/lib/usrp/common
diff options
context:
space:
mode:
authorBen Hilburn <ben.hilburn@ettus.com>2013-11-27 12:11:23 -0800
committerBen Hilburn <ben.hilburn@ettus.com>2013-11-27 12:11:23 -0800
commit9e47ad607b597954e786db6614f5b42123184ccd (patch)
treef8f021498105c1144968c989b73e37d51d2e94f9 /host/lib/usrp/common
parent0e3912767266473e08386c910954450d16d33664 (diff)
downloaduhd-9e47ad607b597954e786db6614f5b42123184ccd.tar.gz
uhd-9e47ad607b597954e786db6614f5b42123184ccd.tar.bz2
uhd-9e47ad607b597954e786db6614f5b42123184ccd.zip
Squashed merge of Coverity fixes.
Diffstat (limited to 'host/lib/usrp/common')
-rw-r--r--host/lib/usrp/common/fx2_ctrl.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/host/lib/usrp/common/fx2_ctrl.cpp b/host/lib/usrp/common/fx2_ctrl.cpp
index 6111efea9..d68bf6058 100644
--- a/host/lib/usrp/common/fx2_ctrl.cpp
+++ b/host/lib/usrp/common/fx2_ctrl.cpp
@@ -119,6 +119,9 @@ bool parse_record(std::string *record, unsigned int &len,
std::istringstream(record->substr(3, 4)) >> std::hex >> addr;
std::istringstream(record->substr(7, 2)) >> std::hex >> type;
+ if (len > (2 * (record->length() - 9))) // sanity check to prevent buffer overrun
+ return false;
+
for (i = 0; i < len; i++) {
std::istringstream(record->substr(9 + 2 * i, 2)) >> std::hex >> val;
data[i] = (unsigned char) val;
@@ -181,6 +184,9 @@ public:
std::string record;
file >> record;
+ if (!(record.length() > 0))
+ continue;
+
//check for valid record
if (not checksum(&record) or not parse_record(&record, len, addr, type, data)) {
throw uhd::io_error("usrp_load_firmware: bad record checksum");