package/pppd: Add upstream security fix for CVE-2020-8597
authorChris Packham <judge.packham@gmail.com>
Fri, 6 Mar 2020 01:04:28 +0000 (14:04 +1300)
committerPeter Korsgaard <peter@korsgaard.com>
Sun, 8 Mar 2020 16:22:55 +0000 (17:22 +0100)
Apply patch from upstream and set PPPD_INGORE_CVES appropriately.

Signed-off-by: Chris Packham <judge.packham@gmail.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
package/pppd/0001-pppd-Fix-bounds-check.patch [new file with mode: 0644]
package/pppd/pppd.mk

diff --git a/package/pppd/0001-pppd-Fix-bounds-check.patch b/package/pppd/0001-pppd-Fix-bounds-check.patch
new file mode 100644 (file)
index 0000000..5d7c51b
--- /dev/null
@@ -0,0 +1,37 @@
+From 8d7970b8f3db727fe798b65f3377fe6787575426 Mon Sep 17 00:00:00 2001
+From: Paul Mackerras <paulus@ozlabs.org>
+Date: Mon, 3 Feb 2020 15:53:28 +1100
+Subject: [PATCH] pppd: Fix bounds check in EAP code
+
+Given that we have just checked vallen < len, it can never be the case
+that vallen >= len + sizeof(rhostname).  This fixes the check so we
+actually avoid overflowing the rhostname array.
+
+Reported-by: Ilja Van Sprundel <ivansprundel@ioactive.com>
+Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
+---
+ pppd/eap.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/pppd/eap.c b/pppd/eap.c
+index 94407f56..1b93db01 100644
+--- a/pppd/eap.c
++++ b/pppd/eap.c
+@@ -1420,7 +1420,7 @@ int len;
+               }
+               /* Not so likely to happen. */
+-              if (vallen >= len + sizeof (rhostname)) {
++              if (len - vallen >= sizeof (rhostname)) {
+                       dbglog("EAP: trimming really long peer name down");
+                       BCOPY(inp + vallen, rhostname, sizeof (rhostname) - 1);
+                       rhostname[sizeof (rhostname) - 1] = '\0';
+@@ -1846,7 +1846,7 @@ int len;
+               }
+               /* Not so likely to happen. */
+-              if (vallen >= len + sizeof (rhostname)) {
++              if (len - vallen >= sizeof (rhostname)) {
+                       dbglog("EAP: trimming really long peer name down");
+                       BCOPY(inp + vallen, rhostname, sizeof (rhostname) - 1);
+                       rhostname[sizeof (rhostname) - 1] = '\0';
index 4784fe79f8f74c8d833a69a4fa21669c443203d9..685666a2006ebd6a726ca79ff1b74f1764429098 100644 (file)
@@ -11,6 +11,9 @@ PPPD_LICENSE_FILES = \
        pppd/tdb.c pppd/plugins/pppoatm/COPYING \
        pppdump/bsd-comp.c pppd/ccp.c pppd/plugins/passprompt.c
 
+# 0001-pppd-Fix-bounds-check.patch
+PPPD_IGNORE_CVES += CVE-2020-8597
+
 PPPD_MAKE_OPTS = HAVE_INET6=y
 ifeq ($(BR2_TOOLCHAIN_USES_GLIBC),y)
 PPPD_DEPENDENCIES += openssl