diff --git a/src/add-ons/kernel/network/protocols/ipv4/ipv4.cpp b/src/add-ons/kernel/network/protocols/ipv4/ipv4.cpp index cfd229a575..6f224e8512 100644 --- a/src/add-ons/kernel/network/protocols/ipv4/ipv4.cpp +++ b/src/add-ons/kernel/network/protocols/ipv4/ipv4.cpp @@ -977,6 +977,9 @@ ipv4_send_routed_data(net_protocol *_protocol, struct net_route *route, bufferHeader.Detach(); } + if (buffer->size > 0xffff) + return EMSGSIZE; + TRACE(("header chksum: %ld, buffer checksum: %ld\n", gBufferModule->checksum(buffer, 0, sizeof(ipv4_header), true), gBufferModule->checksum(buffer, 0, buffer->size, true))); diff --git a/src/add-ons/kernel/network/protocols/udp/udp.cpp b/src/add-ons/kernel/network/protocols/udp/udp.cpp index c30d4a9b53..2a8007c42f 100644 --- a/src/add-ons/kernel/network/protocols/udp/udp.cpp +++ b/src/add-ons/kernel/network/protocols/udp/udp.cpp @@ -764,7 +764,7 @@ UdpEndpoint::_Deactivate() status_t UdpEndpoint::SendData(net_buffer *buffer, net_route *route) { - if (buffer->size > socket->send.buffer_size) + if (buffer->size > 0xffff) return EMSGSIZE; buffer->protocol = IPPROTO_UDP; @@ -856,9 +856,6 @@ net_protocol * udp_init_protocol(net_socket *socket) { socket->protocol = IPPROTO_UDP; - socket->send.buffer_size = 65535 - 20 - 8; - // subtract lengths of IP and UDP headers (NOTE: IP headers could be - // larger if IP options are used, but we do not currently care for that) UdpEndpoint *endpoint = new (std::nothrow) UdpEndpoint(socket); TRACE(("udp_init_protocol(%p) created endpoint %p\n", socket, endpoint));