From fdfea2e5175624e5e5de51a3a34b1de9666fd3e7 Mon Sep 17 00:00:00 2001
From: Leonardo Arena <rnalrd@alpinelinux.org>
Date: Fri, 14 Oct 2016 11:59:06 +0000
Subject: [PATCH] main/flex: security fix (CVE-2016-6354). Fixes #6090

---
 main/flex/APKBUILD            | 24 +++++++++++++++-----
 main/flex/CVE-2016-6354.patch | 42 +++++++++++++++++++++++++++++++++++
 2 files changed, 61 insertions(+), 5 deletions(-)
 create mode 100644 main/flex/CVE-2016-6354.patch

diff --git a/main/flex/APKBUILD b/main/flex/APKBUILD
index 6da91a6d1738..3a0214e81551 100644
--- a/main/flex/APKBUILD
+++ b/main/flex/APKBUILD
@@ -1,18 +1,29 @@
 # Maintainer: Natanael Copa <ncop@alpinelinux.org>
 pkgname=flex
 pkgver=2.5.39
-pkgrel=0
+pkgrel=1
 pkgdesc="A tool for generating text-scanning programs"
 url="http://flex.sourceforge.net"
 arch="all"
 license="BSD and LGPLv2+"
 depends='m4'
 makedepends=m4
-source="http://downloads.sourceforge.net/sourceforge/flex/flex-$pkgver.tar.bz2"
 subpackages="$pkgname-doc $pkgname-libs $pkgname-dev"
+source="http://downloads.sourceforge.net/sourceforge/flex/flex-$pkgver.tar.bz2
+	CVE-2016-6354.patch
+	"
+
+# secfixes:
+#   2.5.39-r1:
+#   - CVE-2016-6354
 
 prepare() {
 	cd "$srcdir/$pkgname-$pkgver"
+	for i in $source; do
+		case $i in
+		*.patch) msg $i; patch -p1 -i "$srcdir"/$i || return 1;;
+		esac
+	done
 	update_config_sub || return 1
 }
 
@@ -37,6 +48,9 @@ package() {
 	rm "$pkgdir"/usr/lib/*.la || return 1
 }
 
-md5sums="77d44c6bb8c0705e0017ab9a84a1502b  flex-2.5.39.tar.bz2"
-sha256sums="add2b55f3bc38cb512b48fad7d72f43b11ef244487ff25fc00aabec1e32b617f  flex-2.5.39.tar.bz2"
-sha512sums="8b1b86b81e7d231c746887c0c24fd1004f3f7598af4e41408667f609918a9994721b61d666a1e184822409de329323b829193a4a8dcdf12ce9313d0fe37cbbc1  flex-2.5.39.tar.bz2"
+md5sums="77d44c6bb8c0705e0017ab9a84a1502b  flex-2.5.39.tar.bz2
+2a8840f6ffe84023b86784877c2c174e  CVE-2016-6354.patch"
+sha256sums="add2b55f3bc38cb512b48fad7d72f43b11ef244487ff25fc00aabec1e32b617f  flex-2.5.39.tar.bz2
+aac826ed26c13f3fb940034314b17af8a2612419acda3d60392a6260aaeb39eb  CVE-2016-6354.patch"
+sha512sums="8b1b86b81e7d231c746887c0c24fd1004f3f7598af4e41408667f609918a9994721b61d666a1e184822409de329323b829193a4a8dcdf12ce9313d0fe37cbbc1  flex-2.5.39.tar.bz2
+6344a914660b9ea349c3d6dd4992e23f8c671782b6b9c6ee699fa0ef6b4748ce7904fe41a8c6fcb648becdad91937da37a1ef60ec47c9bd21dcaf842ea66fb40  CVE-2016-6354.patch"
diff --git a/main/flex/CVE-2016-6354.patch b/main/flex/CVE-2016-6354.patch
new file mode 100644
index 000000000000..346fd3d45c1b
--- /dev/null
+++ b/main/flex/CVE-2016-6354.patch
@@ -0,0 +1,42 @@
+From a5cbe929ac3255d371e698f62dc256afe7006466 Mon Sep 17 00:00:00 2001
+From: Will Estes <westes575@gmail.com>
+Date: Sat, 27 Feb 2016 11:56:05 -0500
+Subject: [PATCH] Fixed incorrect integer type
+
+---
+ flex.skl | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/flex.skl
++++ b/flex.skl
+@@ -1677,7 +1677,7 @@ int yyFlexLexer::yy_get_next_buffer()
+ 
+ 	else
+ 		{
+-			yy_size_t num_to_read =
++			int num_to_read =
+ 			YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
+ 
+ 		while ( num_to_read <= 0 )
+--- a/scan.c
++++ b/scan.c
+@@ -4325,7 +4325,7 @@ static int yy_get_next_buffer (void)
+ 
+ 	else
+ 		{
+-			yy_size_t num_to_read =
++			int num_to_read =
+ 			YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
+ 
+ 		while ( num_to_read <= 0 )
+--- a/skel.c
++++ b/skel.c
+@@ -1888,7 +1888,7 @@ const char *skel[] = {
+   "",
+   "	else",
+   "		{",
+-  "			yy_size_t num_to_read =",
++  "			int num_to_read =",
+   "			YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;",
+   "",
+   "		while ( num_to_read <= 0 )",
-- 
GitLab