Allocate properly aligned Message type in SctpReadWrite::ReadMessage

ubsan observed that we were not aligning our allocations for the Message
type. Fix that.

Change-Id: I3031e999ffca7ffa656141fbe190c3c323e6e738
Signed-off-by: James Kuszmaul <james.kuszmaul@bluerivertech.com>
diff --git a/aos/network/sctp_lib.cc b/aos/network/sctp_lib.cc
index 6539953..9632d3c 100644
--- a/aos/network/sctp_lib.cc
+++ b/aos/network/sctp_lib.cc
@@ -340,8 +340,13 @@
   CHECK(fd_ != -1);
 
   while (true) {
-    aos::unique_c_ptr<Message> result(
-        reinterpret_cast<Message *>(malloc(sizeof(Message) + max_size_ + 1)));
+    constexpr size_t kMessageAlign = alignof(Message);
+    const size_t max_message_size =
+        ((sizeof(Message) + max_size_ + 1 + (kMessageAlign - 1)) /
+         kMessageAlign) *
+        kMessageAlign;
+    aos::unique_c_ptr<Message> result(reinterpret_cast<Message *>(
+        aligned_alloc(kMessageAlign, max_message_size)));
 
     struct msghdr inmessage;
     memset(&inmessage, 0, sizeof(struct msghdr));