summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2017-01-14 17:04:38 +0100
committerBram Moolenaar <Bram@vim.org>2017-01-14 17:04:38 +0100
commit7173b47958a238bb07f80b8f26fb232b0ea69b4a (patch)
tree3573adaedc038f24b6b4ff939b8b582dbe8608c0
parente47683a0913f102b6ae08c8848d5aa675d99b188 (diff)
downloadvim-git-7173b47958a238bb07f80b8f26fb232b0ea69b4a.tar.gz
patch 8.0.0183: ubsan warns for unaligned addressv8.0.0183
Problem: Ubsan warns for using a pointer that is not aligned. Solution: First copy the address. (Yegappan Lakshmanan)
-rw-r--r--src/channel.c9
-rw-r--r--src/version.c2
2 files changed, 10 insertions, 1 deletions
diff --git a/src/channel.c b/src/channel.c
index f522e80c4..bd31bf3cb 100644
--- a/src/channel.c
+++ b/src/channel.c
@@ -710,7 +710,14 @@ channel_open(
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
diff --git a/src/version.c b/src/version.c
index 806e86511..562757a72 100644
--- a/src/version.c
+++ b/src/version.c
@@ -765,6 +765,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 183,
+/**/
182,
/**/
181,