This happens for `/0` subnet masks. In practice, it's not an issue because
if `bytes` is 0, then so are `netbits`, `bits` and `mask`. So the two
incorrectly addressed array elements are not actually modified. The first
operation is a `&= 0xff` and the second a `|= 0`, so nothing changes.
But some tools might not consider the values and report this as undefined
behavior, which it technically is.
memcpy(this->to, this->from, bytes);
memset(this->from + bytes, 0x00, len - bytes);
memset(this->to + bytes, 0xff, len - bytes);
- this->from[bytes-1] &= ~mask;
- this->to[bytes-1] |= mask;
+
+ if (bytes)
+ {
+ this->from[bytes-1] &= ~mask;
+ this->to[bytes-1] |= mask;
+ }
}
/**