summaryrefslogtreecommitdiff
path: root/src/basic/in-addr-util.h
diff options
context:
space:
mode:
authorYu Watanabe <watanabe.yu+github@gmail.com>2021-11-14 15:24:20 +0900
committerYu Watanabe <watanabe.yu+github@gmail.com>2021-11-25 22:34:29 +0900
commitf9930401d53a2f5c581fab5d58906772f3fc1fa8 (patch)
tree03a0896638d64a83b6aba3624048445d8701d55a /src/basic/in-addr-util.h
parent9df247da2849e3154fc343d7ecd439ef4b8f0fa8 (diff)
downloadsystemd-f9930401d53a2f5c581fab5d58906772f3fc1fa8.tar.gz
in-addr-util: introduce FAMILY_ADDRESS_SIZE_SAFE() macro
Diffstat (limited to 'src/basic/in-addr-util.h')
-rw-r--r--src/basic/in-addr-util.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/basic/in-addr-util.h b/src/basic/in-addr-util.h
index 97715a230c..0178391e5f 100644
--- a/src/basic/in-addr-util.h
+++ b/src/basic/in-addr-util.h
@@ -114,6 +114,13 @@ static inline size_t FAMILY_ADDRESS_SIZE(int family) {
return family == AF_INET6 ? 16 : 4;
}
+#define FAMILY_ADDRESS_SIZE_SAFE(f) \
+ ({ \
+ int _f = (f); \
+ _f == AF_INET ? sizeof(struct in_addr) : \
+ _f == AF_INET6 ? sizeof(struct in6_addr) : 0; \
+ })
+
/* Workaround for clang, explicitly specify the maximum-size element here.
* See also oss-fuzz#11344. */
#define IN_ADDR_NULL ((union in_addr_union) { .in6 = {} })