bplist: Work around misaligned reads reported by AddressSanitizer

These misaligned reads reported by ASAN might lead to undefined behavior.
diff --git a/src/bplist.c b/src/bplist.c
index 9acd6ae..67513e6 100644
--- a/src/bplist.c
+++ b/src/bplist.c
@@ -269,11 +269,11 @@
     switch (size)
     {
     case sizeof(uint32_t):
-        *(uint32_t*)buf = float_bswap32(*(uint32_t*)*bnode);
+        *(uint32_t*)buf = float_bswap32(get_unaligned((uint32_t*)*bnode));
         data->realval = *(float *) buf;
         break;
     case sizeof(uint64_t):
-        *(uint64_t*)buf = float_bswap64(*(uint64_t*)*bnode);
+        *(uint64_t*)buf = float_bswap64(get_unaligned((uint64_t*)*bnode));
         data->realval = *(double *) buf;
         break;
     default:
@@ -394,7 +394,7 @@
         return NULL;
     }
     for (i = 0; i < size; i++)
-        unicodestr[i] = be16toh(((uint16_t*)*bnode)[i]);
+        unicodestr[i] = be16toh(get_unaligned((uint16_t*)(*bnode+(i<<1))));
 
     tmpstr = plist_utf16_to_utf8(unicodestr, size, &items_read, &items_written);
     free(unicodestr);