patch 8.0.0183: ubsan warns for unaligned address
Problem: Ubsan warns for using a pointer that is not aligned.
Solution: First copy the address. (Yegappan Lakshmanan)
diff --git a/src/channel.c b/src/channel.c
index f522e80..bd31bf3 100644
--- a/src/channel.c
+++ b/src/channel.c
@@ -710,7 +710,14 @@
channel_free(channel);
return NULL;
}
- memcpy((char *)&server.sin_addr, host->h_addr, host->h_length);
+ {
+ char *p;
+
+ /* When using host->h_addr directly ubsan warns for it to not be
+ * aligned. First copy the pointer to aviod that. */
+ memcpy(&p, &host->h_addr, sizeof(p));
+ memcpy((char *)&server.sin_addr, p, host->h_length);
+ }
/* On Mac and Solaris a zero timeout almost never works. At least wait
* one millisecond. Let's do it for all systems, because we don't know why