From: Petr Machata Date: Tue, 4 Dec 2018 16:07:41 +0000 (+0000) Subject: libnetlink: Process further iovs on no error X-Git-Tag: v4.20.0~32 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0951cbcddf5ade08a42ff8ce65bb9b2017ec9cee;p=thirdparty%2Fiproute2.git libnetlink: Process further iovs on no error When no error is reported in the first iov, do not prematurely return, but process further iovs. This fixes batch processing. Fixes: c60389e4f9ea ("libnetlink: fix leak and using unused memory on error") Signed-off-by: Petr Machata Signed-off-by: Stephen Hemminger --- diff --git a/lib/libnetlink.c b/lib/libnetlink.c index c0b80ed6f..954571097 100644 --- a/lib/libnetlink.c +++ b/lib/libnetlink.c @@ -763,6 +763,7 @@ static int __rtnl_talk_iov(struct rtnl_handle *rtnl, struct iovec *iov, msg.msg_iovlen = 1; i = 0; while (1) { +next: status = rtnl_recvmsg(rtnl->fd, &msg, &buf); ++i; @@ -826,6 +827,8 @@ static int __rtnl_talk_iov(struct rtnl_handle *rtnl, struct iovec *iov, else free(buf); + if (i < iovlen) + goto next; return error ? -i : 0; }