aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLeonardo Arena <rnalrd@alpinelinux.org>2016-05-06 12:02:24 +0000
committerLeonardo Arena <rnalrd@alpinelinux.org>2016-05-06 12:02:24 +0000
commit440e683c76cec5731d0eaab8caa31bdabbd90cde (patch)
treeccd37bd17befb161648525aa7e7880c7f61a0d81
parent05938f5d600237226f4ad284a87afe5aaff1d4fb (diff)
downloadaports-440e683c76cec5731d0eaab8caa31bdabbd90cde.tar.bz2
aports-440e683c76cec5731d0eaab8caa31bdabbd90cde.tar.xz
main/gcc: security fix (CVE-2015-5276). Fixes #5459
-rw-r--r--main/gcc/APKBUILD7
-rw-r--r--main/gcc/CVE-2015-5276.patch42
2 files changed, 48 insertions, 1 deletions
diff --git a/main/gcc/APKBUILD b/main/gcc/APKBUILD
index d490ca2dd9..09785658cd 100644
--- a/main/gcc/APKBUILD
+++ b/main/gcc/APKBUILD
@@ -8,7 +8,7 @@ _cross=""
&& _cross="-$CTARGET"
pkgname="$pkgname$_cross"
-pkgrel=5
+pkgrel=6
pkgdesc="The GNU Compiler Collection"
url="http://gcc.gnu.org"
arch="all"
@@ -190,6 +190,8 @@ source="ftp://gcc.gnu.org/pub/gcc/releases/gcc-$pkgver/gcc-$pkgver.tar.bz2
ada-shared.patch
ada-musl.patch
+ CVE-2015-5276.patch
+
vanilla.specs
hardenednossp.specs
hardenednopie.specs
@@ -676,6 +678,7 @@ a4ccdeee63d0ab08d5e6165cb32b66ff ada-no-pie.patch
2b4235111d2e66f2c690eb340cb4178b ada-fixes.patch
20e2731c02ce50739ebdead2795f9c41 ada-shared.patch
ed08316331af9dcfacb0938c1a5512cf ada-musl.patch
+c85a0b681b3e96d6b23c1f9c414956b0 CVE-2015-5276.patch
a2f435d81e872a73a8b44a4581832af0 vanilla.specs
17a31b8580de9dd9c06a1ed96886d538 hardenednossp.specs
33ce2d221828a2d03978da52ba609524 hardenednopie.specs
@@ -725,6 +728,7 @@ a5678380e887dbf600c59273d382e81c10f89d28e422238a617d0a43ad5c5a69 fix-cxxflags-f
ca0db7f59e7af0c621751eee9e3775d4c00c4b663f82f9e04c53a2efb16edca1 ada-fixes.patch
d6c7fc1820a4fa285297c299c255fe2f19ce1695486f20edd098252a97545e6a ada-shared.patch
0f4d4d60f8042181163a314ebeed0f045382da8fa74c7dad90d8a80953ff1ba2 ada-musl.patch
+68e701443cf8070fbbd3d2b8e82ee356d172df1bbe2e9471aaca55f0e21d7c5a CVE-2015-5276.patch
1315d4c430b4d81c61d14a252d7681125fd7d79fde457c014c18c62c4f1aa1de vanilla.specs
50a46bb1c4d209ce687d13e74cc9e4e0b87cef4a8165d22fb9be243c9cf08374 hardenednossp.specs
8eccfcf282fb54aadede7c23a8b5b843c0a63a55485e74d4332ab49025d38e78 hardenednopie.specs
@@ -774,6 +778,7 @@ e80a08de4b43fb71f7699bcce360cd99bc525dab20b9109e7152bd211def5d8e728f88771ed59f15
b37195a126476775e2ef16e0adc9173664c514339fb319f628debd8a4133fa53e022278387c68fc260cf813e58602617e9e629ea8177133bfdf5972398fe1c55 ada-fixes.patch
3f5bc334d9f73d06f5f7c876738d02356acdd08958bea0e4d2095ebf15c2c2ec4e411abdae0297505ae9a1699ca01b17338e853184e84663203b192b0d35fc19 ada-shared.patch
76d7d35066534c332956a88da84a95c8c54c6e0742c3c46e6b256395bf67f7c167b5ecd47fbed697fb1c9d7a41016c99e7dcd06465516a0e963707a0eab8f8b6 ada-musl.patch
+45bd8200ba99907f870f3ec82eff340d70c97656f6bbf79ef179caec64a481ee36fef17dbed8312995b71ccbc3b8f2c3f00ff3aa9c09163e4330ebf35d75e30a CVE-2015-5276.patch
83a0996a48096032bcc674a6d28524f1cd2d81837621ebe4c15b5aedbd551c77ce5576b6307adb673ef0e4ac0431d935ad6a427edca2af5c21b6be9176bfaddb vanilla.specs
e4d38905527c500c61c421d782a8ac6ef2b034b15fd81d868486ac330a70922937d3c47e0684e9f3250744569b56a8df199499a4a5c107a6d544dca84458dc12 hardenednossp.specs
b56f7c308c5aefd0cfc647abd75939508a6640c53fce7c19da7c7d8ef4405d29b0d88800117fc7ff8d0022b035d511fb6d478e745bb2ed12a1b63f9f8cf3e168 hardenednopie.specs
diff --git a/main/gcc/CVE-2015-5276.patch b/main/gcc/CVE-2015-5276.patch
new file mode 100644
index 0000000000..94f6827be7
--- /dev/null
+++ b/main/gcc/CVE-2015-5276.patch
@@ -0,0 +1,42 @@
+--- gcc-5-branch/libstdc++-v3/src/c++11/random.cc 2015/10/02 19:43:41 228418
++++ gcc-5-branch/libstdc++-v3/src/c++11/random.cc 2015/10/02 20:08:04 228419
+@@ -31,6 +31,7 @@
+ # include <cpuid.h>
+ #endif
+
++#include <cerrno>
+ #include <cstdio>
+
+ #ifdef _GLIBCXX_HAVE_UNISTD_H
+@@ -130,13 +131,27 @@
+ #endif
+
+ result_type __ret;
++ void* p = &__ret;
++ size_t n = sizeof(result_type);
+ #ifdef _GLIBCXX_HAVE_UNISTD_H
+- read(fileno(static_cast<FILE*>(_M_file)),
+- static_cast<void*>(&__ret), sizeof(result_type));
++ do
++ {
++ const int e = read(fileno(static_cast<FILE*>(_M_file)), p, n);
++ if (e > 0)
++ {
++ n -= e;
++ p = static_cast<char*>(p) + e;
++ }
++ else if (e != -1 || errno != EINTR)
++ __throw_runtime_error(__N("random_device could not be read"));
++ }
++ while (n > 0);
+ #else
+- std::fread(static_cast<void*>(&__ret), sizeof(result_type),
+- 1, static_cast<FILE*>(_M_file));
++ const size_t e = std::fread(p, n, 1, static_cast<FILE*>(_M_file));
++ if (e != 1)
++ __throw_runtime_error(__N("random_device could not be read"));
+ #endif
++
+ return __ret;
+ }
+