aboutsummaryrefslogtreecommitdiffstats
path: root/libtransport/src/core/tcp_socket_connector.cc
diff options
context:
space:
mode:
authorMauro Sardara <msardara@cisco.com>2021-02-04 12:20:30 +0100
committerMauro Sardara <msardara@cisco.com>2021-02-05 09:54:15 +0100
commit8d08f8dd79ac12874ba0da6b26973f5a33163131 (patch)
tree554993ddd190183a0722112ace984f6077e0aa8e /libtransport/src/core/tcp_socket_connector.cc
parentf77f2a01fb49b52f02d6493e926d0ccc41abf4d0 (diff)
[HICN-679] Do not throw exception when receiving corrupted/not-hicn packet from network layer
Signed-off-by: Mauro Sardara <msardara@cisco.com> Change-Id: I082e3c1b5fc9f535089114cfe14940f094947b66 Signed-off-by: Mauro Sardara <msardara@cisco.com>
Diffstat (limited to 'libtransport/src/core/tcp_socket_connector.cc')
-rw-r--r--libtransport/src/core/tcp_socket_connector.cc9
1 files changed, 6 insertions, 3 deletions
diff --git a/libtransport/src/core/tcp_socket_connector.cc b/libtransport/src/core/tcp_socket_connector.cc
index 20b3d6ce6..fa029c6fc 100644
--- a/libtransport/src/core/tcp_socket_connector.cc
+++ b/libtransport/src/core/tcp_socket_connector.cc
@@ -33,6 +33,8 @@ namespace {
class NetworkMessage {
public:
static constexpr std::size_t fixed_header_length = 10;
+ static constexpr std::uint8_t ccnx_flag = 102;
+ static constexpr std::size_t ccnx_packet_length = 44;
static std::size_t decodeHeader(const uint8_t *packet) {
// General checks
@@ -40,11 +42,12 @@ class NetworkMessage {
uint8_t first_byte = packet[0];
uint8_t ip_format = (packet[0] & 0xf0) >> 4;
- if (TRANSPORT_EXPECT_FALSE(first_byte == 102)) {
+ if (TRANSPORT_EXPECT_FALSE(first_byte == ccnx_flag)) {
// Get packet length
- return 44;
+ return ccnx_packet_length;
} else if (TRANSPORT_EXPECT_TRUE(ip_format == 6 || ip_format == 4)) {
- Packet::Format format = Packet::getFormatFromBuffer(packet);
+ Packet::Format format =
+ Packet::getFormatFromBuffer(packet, fixed_header_length);
return Packet::getHeaderSizeFromBuffer(format, packet) +
Packet::getPayloadSizeFromBuffer(format, packet);
}