X-Git-Url: https://the.earth.li/gitweb/?p=mqtt-arp.git;a=blobdiff_plain;f=mqtt-arp.c;fp=mqtt-arp.c;h=ba977b424ca6883c7a6983326c2eca73d1ad8489;hp=19da3304117ace9589b3d17cf148cf89484aaaad;hb=a494b2492c039ab957abbf74398e0642c72787c0;hpb=6121bfeaf48b68f62c814ca094f5ffb2d32b7dc2 diff --git a/mqtt-arp.c b/mqtt-arp.c index 19da330..ba977b4 100644 --- a/mqtt-arp.c +++ b/mqtt-arp.c @@ -197,15 +197,15 @@ void main_loop(struct ma_config *config, struct mosquitto *mosq, int sock) nd->ndm_type); } attr = (struct nlattr *) (nd + 1); - while (attr->nla_len > 0) { - data = (((uint8_t *) attr) + 4); + while (((uint8_t *) attr - buf) < hdr->nlmsg_len) { + data = (((uint8_t *) attr) + NLA_HDRLEN); if (attr->nla_type == NDA_LLADDR && nd->ndm_state == NUD_REACHABLE) { mqtt_mac_presence(config, mosq, data, true); } - attr = (struct nlattr *) - (((uint8_t *) attr) + attr->nla_len); + attr = (struct nlattr *) (((uint8_t *) attr) + + NLA_ALIGN(attr->nla_len)); } break; case RTM_DELNEIGH: