From b206f98261e9c24b3eb79eb1df466719216cb178 Mon Sep 17 00:00:00 2001 From: Sepalani Date: Sun, 10 Jul 2022 14:04:03 +0400 Subject: [PATCH] Common/Network: Remove unnecessary size checks --- Source/Core/Common/Network.cpp | 36 ++++++++++++---------------------- 1 file changed, 13 insertions(+), 23 deletions(-) diff --git a/Source/Core/Common/Network.cpp b/Source/Core/Common/Network.cpp index 2f5ddd44df..f6aac99922 100644 --- a/Source/Core/Common/Network.cpp +++ b/Source/Core/Common/Network.cpp @@ -368,11 +368,9 @@ std::vector TCPPacket::Build() InsertObj(&result, eth_header); InsertObj(&result, ip_header); std::size_t offset = EthernetHeader::SIZE + IPv4Header::SIZE; - if (ipv4_options.size() > 0) - { - result.insert(result.end(), ipv4_options.begin(), ipv4_options.end()); - offset += ipv4_options.size(); - } + result.insert(result.end(), ipv4_options.begin(), ipv4_options.end()); + offset += ipv4_options.size(); + tcp_header.checksum = 0; const u16 props = (ntohs(tcp_header.properties) & 0xfff) | (static_cast((tcp_options.size() + TCPHeader::SIZE) & 0x3c) << 10); @@ -381,15 +379,11 @@ std::vector TCPPacket::Build() result.insert(result.end(), tcp_ptr, tcp_ptr + TCPHeader::SIZE); const std::size_t tcp_offset = offset; offset += TCPHeader::SIZE; - if (tcp_options.size() > 0) - { - result.insert(result.end(), tcp_options.begin(), tcp_options.end()); - offset += tcp_options.size(); - } - if (data.size() > 0) - { - result.insert(result.end(), data.begin(), data.end()); - } + result.insert(result.end(), tcp_options.begin(), tcp_options.end()); + offset += tcp_options.size(); + + result.insert(result.end(), data.begin(), data.end()); + tcp_header.checksum = ComputeTCPNetworkChecksum( ip_header.source_addr, ip_header.destination_addr, &result[tcp_offset], static_cast(result.size() - tcp_offset), IPPROTO_TCP); @@ -426,20 +420,16 @@ std::vector UDPPacket::Build() InsertObj(&result, eth_header); InsertObj(&result, ip_header); std::size_t offset = EthernetHeader::SIZE + IPv4Header::SIZE; - if (ipv4_options.size() > 0) - { - result.insert(result.end(), ipv4_options.begin(), ipv4_options.end()); - offset += ipv4_options.size(); - } + result.insert(result.end(), ipv4_options.begin(), ipv4_options.end()); + offset += ipv4_options.size(); + udp_header.checksum = 0; const u8* udp_ptr = reinterpret_cast(&udp_header); result.insert(result.end(), udp_ptr, udp_ptr + UDPHeader::SIZE); const std::size_t udp_offset = offset; offset += UDPHeader::SIZE; - if (data.size() > 0) - { - result.insert(result.end(), data.begin(), data.end()); - } + result.insert(result.end(), data.begin(), data.end()); + udp_header.checksum = ComputeTCPNetworkChecksum( ip_header.source_addr, ip_header.destination_addr, &result[udp_offset], static_cast(result.size() - udp_offset), IPPROTO_UDP);