From: Yu Watanabe Date: Sun, 14 Nov 2021 06:24:20 +0000 (+0900) Subject: in-addr-util: introduce FAMILY_ADDRESS_SIZE_SAFE() macro X-Git-Tag: v250-rc1~143^2~14 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=f9930401d53a2f5c581fab5d58906772f3fc1fa8;p=thirdparty%2Fsystemd.git in-addr-util: introduce FAMILY_ADDRESS_SIZE_SAFE() macro --- diff --git a/src/basic/in-addr-util.h b/src/basic/in-addr-util.h index 97715a230cd..0178391e5f2 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 = {} })