Jelajahi Sumber

LibIPC: Fix unaligned u32 access in drain_messages_from_peer()

Caught by userspace UBSAN. :^)
Andreas Kling 4 tahun lalu
induk
melakukan
d3f298c592
1 mengubah file dengan 2 tambahan dan 2 penghapusan
  1. 2 2
      Userland/Libraries/LibIPC/Connection.h

+ 2 - 2
Userland/Libraries/LibIPC/Connection.h

@@ -207,9 +207,9 @@ protected:
         }
 
         size_t index = 0;
-        uint32_t message_size = 0;
+        u32 message_size = 0;
         for (; index + sizeof(message_size) < bytes.size(); index += message_size) {
-            message_size = *reinterpret_cast<uint32_t*>(bytes.data() + index);
+            memcpy(&message_size, bytes.data() + index, sizeof(message_size));
             if (message_size == 0 || bytes.size() - index - sizeof(uint32_t) < message_size)
                 break;
             index += sizeof(message_size);