Fix clear_if_addr for IPv6 addresses as an incorrect number of bytes were memset due to wrong sizeof argument
Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
uint8_t m_clear = (1 << (m_bytes * 8 - mask)) - 1;
uint8_t *p = (uint8_t *) a;
uint8_t m_clear = (1 << (m_bytes * 8 - mask)) - 1;
uint8_t *p = (uint8_t *) a;
- if (m_bytes < sizeof(a))
- memset(p + m_bytes, 0, sizeof(a) - m_bytes);
+ if (m_bytes < sizeof(*a))
+ memset(p + m_bytes, 0, sizeof(*a) - m_bytes);
p[m_bytes - 1] &= ~m_clear;
}
p[m_bytes - 1] &= ~m_clear;
}