summaryrefslogtreecommitdiffstats
path: root/useful_functions.c
diff options
context:
space:
mode:
Diffstat (limited to 'useful_functions.c')
-rw-r--r--useful_functions.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/useful_functions.c b/useful_functions.c
index 133ae2f..7378fc9 100644
--- a/useful_functions.c
+++ b/useful_functions.c
@@ -364,8 +364,9 @@ static struct in6_addr *parse_ip6_mask(char *mask)
if (bits != 0) {
char *p = (char *)&maskaddr;
memset(p, 0xff, bits / 8);
- memset(p + (bits / 8) + 1, 0, (128 - bits) / 8);
- p[bits / 8] = 0xff << (8 - (bits & 7));
+ memset(p + (bits + 7) / 8, 0, (128 - bits) / 8);
+ if (bits & 7)
+ p[bits / 8] = 0xff << (8 - (bits & 7));
return &maskaddr;
}