mirror of
https://github.com/gnss-sdr/gnss-sdr
synced 2024-12-14 04:00:34 +00:00
Fix error handling issues detected by Coverity Scan 2020.09
This commit is contained in:
parent
419eff9424
commit
2f627581ef
@ -59,7 +59,10 @@ bool Monitor_Pvt_Udp_Sink::write_monitor_pvt(const Monitor_Pvt* const monitor_pv
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
socket.send(boost::asio::buffer(outbound_data));
|
if (socket.send(boost::asio::buffer(outbound_data)) == 0)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch (boost::system::system_error const& e)
|
catch (boost::system::system_error const& e)
|
||||||
{
|
{
|
||||||
|
@ -92,6 +92,8 @@ TwoBitPackedFileSignalSource::TwoBitPackedFileSignalSource(
|
|||||||
item_size_ = sizeof(char);
|
item_size_ = sizeof(char);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
reverse_interleaving_ = false;
|
||||||
|
is_complex_ = true;
|
||||||
if (sample_type_ == "real")
|
if (sample_type_ == "real")
|
||||||
{
|
{
|
||||||
is_complex_ = false;
|
is_complex_ = false;
|
||||||
@ -99,7 +101,6 @@ TwoBitPackedFileSignalSource::TwoBitPackedFileSignalSource(
|
|||||||
else if (sample_type_ == "iq")
|
else if (sample_type_ == "iq")
|
||||||
{
|
{
|
||||||
is_complex_ = true;
|
is_complex_ = true;
|
||||||
reverse_interleaving_ = false;
|
|
||||||
}
|
}
|
||||||
else if (sample_type_ == "qi")
|
else if (sample_type_ == "qi")
|
||||||
{
|
{
|
||||||
|
@ -32,6 +32,9 @@ boost::system::error_code rtl_tcp_command(RTL_TCP_COMMAND id, unsigned param, bo
|
|||||||
std::memcpy(&data[1], &nparam, sizeof(nparam));
|
std::memcpy(&data[1], &nparam, sizeof(nparam));
|
||||||
|
|
||||||
boost::system::error_code ec;
|
boost::system::error_code ec;
|
||||||
socket.send(boost::asio::buffer(data), 0, ec);
|
if (socket.send(boost::asio::buffer(data), 0, ec) == 0)
|
||||||
|
{
|
||||||
|
// 0 bytes sent
|
||||||
|
}
|
||||||
return ec;
|
return ec;
|
||||||
}
|
}
|
||||||
|
@ -35,8 +35,8 @@ boost::system::error_code Rtl_Tcp_Dongle_Info::read(boost::asio::ip::tcp::socket
|
|||||||
boost::system::error_code ec;
|
boost::system::error_code ec;
|
||||||
|
|
||||||
unsigned char data[sizeof(char) * 4 + sizeof(uint32_t) * 2];
|
unsigned char data[sizeof(char) * 4 + sizeof(uint32_t) * 2];
|
||||||
socket.receive(boost::asio::buffer(data), 0, ec);
|
size_t received_bits = socket.receive(boost::asio::buffer(data), 0, ec);
|
||||||
if (!ec)
|
if (!ec && (received_bits > 0))
|
||||||
{
|
{
|
||||||
std::memcpy(magic_, data, 4);
|
std::memcpy(magic_, data, 4);
|
||||||
|
|
||||||
@ -46,7 +46,7 @@ boost::system::error_code Rtl_Tcp_Dongle_Info::read(boost::asio::ip::tcp::socket
|
|||||||
tuner_type_ = boost::asio::detail::socket_ops::network_to_host_long(type);
|
tuner_type_ = boost::asio::detail::socket_ops::network_to_host_long(type);
|
||||||
|
|
||||||
uint32_t count;
|
uint32_t count;
|
||||||
std ::memcpy(&count, &data[8], 4);
|
std::memcpy(&count, &data[8], 4);
|
||||||
|
|
||||||
tuner_gain_count_ = boost::asio::detail::socket_ops::network_to_host_long(count);
|
tuner_gain_count_ = boost::asio::detail::socket_ops::network_to_host_long(count);
|
||||||
}
|
}
|
||||||
|
@ -66,10 +66,16 @@ void Tcp_Communication::send_receive_tcp_packet_galileo_e1(boost::array<float, N
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
// Send a TCP packet
|
// Send a TCP packet
|
||||||
tcp_socket_.write_some(boost::asio::buffer(buf));
|
if (tcp_socket_.write_some(boost::asio::buffer(buf)) == 0)
|
||||||
|
{
|
||||||
|
std::cerr << "Tcp_Communication: Error sending TCP packet\n";
|
||||||
|
}
|
||||||
|
|
||||||
// Read the received TCP packet
|
// Read the received TCP packet
|
||||||
tcp_socket_.read_some(boost::asio::buffer(readbuf));
|
if (tcp_socket_.read_some(boost::asio::buffer(readbuf)) == 0)
|
||||||
|
{
|
||||||
|
std::cerr << "Tcp_Communication: Error reading TCP packet\n";
|
||||||
|
}
|
||||||
|
|
||||||
//! Control. The GNSS-SDR program ends if an error in a TCP packet is detected.
|
//! Control. The GNSS-SDR program ends if an error in a TCP packet is detected.
|
||||||
if (d_control_id_ != readbuf.data()[0])
|
if (d_control_id_ != readbuf.data()[0])
|
||||||
@ -100,10 +106,16 @@ void Tcp_Communication::send_receive_tcp_packet_gps_l1_ca(boost::array<float, NU
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
// Send a TCP packet
|
// Send a TCP packet
|
||||||
tcp_socket_.write_some(boost::asio::buffer(buf));
|
if (tcp_socket_.write_some(boost::asio::buffer(buf)) == 0)
|
||||||
|
{
|
||||||
|
std::cerr << "Tcp_Communication error sending TCP packet\n";
|
||||||
|
}
|
||||||
|
|
||||||
// Read the received TCP packet
|
// Read the received TCP packet
|
||||||
tcp_socket_.read_some(boost::asio::buffer(readbuf));
|
if (tcp_socket_.read_some(boost::asio::buffer(readbuf)) == 0)
|
||||||
|
{
|
||||||
|
std::cerr << "Tcp_Communication error: reading 0 bytes from TCP packet\n";
|
||||||
|
}
|
||||||
|
|
||||||
//! Control. The GNSS-SDR program ends if an error in a TCP packet is detected.
|
//! Control. The GNSS-SDR program ends if an error in a TCP packet is detected.
|
||||||
if (d_control_id_ != readbuf.data()[0])
|
if (d_control_id_ != readbuf.data()[0])
|
||||||
@ -122,6 +134,10 @@ void Tcp_Communication::send_receive_tcp_packet_gps_l1_ca(boost::array<float, NU
|
|||||||
std::cerr << "Exception: " << e.what() << ". Please press Ctrl+C to end the program.\n";
|
std::cerr << "Exception: " << e.what() << ". Please press Ctrl+C to end the program.\n";
|
||||||
std::cin >> controlc;
|
std::cin >> controlc;
|
||||||
}
|
}
|
||||||
|
catch (...)
|
||||||
|
{
|
||||||
|
std::cerr << "Exception reading TCP data\n";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -57,10 +57,14 @@ bool Gnss_Synchro_Udp_Sink::write_gnss_synchro(const std::vector<Gnss_Synchro>&
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
socket.send(boost::asio::buffer(outbound_data));
|
if (socket.send(boost::asio::buffer(outbound_data)) == 0)
|
||||||
|
{
|
||||||
|
std::cerr << "Gnss_Synchro_Udp_Sink sent 0 bytes\n";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch (boost::system::system_error const& e)
|
catch (boost::system::system_error const& e)
|
||||||
{
|
{
|
||||||
|
std::cerr << e.what() << '\n';
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -326,7 +326,7 @@ void TcpCmdInterface::run_cmd_server(int tcp_port)
|
|||||||
acceptor.accept(socket, not_throw);
|
acceptor.accept(socket, not_throw);
|
||||||
if (not_throw)
|
if (not_throw)
|
||||||
{
|
{
|
||||||
std::cout << "TcpCmdInterface: Error when binding the port in the socket\n";
|
std::cerr << "TcpCmdInterface: Error when binding the port in the socket\n";
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -336,7 +336,10 @@ void TcpCmdInterface::run_cmd_server(int tcp_port)
|
|||||||
{
|
{
|
||||||
std::string response;
|
std::string response;
|
||||||
boost::asio::streambuf b;
|
boost::asio::streambuf b;
|
||||||
boost::asio::read_until(socket, b, '\n', error);
|
if (boost::asio::read_until(socket, b, '\n', error) == 0)
|
||||||
|
{
|
||||||
|
std::cerr << "TcpCmdInterface: Error reading messages: " << error.message() << '\n';
|
||||||
|
}
|
||||||
std::istream is(&b);
|
std::istream is(&b);
|
||||||
std::string line;
|
std::string line;
|
||||||
std::getline(is, line);
|
std::getline(is, line);
|
||||||
@ -352,7 +355,10 @@ void TcpCmdInterface::run_cmd_server(int tcp_port)
|
|||||||
{
|
{
|
||||||
error = boost::asio::error::eof;
|
error = boost::asio::error::eof;
|
||||||
// send cmd response
|
// send cmd response
|
||||||
socket.write_some(boost::asio::buffer("OK\n"), not_throw);
|
if (socket.write_some(boost::asio::buffer("OK\n"), not_throw) == 0)
|
||||||
|
{
|
||||||
|
std::cerr << "Error: 0 bytes sent in cmd response\n";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -374,10 +380,13 @@ void TcpCmdInterface::run_cmd_server(int tcp_port)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// send cmd response
|
// send cmd response
|
||||||
socket.write_some(boost::asio::buffer(response), not_throw);
|
if (socket.write_some(boost::asio::buffer(response), not_throw) == 0)
|
||||||
|
{
|
||||||
|
std::cerr << "Error: 0 bytes sent in cmd response\n";
|
||||||
|
}
|
||||||
if (not_throw)
|
if (not_throw)
|
||||||
{
|
{
|
||||||
std::cout << "Error sending(" << not_throw.value() << "): " << not_throw.message() << '\n';
|
std::cerr << "Error sending(" << not_throw.value() << "): " << not_throw.message() << '\n';
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -385,11 +394,11 @@ void TcpCmdInterface::run_cmd_server(int tcp_port)
|
|||||||
|
|
||||||
if (error == boost::asio::error::eof)
|
if (error == boost::asio::error::eof)
|
||||||
{
|
{
|
||||||
std::cout << "TcpCmdInterface: EOF detected\n";
|
std::cerr << "TcpCmdInterface: EOF detected\n";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
std::cout << "TcpCmdInterface unexpected error: " << error << '\n';
|
std::cerr << "TcpCmdInterface unexpected error: " << error << '\n';
|
||||||
}
|
}
|
||||||
|
|
||||||
// Close socket
|
// Close socket
|
||||||
@ -397,16 +406,16 @@ void TcpCmdInterface::run_cmd_server(int tcp_port)
|
|||||||
}
|
}
|
||||||
catch (const boost::exception &e)
|
catch (const boost::exception &e)
|
||||||
{
|
{
|
||||||
std::cout << "TcpCmdInterface: Boost exception\n";
|
std::cerr << "TcpCmdInterface: Boost exception\n";
|
||||||
}
|
}
|
||||||
catch (const std::exception &ex)
|
catch (const std::exception &ex)
|
||||||
{
|
{
|
||||||
std::cout << "TcpCmdInterface: Exception " << ex.what() << '\n';
|
std::cerr << "TcpCmdInterface: Exception " << ex.what() << '\n';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (const boost::exception &e)
|
catch (const boost::exception &e)
|
||||||
{
|
{
|
||||||
std::cout << "TCP Command Interface exception: address already in use\n";
|
std::cerr << "TCP Command Interface exception: address already in use\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user