From: Yu Watanabe Date: Fri, 1 Oct 2021 08:35:04 +0000 (+0900) Subject: in-addr-util: do not shift 8 or more for uint8_t X-Git-Tag: v250-rc1~552^2~19 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=6df860f3a0e9e1265ee98f06bf276513876d5fc8;p=thirdparty%2Fsystemd.git in-addr-util: do not shift 8 or more for uint8_t See ISO/IEC 9899:TC3 ยง 6.5.7.3. --- diff --git a/src/basic/in-addr-util.c b/src/basic/in-addr-util.c index af3724d9d1f..613a5681319 100644 --- a/src/basic/in-addr-util.c +++ b/src/basic/in-addr-util.c @@ -642,9 +642,12 @@ int in6_addr_mask(struct in6_addr *addr, unsigned char prefixlen) { if (prefixlen >= 8) { mask = 0xFF; prefixlen -= 8; - } else { + } else if (prefixlen > 0) { mask = 0xFF << (8 - prefixlen); prefixlen = 0; + } else { + assert(prefixlen == 0); + mask = 0; } addr->s6_addr[i] &= mask;