[master] 39a03ec60 Avoid flexelint 419 warning for memcpy to a union

Nils Goroll nils.goroll at uplex.de
Sat Apr 4 11:12:11 UTC 2020


commit 39a03ec60cfb48602d78530de04549fd6012dc41
Author: Nils Goroll <nils.goroll at uplex.de>
Date:   Sat Apr 4 12:28:54 2020 +0200

    Avoid flexelint 419 warning for memcpy to a union
    
    Closes #3275

diff --git a/lib/libvarnish/vsa.c b/lib/libvarnish/vsa.c
index 6c593132f..31703c547 100644
--- a/lib/libvarnish/vsa.c
+++ b/lib/libvarnish/vsa.c
@@ -323,7 +323,16 @@ VSA_Build(void *d, const void *s, unsigned sal)
 		return (NULL);
 
 	INIT_OBJ(sua, SUCKADDR_MAGIC);
-	memcpy(&sua->sa, s, sal);
+	switch (sal) {
+	case sizeof sua->sa4:
+		memcpy(&sua->sa4, s, sal);
+		break;
+	case sizeof sua->sa6:
+		memcpy(&sua->sa6, s, sal);
+		break;
+	default:
+		WRONG("VSA protocol vs. size");
+	}
 #ifdef HAVE_STRUCT_SOCKADDR_SA_LEN
 	sua->sa.sa_len = (unsigned char)sal;
 #endif


More information about the varnish-commit mailing list