From 6df860f3a0e9e1265ee98f06bf276513876d5fc8 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Fri, 1 Oct 2021 17:35:04 +0900 Subject: [PATCH] in-addr-util: do not shift 8 or more for uint8_t MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit See ISO/IEC 9899:TC3 § 6.5.7.3. --- src/basic/in-addr-util.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) 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; -- 2.47.3