From e5d80f67d27e2696154171023a40838b7c2a2544 Mon Sep 17 00:00:00 2001 From: pali <7141871+pali@users.noreply.github.com> Date: Tue, 9 Aug 2022 11:22:33 +0200 Subject: [PATCH] pppd: Fix check for incomplete ppp_stats nlmsgerr structure (#356) MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Response structure is incomplete when returned length is less than required structure length. Signed-off-by: Pali Rohár --- pppd/sys-linux.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/pppd/sys-linux.c b/pppd/sys-linux.c index c5ba49d..9c0455c 100644 --- a/pppd/sys-linux.c +++ b/pppd/sys-linux.c @@ -1795,13 +1795,10 @@ get_ppp_stats_rtnetlink(int u, struct pppd_stats *stats) } if (nlresp.nlh.nlmsg_type == NLMSG_ERROR) { - if (nlresplen < offsetof(struct nlresp, __end_err)) { - if (kernel_version >= KVERSION(4,7,0)) - error("get_ppp_stats_rtnetlink: Netlink responded with error: %s (line %d)", strerror(-nlresp.nlerr.error), __LINE__); - } else { - error("get_ppp_stats_rtnetlink: Netlink responded with an error message, but the nlmsgerr structure is incomplete (line %d).", - __LINE__); - } + if (nlresplen < offsetof(struct nlresp, __end_err)) + error("get_ppp_stats_rtnetlink: Netlink responded with an error message, but the nlmsgerr structure is incomplete (line %d).", __LINE__); + else if (kernel_version >= KVERSION(4,7,0)) + error("get_ppp_stats_rtnetlink: Netlink responded with error: %s (line %d)", strerror(-nlresp.nlerr.error), __LINE__); goto err; } -- 2.39.2