1
0
mirror of https://github.com/gnss-sdr/gnss-sdr synced 2024-06-14 01:06:51 +00:00

Fix error handling issues detected by Coverity Scan 2020.09

This commit is contained in:
Carles Fernandez 2021-01-25 13:35:47 +01:00
parent 419eff9424
commit 2f627581ef
No known key found for this signature in database
GPG Key ID: 4C583C52B0C3877D
7 changed files with 57 additions and 21 deletions

View File

@ -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)
{ {

View File

@ -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")
{ {

View File

@ -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;
} }

View File

@ -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);
} }

View File

@ -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";
}
} }

View File

@ -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;
} }
} }

View File

@ -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";
} }
} }