From: pali <7141871+pali@users.noreply.github.com> Date: Tue, 9 Aug 2022 09:22:33 +0000 (+0200) Subject: pppd: Fix check for incomplete ppp_stats nlmsgerr structure (#356) X-Git-Tag: ppp-2.5.0~29 X-Git-Url: http://git.ozlabs.org/?p=ppp.git;a=commitdiff_plain;h=e5d80f67d27e2696154171023a40838b7c2a2544 pppd: Fix check for incomplete ppp_stats nlmsgerr structure (#356) Response structure is incomplete when returned length is less than required structure length. Signed-off-by: Pali Rohár --- 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; }