aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormichael-west <michael.west@ettus.com>2014-03-07 12:23:34 -0800
committermichael-west <michael.west@ettus.com>2014-03-07 12:23:34 -0800
commit62862ecc3ed4be097d09502d57d91543f3c41bf8 (patch)
tree63f8b475788bc68a7a83761eb28ab761df2e0cfe
parent973b47c48339dbae2e125a8c8d84ef67fedc4bdf (diff)
downloaduhd-62862ecc3ed4be097d09502d57d91543f3c41bf8.tar.gz
uhd-62862ecc3ed4be097d09502d57d91543f3c41bf8.tar.bz2
uhd-62862ecc3ed4be097d09502d57d91543f3c41bf8.zip
Fix for Bug #378: rpc_client::call() dereferences NULL pointers
- Added check for empty data before write
-rw-r--r--host/lib/transport/nirio/rpc/rpc_client.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/host/lib/transport/nirio/rpc/rpc_client.cpp b/host/lib/transport/nirio/rpc/rpc_client.cpp
index c16a844c1..32a40a576 100644
--- a/host/lib/transport/nirio/rpc/rpc_client.cpp
+++ b/host/lib/transport/nirio/rpc/rpc_client.cpp
@@ -133,9 +133,12 @@ const boost::system::error_code& rpc_client::call(
CHAIN_BLOCKING_XFER(
boost::asio::write(_socket, boost::asio::buffer(&_request.header, sizeof(_request.header))),
sizeof(_request.header), status);
- CHAIN_BLOCKING_XFER(
- boost::asio::write(_socket, boost::asio::buffer(&(*_request.data.begin()), _request.data.size())),
- _request.data.size(), status);
+ if (not _request.data.empty())
+ {
+ CHAIN_BLOCKING_XFER(
+ boost::asio::write(_socket, boost::asio::buffer(&(*_request.data.begin()), _request.data.size())),
+ _request.data.size(), status);
+ }
} catch (boost::exception&) {
status = false;
}