瀏覽代碼

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)
Idan Horowitz 4 年之前
父節點
當前提交
dbc13e1ea2
共有 1 個文件被更改,包括 1 次插入1 次删除
  1. 1 1
      Kernel/Net/IPv4Socket.cpp

+ 1 - 1
Kernel/Net/IPv4Socket.cpp

@@ -112,7 +112,7 @@ KResult IPv4Socket::bind(Userspace<const sockaddr*> user_address, socklen_t addr
 
 
     auto requested_local_port = ntohs(address.sin_port);
     auto requested_local_port = ntohs(address.sin_port);
     if (!Process::current()->is_superuser()) {
     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);
             dbgln("UID {} attempted to bind {} to port {}", Process::current()->uid(), class_name(), requested_local_port);
             return EACCES;
             return EACCES;
         }
         }