diff --git a/src/add-ons/kernel/network/protocols/icmp/icmp.cpp b/src/add-ons/kernel/network/protocols/icmp/icmp.cpp index baeffe4749..c9c190aa12 100644 --- a/src/add-ons/kernel/network/protocols/icmp/icmp.cpp +++ b/src/add-ons/kernel/network/protocols/icmp/icmp.cpp @@ -251,10 +251,17 @@ icmp_receive_data(net_buffer *buffer) case ICMP_TYPE_ECHO_REQUEST: { net_domain *domain; - if (buffer->interface != NULL) + if (buffer->interface != NULL) { domain = buffer->interface->domain; - else + + // We only reply to echo requests of our local interface; we + // don't reply to broadcast requests + if (!domain->address_module->equal_addresses( + buffer->interface->address, buffer->destination)) + break; + } else domain = sStackModule->get_domain(buffer->source->sa_family); + if (domain == NULL || domain->module == NULL) break;