diff options
author | Martin Braun <martin.braun@ettus.com> | 2020-01-23 11:02:15 -0800 |
---|---|---|
committer | atrnati <54334261+atrnati@users.noreply.github.com> | 2020-02-04 08:53:01 -0600 |
commit | 4b1d346a80f860ebcf26712b721606c19dd904dd (patch) | |
tree | 31ee6a6a42ffdf3623b8695cfa17cec5f8adebf8 /host/lib/usrp_clock/octoclock/octoclock_eeprom.cpp | |
parent | 22db12c4b2b55225801ec1efb2465c7a06295b9e (diff) | |
download | uhd-4b1d346a80f860ebcf26712b721606c19dd904dd.tar.gz uhd-4b1d346a80f860ebcf26712b721606c19dd904dd.tar.bz2 uhd-4b1d346a80f860ebcf26712b721606c19dd904dd.zip |
octoclock: Avoid usage of uninitialized memory
The Octoclock host code would send uninitialized memory over the
network, which would be flagged by tools such as Valgrind. This patch
creates a factory function for OctoClock packets that initializes the
memory to zero, defaults the proto version to the OctoClock default, and
can provide a random sequence number if none is given.
Diffstat (limited to 'host/lib/usrp_clock/octoclock/octoclock_eeprom.cpp')
-rw-r--r-- | host/lib/usrp_clock/octoclock/octoclock_eeprom.cpp | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/host/lib/usrp_clock/octoclock/octoclock_eeprom.cpp b/host/lib/usrp_clock/octoclock/octoclock_eeprom.cpp index 349d704f3..ad6d9c7db 100644 --- a/host/lib/usrp_clock/octoclock/octoclock_eeprom.cpp +++ b/host/lib/usrp_clock/octoclock/octoclock_eeprom.cpp @@ -6,6 +6,7 @@ // #include "common.h" +#include "octoclock_impl.hpp" #include <uhd/exception.hpp> #include <uhd/transport/udp_simple.hpp> #include <uhd/types/byte_vector.hpp> @@ -15,7 +16,6 @@ #include <uhd/utils/byteswap.hpp> #include <boost/asio.hpp> #include <boost/assign/list_of.hpp> -#include <iostream> typedef boost::asio::ip::address_v4 ip_v4; @@ -34,11 +34,8 @@ void octoclock_eeprom_t::_load() const octoclock_fw_eeprom_t* eeprom_in = reinterpret_cast<const octoclock_fw_eeprom_t*>(pkt_in->data); - octoclock_packet_t pkt_out; - // To avoid replicating sequence numbers between sessions - pkt_out.sequence = uint32_t(std::rand()); - size_t len = 0; - + auto pkt_out = make_octoclock_packet(); + size_t len = 0; UHD_OCTOCLOCK_SEND_AND_RECV( xport, _proto_ver, SEND_EEPROM_CMD, pkt_out, len, octoclock_data); if (UHD_OCTOCLOCK_PACKET_MATCHES(SEND_EEPROM_ACK, pkt_out, pkt_in, len)) { @@ -86,11 +83,9 @@ void octoclock_eeprom_t::_store() const const octoclock_packet_t* pkt_in = reinterpret_cast<const octoclock_packet_t*>(octoclock_data); - octoclock_packet_t pkt_out; - // To avoid replicating sequence numbers between sessions - pkt_out.sequence = uint32_t(std::rand()); - pkt_out.len = sizeof(octoclock_fw_eeprom_t); - size_t len = 0; + auto pkt_out = make_octoclock_packet(); + pkt_out.len = sizeof(octoclock_fw_eeprom_t); + size_t len = 0; octoclock_fw_eeprom_t* eeprom_out = reinterpret_cast<octoclock_fw_eeprom_t*>(&pkt_out.data); |