A neighbor sending a Management Address TLV with addr_str_length == 0
caused `addr_length` to underflow and `addr_str_buffer[0]` (the address
family byte) to be read uninitialized.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
case LLDP_TLV_MGMT_ADDR:
CHECK_TLV_SIZE(1, "Management address");
addr_str_length = PEEK_UINT8;
- if (addr_str_length > sizeof(addr_str_buffer)) {
- log_warnx("lldp", "too large management address on %s",
+ if (addr_str_length < 1 ||
+ addr_str_length > sizeof(addr_str_buffer)) {
+ log_warnx("lldp",
+ "invalid management address length on %s",
hardware->h_ifname);
goto malformed;
}