Selaa lähdekoodia

Kernel: Make sure outgoing ICMP packets have the correct checksum

The internet_checksum() function relies on the buffer - or at least the
checksum field - to be all zeroes.
Gunnar Beutner 4 vuotta sitten
vanhempi
commit
7f7897c900
1 muutettua tiedostoa jossa 1 lisäystä ja 0 poistoa
  1. 1 0
      Kernel/Net/NetworkTask.cpp

+ 1 - 0
Kernel/Net/NetworkTask.cpp

@@ -253,6 +253,7 @@ void handle_icmp(const EthernetFrameHeader& eth, const IPv4Packet& ipv4_packet,
             return;
         }
         adapter->fill_in_ipv4_header(*packet, adapter->ipv4_address(), eth.source(), ipv4_packet.source(), IPv4Protocol::ICMP, icmp_packet_size, 64);
+        memset(packet->buffer.data() + ipv4_payload_offset, 0, sizeof(ICMPEchoPacket));
         auto& response = *(ICMPEchoPacket*)(packet->buffer.data() + ipv4_payload_offset);
         response.header.set_type(ICMPType::EchoReply);
         response.header.set_code(0);