diff --git a/src/util/virarptable.c b/src/util/virarptable.c index 45ee76766f..20d11f97b0 100644 --- a/src/util/virarptable.c +++ b/src/util/virarptable.c @@ -83,6 +83,9 @@ virArpTableGet(void) struct ndmsg *r = NLMSG_DATA(nh); void *addr; + if (nh->nlmsg_type == NLMSG_DONE) + break; + if (nh->nlmsg_len < NLMSG_SPACE(sizeof(*r))) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("wrong nlmsg len")); @@ -97,9 +100,6 @@ virArpTableGet(void) (!(r->ndm_state == NUD_STALE || r->ndm_state == NUD_REACHABLE))) continue; - if (nh->nlmsg_type == NLMSG_DONE) - return table; - VIR_WARNINGS_NO_CAST_ALIGN parse_rtattr(tb, NDA_MAX, NDA_RTA(r), NLMSG_PAYLOAD(nh, sizeof(*r))); VIR_WARNINGS_RESET