Quellcode durchsuchen

Simplfy odd check on UDP checksum

Signed-off-by: Martin Melik Merkumians <melik-merkumians@acin.tuwien.ac.at>
Martin Melik Merkumians vor 5 Jahren
Ursprung
Commit
ea485682f0
2 geänderte Dateien mit 4 neuen und 3 gelöschten Zeilen
  1. 3 2
      source/src/ports/udp_protocol.c
  2. 1 1
      source/tests/ports/udp_protocol_tests.cpp

+ 3 - 2
source/src/ports/udp_protocol.c

@@ -67,12 +67,13 @@ uint16_t UDPHeaderCalculateChecksum(const void *udp_packet,
   const uint16_t *udp_packet_words = udp_packet;
   uint_fast32_t checksum = 0; /**< Carry bit access is needed (17th bit) */
 
-  for( uint16_t i = udp_packet_length; i > 1; i = i - 2 ) {
+  uint16_t i = udp_packet_length;
+  for(; i > 1; i = i - 2 ) {
     checksum +=  *udp_packet_words;
     udp_packet_words++;
   }
 
-  if (udp_packet_length % 2) {
+  if (i > 0) {
     checksum += (*( ( (uint8_t *)udp_packet_words ) + 1 ) << 8);
   }
 

+ 1 - 1
source/tests/ports/udp_protocol_tests.cpp

@@ -79,7 +79,7 @@ TEST(UdpProtocol, HeaderGenerate) {
   CHECK_EQUAL( htons(0xaf8e), *( ( (uint16_t *)message ) + 3 ) );
 }
 
-IGNORE_TEST(UdpProtocol, CalculateChecksum) {
+TEST(UdpProtocol, CalculateChecksum) {
   char message[OPENER_UDP_HEADER_LENGTH + 13];
   memset(message, 0, OPENER_UDP_HEADER_LENGTH + 13);
   UDPHeader header = {0};