svn commit: r396408 - in head/sysutils/screen: . files
Mark Felder
feld at FreeBSD.org
Tue Sep 8 16:35:22 UTC 2015
Author: feld
Date: Tue Sep 8 16:35:20 2015
New Revision: 396408
URL: https://svnweb.freebsd.org/changeset/ports/396408
Log:
Add patch to resolve stack overflow vulnerability
MFH: 2015Q3
Security: 98092444-5645-11e5-9ad8-14dae9d210b8
Security: CVE-2015-6806
Added:
head/sysutils/screen/files/patch-CVE-2015-6806 (contents, props changed)
Modified:
head/sysutils/screen/Makefile
Modified: head/sysutils/screen/Makefile
==============================================================================
--- head/sysutils/screen/Makefile Tue Sep 8 16:34:20 2015 (r396407)
+++ head/sysutils/screen/Makefile Tue Sep 8 16:35:20 2015 (r396408)
@@ -3,7 +3,7 @@
PORTNAME= screen
PORTVERSION= 4.3.1
-PORTREVISION= 1
+PORTREVISION= 2
CATEGORIES= sysutils
MASTER_SITES= http://ftp.gnu.org/gnu/screen/ \
ftp://ftp.gnu.org/gnu/screen/ \
Added: head/sysutils/screen/files/patch-CVE-2015-6806
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/sysutils/screen/files/patch-CVE-2015-6806 Tue Sep 8 16:35:20 2015 (r396408)
@@ -0,0 +1,55 @@
+From b7484c224738247b510ed0d268cd577076958f1b Mon Sep 17 00:00:00 2001
+From: Kuang-che Wu <kcwu at csie.org>
+Date: Mon, 31 Aug 2015 17:49:57 +0000
+Subject: Fix stack overflow due to too deep recursion
+
+Bug: 45713
+
+How to reproduce:
+Run this command inside screen
+$ printf '\x1b[10000000T'
+
+screen will recursively call MScrollV to depth n/256. This is time consuming and will overflow stack if n is huge.
+---
+diff --git a/src/ansi.c b/src/ansi.c
+index a342fb1..152d2ef 100644
+--- ansi.c
++++ ansi.c
+@@ -2502,13 +2502,13 @@ int n, ys, ye, bce;
+ return;
+ if (n > 0)
+ {
++ if (ye - ys + 1 < n)
++ n = ye - ys + 1;
+ if (n > 256)
+ {
+ MScrollV(p, n - 256, ys, ye, bce);
+ n = 256;
+ }
+- if (ye - ys + 1 < n)
+- n = ye - ys + 1;
+ #ifdef COPY_PASTE
+ if (compacthist)
+ {
+@@ -2562,14 +2562,14 @@ int n, ys, ye, bce;
+ }
+ else
+ {
+- if (n < -256)
+- {
+- MScrollV(p, n + 256, ys, ye, bce);
+- n = -256;
+- }
+ n = -n;
+ if (ye - ys + 1 < n)
+ n = ye - ys + 1;
++ if (n > 256)
++ {
++ MScrollV(p, - (n - 256), ys, ye, bce);
++ n = 256;
++ }
+
+ ml = p->w_mlines + ye;
+ /* Clear lines */
+--
+cgit v0.9.0.2
More information about the svn-ports-head
mailing list