Explorar el Código

Kernel: Return ENOPROTOOPT instead of asserting on unimplemented levels in getsockopt

Luke hace 4 años
padre
commit
ec136db592
Se han modificado 1 ficheros con 6 adiciones y 1 borrados
  1. 6 1
      Kernel/Net/Socket.cpp

+ 6 - 1
Kernel/Net/Socket.cpp

@@ -156,7 +156,12 @@ KResult Socket::getsockopt(FileDescription&, int level, int option, Userspace<vo
     if (!copy_from_user(&size, value_size.unsafe_userspace_ptr()))
         return KResult(-EFAULT);
 
-    ASSERT(level == SOL_SOCKET);
+    // FIXME: Add TCP_NODELAY, IPPROTO_TCP and IPPROTO_IP (used in OpenSSH)
+    if (level != SOL_SOCKET) {
+        // Not sure if this is the correct error code, but it's only temporary until other levels are implemented.
+        return KResult(-ENOPROTOOPT);
+    }
+
     switch (option) {
     case SO_SNDTIMEO:
         if (size < sizeof(timeval))