socket: Use offsetof in SUN_LEN (bug 29578)
authorAndreas Schwab <schwab@suse.de>
Mon, 19 Sep 2022 08:10:09 +0000 (10:10 +0200)
committerAndreas Schwab <schwab@suse.de>
Mon, 10 Oct 2022 07:30:26 +0000 (09:30 +0200)
Use offsetof instead of its traditional expansion in the definition of the
SUN_LEN macro, to avoid a warning from the undefined behaviour sanitizer.

socket/sys/un.h

index 454eafe..2b11300 100644 (file)
@@ -34,10 +34,11 @@ struct sockaddr_un
 
 
 #ifdef __USE_MISC
+# include <stddef.h>
 # include <string.h>           /* For prototype of `strlen'.  */
 
 /* Evaluate to actual length of the `sockaddr_un' structure.  */
-# define SUN_LEN(ptr) ((size_t) (((struct sockaddr_un *) 0)->sun_path)       \
+# define SUN_LEN(ptr) (offsetof (struct sockaddr_un, sun_path)               \
                      + strlen ((ptr)->sun_path))
 #endif