diff options
Diffstat (limited to 'Kernel/Net/NetworkAdapter.cpp')
-rw-r--r-- | Kernel/Net/NetworkAdapter.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/Kernel/Net/NetworkAdapter.cpp b/Kernel/Net/NetworkAdapter.cpp index b5f582d42e..9bfc025f96 100644 --- a/Kernel/Net/NetworkAdapter.cpp +++ b/Kernel/Net/NetworkAdapter.cpp @@ -33,8 +33,12 @@ void NetworkAdapter::send_packet(ReadonlyBytes packet) void NetworkAdapter::send(const MACAddress& destination, const ARPPacket& packet) { size_t size_in_bytes = sizeof(EthernetFrameHeader) + sizeof(ARPPacket); - auto buffer = NetworkByteBuffer::create_zeroed(size_in_bytes); - auto* eth = (EthernetFrameHeader*)buffer.data(); + auto buffer_result = NetworkByteBuffer::create_zeroed(size_in_bytes); + if (!buffer_result.has_value()) { + dbgln("Dropping ARP packet targeted at {} as there is not enough memory to buffer it", packet.target_hardware_address().to_string()); + return; + } + auto* eth = (EthernetFrameHeader*)buffer_result->data(); eth->set_source(mac_address()); eth->set_destination(destination); eth->set_ether_type(EtherType::ARP); |