Bläddra i källkod

Lagom: Adjust AK, LibCore and LibTLS to build on MacOS

Marcin Gasperowicz 5 år sedan
förälder
incheckning
9a4ee9aa1a
3 ändrade filer med 19 tillägg och 3 borttagningar
  1. 5 1
      AK/Random.h
  2. 4 2
      Libraries/LibCore/LocalServer.cpp
  3. 10 0
      Libraries/LibTLS/TLSv12.cpp

+ 5 - 1
AK/Random.h

@@ -37,13 +37,17 @@
 #    include <unistd.h>
 #endif
 
+#if defined(__APPLE__)
+#    include <sys/random.h>
+#endif
+
 namespace AK {
 
 inline void fill_with_random(void* buffer, size_t length)
 {
 #if defined(__serenity__)
     arc4random_buf(buffer, length);
-#elif defined(__linux__)
+#elif defined(__linux__) or defined(__APPLE__)
     int rc = getentropy(buffer, length);
     (void)rc;
 #endif

+ 4 - 2
Libraries/LibCore/LocalServer.cpp

@@ -31,8 +31,9 @@
 #include <sys/socket.h>
 #include <sys/stat.h>
 #include <unistd.h>
+
 #ifndef SOCK_NONBLOCK
-#include <sys/ioctl.h>
+#    include <sys/ioctl.h>
 #endif
 
 namespace Core {
@@ -111,12 +112,13 @@ bool LocalServer::listen(const String& address)
     fcntl(m_fd, F_SETFD, FD_CLOEXEC);
 #endif
     ASSERT(m_fd >= 0);
-
+#ifndef __APPLE__
     rc = fchmod(m_fd, 0600);
     if (rc < 0) {
         perror("fchmod");
         ASSERT_NOT_REACHED();
     }
+#endif
 
     auto socket_address = SocketAddress::local(address);
     auto un = socket_address.to_sockaddr_un();

+ 10 - 0
Libraries/LibTLS/TLSv12.cpp

@@ -30,6 +30,10 @@
 #include <LibCrypto/PK/Code/EMSA_PSS.h>
 #include <LibTLS/TLSv12.h>
 
+#ifndef SOCK_NONBLOCK
+#    include <sys/ioctl.h>
+#endif
+
 //#define TLS_DEBUG
 
 namespace {
@@ -701,7 +705,13 @@ TLSv12::TLSv12(Core::Object* parent, Version version)
     m_context.version = version;
     m_context.is_server = false;
     m_context.tls_buffer = ByteBuffer::create_uninitialized(0);
+#ifdef SOCK_NONBLOCK
     int fd = socket(AF_INET, SOCK_STREAM | SOCK_NONBLOCK, 0);
+#else
+    int fd = socket(AF_INET, SOCK_STREAM, 0);
+    int option = 1;
+    ioctl(fd, FIONBIO, &option);
+#endif
     if (fd < 0) {
         set_error(errno);
     } else {