From dbc13e1ea259eeeebc6b71b9e5ba72e435c9bdff Mon Sep 17 00:00:00 2001 From: Idan Horowitz Date: Tue, 20 Apr 2021 00:12:56 +0300 Subject: [PATCH] Kernel: Stop treating port 0 (ephemeral auto bind) as a privileged port Binding to port 0 is used to signal to listen() to bind to any port that is available. (in serenity's case, to the port range of 32768 to 60999, which are not privileged ports) --- Kernel/Net/IPv4Socket.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Kernel/Net/IPv4Socket.cpp b/Kernel/Net/IPv4Socket.cpp index 7aa4f7945f..0eb43c9cf5 100644 --- a/Kernel/Net/IPv4Socket.cpp +++ b/Kernel/Net/IPv4Socket.cpp @@ -112,7 +112,7 @@ KResult IPv4Socket::bind(Userspace user_address, socklen_t addr auto requested_local_port = ntohs(address.sin_port); if (!Process::current()->is_superuser()) { - if (requested_local_port < 1024) { + if (requested_local_port > 0 && requested_local_port < 1024) { dbgln("UID {} attempted to bind {} to port {}", Process::current()->uid(), class_name(), requested_local_port); return EACCES; }