function applyMask(addr, mask, v6) {
var words = v6 ? validation.parseIPv6(addr) : validation.parseIPv4(addr);
+ var bword = v6 ? 0xffff : 0xff;
+ var bwlen = v6 ? 16 : 8;
if (!words || mask < 0 || mask > (v6 ? 128 : 32))
return null;
for (var i = 0; i < words.length; i++) {
- var b = Math.min(mask, v6 ? 16 : 8);
- words[i] &= ((1 << b) - 1);
+ var b = Math.min(mask, bwlen);
+ words[i] &= (bword << (bwlen - b)) & bword;
mask -= b;
}