diff options
author | Bart Ribbers <bribbers@disroot.org> | 2019-06-04 21:48:12 +0200 |
---|---|---|
committer | Natanael Copa <ncopa@alpinelinux.org> | 2019-06-05 13:02:38 +0000 |
commit | 34001bbdeb45f402e36725c2b6abb29d2b4d267f (patch) | |
tree | d10f31416c8c94c78c3e0ff7869792a816d64d5f /community/mumble | |
parent | ab2e689ca265277d183ddcd729af431ee0f75456 (diff) | |
download | aports-34001bbdeb45f402e36725c2b6abb29d2b4d267f.tar.bz2 aports-34001bbdeb45f402e36725c2b6abb29d2b4d267f.tar.xz |
community/mumble: update to 1.3.0_rc1 and move to Qt5
Diffstat (limited to 'community/mumble')
-rw-r--r-- | community/mumble/APKBUILD | 56 | ||||
-rw-r--r-- | community/mumble/CVE-2018-20743.1.patch | 197 | ||||
-rw-r--r-- | community/mumble/CVE-2018-20743.2.patch | 25 | ||||
-rw-r--r-- | community/mumble/boost-1.66.patch | 32 |
4 files changed, 20 insertions, 290 deletions
diff --git a/community/mumble/APKBUILD b/community/mumble/APKBUILD index 33f749a4f6..0d1ea0585f 100644 --- a/community/mumble/APKBUILD +++ b/community/mumble/APKBUILD @@ -2,49 +2,37 @@ # Contributor: Johannes Matheis <jomat+alpinebuild@jmt.gr> # Maintainer: Johannes Matheis <jomat+alpinebuild@jmt.gr> pkgname=mumble -pkgver=1.2.19 -pkgrel=9 +pkgver=1.3.0_rc1 +_pkgver=${pkgver/_/-} +__pkgver=${pkgver/_rc1/} +pkgrel=0 pkgdesc="Low-latency, high quality voice chat software" url="https://wiki.mumble.info" arch="all" license="BSD-3-Clause" options="!check" -depends="qt-sqlite" -depends_dev="" -makedepends="qt-dev libsndfile-dev boost-dev avahi-dev protobuf-dev - libxi-dev speex-dev speexdsp-dev libcap-dev" +depends="qt5-qtbase-sqlite" +makedepends="qt5-qtbase-dev libsndfile-dev boost-dev avahi-dev protobuf-dev + libxi-dev speex-dev speexdsp-dev libcap-dev alsa-lib-dev qt5-qtsvg-dev + qt5-qttools-dev opus-dev + " install="murmur.pre-install" pkgusers="murmur" pkggroups="murmur" subpackages="$pkgname-doc murmur murmur-doc:murmur_doc:noarch" -source="https://github.com/mumble-voip/$pkgname/releases/download/$pkgver/$pkgname-$pkgver.tar.gz - CVE-2018-20743.1.patch - CVE-2018-20743.2.patch - boost-1.66.patch +source="https://github.com/mumble-voip/$pkgname/releases/download/$_pkgver/$pkgname-$_pkgver.tar.gz murmur.initd" -builddir="$srcdir"/$pkgname-$pkgver - -# secfixes: -# 1.2.19-r9: -# - CVE-2018-20743 +builddir="$srcdir/$pkgname-${pkgver/_rc1/}" build() { - cd "$builddir" - - CXXFLAGS="-std=c++11" - qmake -recursive main.pro \ - CONFIG+="no-speechd no-g15 no-update no-ice bundled-celt no-embed-qt-translations no-bundled-speex" - - # qmake-qt4 ignores complation *FLAGS thus patch the Makefiles directly - sed -i "s;^\(CXXFLAGS.*=.*\);& $CXXFLAGS;" \ - */Makefile* */*/Makefile* + qmake-qt5 -recursive main.pro \ + CONFIG+="no-speechd no-g15 no-ice bundled-celt no-embed-qt-translations no-bundled-speex no-bundled-opus no-rnnoise" \ + DEFINES+="PLUGIN_PATH=/usr/lib/mumble" make release } package() { - cd "$builddir" - # Binaries. install -Dm755 ./release/mumble \ "$pkgdir"/usr/bin/mumble @@ -52,16 +40,14 @@ package() { "$pkgdir"/usr/bin/mumble-overlay # Libraries. - install -Dm755 ./release/libmumble.so.$pkgver \ - "$pkgdir"/usr/lib/mumble/libmumble.so.$pkgver + install -Dm755 ./release/libmumble.so.$__pkgver \ + "$pkgdir"/usr/lib/mumble/libmumble.so.$__pkgver for lib in libmumble.so libmumble.so.1 libmumble.so.1.2; do - ln -s libmumble.so.$pkgver \ + ln -s libmumble.so.$__pkgver \ "$pkgdir"/usr/lib/mumble/$lib done install -Dm755 ./release/plugins/liblink.so \ "$pkgdir"/usr/lib/mumble/liblink.so - install -Dm755 ./release/plugins/libmanual.so \ - "$pkgdir"/usr/lib/mumble/libmanual.so install -Dm755 ./release/libcelt* \ "$pkgdir"/usr/lib/mumble/ @@ -110,13 +96,11 @@ murmur_doc() { cd "$builddir" install -Dm644 ./man/murmurd.1 \ "$subpkgdir"/usr/share/man/man1/murmurd.1 + gzip "$subpkgdir"/usr/share/man/man1/murmurd.1 + install -Dm644 ./LICENSE \ "$subpkgdir"/usr/share/licenses/murmur/LICENSE - default_doc } -sha512sums="f91111194a899149b500a94afcf7cc5b9691c7ce8669f07fca2c66adbb3916ddb863bf703d04fb8387133fb75f3c8edb52974d1acf3febfafa1f73da19946de4 mumble-1.2.19.tar.gz -6a3c78a479c795f91fabd557c34249308e1032be51ee668a9576cb8d2f7028526c4d79895b5053822c05f998e147a0577e801e8a27c9a454a4473193f16de943 CVE-2018-20743.1.patch -9e2b0dcb5ca34aea1607e0561446bced93e13ce296df986855299f7b652e99db8f9504e0dfa6544e8f443996b8a78a912328f4924813a4716028a8323c70d6d0 CVE-2018-20743.2.patch -fcdaf2a3575e3871fe4003b93364a70a7c7029beb64ba5e24931abbe3898b72791848b5cf78ccf48eee5942a37f696a5134d061c2b8d60b66913abd701758330 boost-1.66.patch +sha512sums="e993b18b0ecf620d3a9a89f145c18b9ecde3aaf9b7217e235b7472908c81a365323c8683dd6fc9ed14b108160f8bf5244369c2a9ee57c22595550220d158516c mumble-1.3.0-rc1.tar.gz c74ade232146a180448cb0027503f59642000bee50613a1fb99162cdc4bc81089ab4e84e51b0bbdac5c176eb52b76e6bd2b3ec790a9148135a1fc050569921c3 murmur.initd" diff --git a/community/mumble/CVE-2018-20743.1.patch b/community/mumble/CVE-2018-20743.1.patch deleted file mode 100644 index c9d381200f..0000000000 --- a/community/mumble/CVE-2018-20743.1.patch +++ /dev/null @@ -1,197 +0,0 @@ -From 0daec57f5cfc4225aa4527b537b4ec4fbbc35635 Mon Sep 17 00:00:00 2001 -From: MadMaurice <madmaurice@zom.bi> -Date: Thu, 30 Aug 2018 15:08:01 +0200 -Subject: [PATCH] Prevent instability and crash due to message flood - -This patch adds a rate limiting to selected patches. The underlying rate limiter -used is the Leaky-Bucket algorithm. It allows for a burst of messages, but -limits them after a specified amount of messages within a time frame. ---- - src/murmur/Messages.cpp | 17 ++++++++++++ - src/murmur/ServerUser.cpp | 58 +++++++++++++++++++++++++++++++++++++++ - src/murmur/ServerUser.h | 29 ++++++++++++++++++++ - 3 files changed, 104 insertions(+) - -diff --git a/src/murmur/Messages.cpp b/src/murmur/Messages.cpp -index 967cff794..1739378e1 100644 ---- a/src/murmur/Messages.cpp -+++ b/src/murmur/Messages.cpp -@@ -42,6 +42,11 @@ - #include "ServerUser.h" - #include "Version.h" - -+#define RATELIMIT(user) \ -+ if (user->leakyBucket.ratelimit(1)) { \ -+ return; \ -+ } -+ - #define MSG_SETUP(st) \ - if (uSource->sState != st) { \ - return; \ -@@ -679,6 +684,10 @@ - bBroadcast = true; - } - -+ if (uSource == pDstServerUser) { -+ RATELIMIT(uSource); -+ } -+ - if (msg.has_channel_id()) { - Channel *c = qhChannels.value(msg.channel_id()); - -@@ -791,6 +800,8 @@ - c = qhChannels.value(msg.channel_id()); - if (! c) - return; -+ } else { -+ RATELIMIT(uSource); - } - - // Check if the parent exists -@@ -1074,6 +1076,8 @@ - QSet<ServerUser *> users; - QQueue<Channel *> q; - -+ RATELIMIT(uSource); -+ - QString text = u8(msg.message()); - bool changed = false; - -@@ -1241,6 +1254,8 @@ void Server::msgACL(ServerUser *uSource, MumbleProto::ACL &msg) { - return; - } - -+ RATELIMIT(uSource); -+ - if (msg.has_query() && msg.query()) { - QStack<Channel *> chans; - Channel *p; -@@ -1497,6 +1512,8 @@ void Server::msgContextAction(ServerUser *uSource, MumbleProto::ContextAction &m - } - - void Server::msgVersion(ServerUser *uSource, MumbleProto::Version &msg) { -+ RATELIMIT(uSource); -+ - if (msg.has_version()) - uSource->uiVersion=msg.version(); - if (msg.has_release()) -diff --git a/src/murmur/ServerUser.cpp b/src/murmur/ServerUser.cpp -index c851d86d8..e5c570d47 100644 ---- a/src/murmur/ServerUser.cpp -+++ b/src/murmur/ServerUser.cpp -@@ -112,3 +112,61 @@ int BandwidthRecord::bandwidth() const { - return static_cast<int>((sum * 1000000ULL) / elapsed); - } - -+#if __cplusplus > 199711LL -+ -+inline static -+time_point now() { -+ return std::chrono::steady_clock::now(); -+} -+ -+inline static -+unsigned long millisecondsBetween(time_point start, time_point end) { -+ return std::chrono::duration_cast<std::chrono::milliseconds>(end - start).count(); -+} -+ -+#else -+ -+inline static -+time_point now() { -+ return clock(); -+} -+ -+inline static -+unsigned long millisecondsBetween(time_point start, time_point end) { -+ return 1000 * (end - start) / CLOCKS_PER_SEC; -+} -+ -+#endif -+ -+// Rate limiting: burst up to 30, 4 message per sec limit over longer time -+LeakyBucket::LeakyBucket() : tokensPerSec(4), maxTokens(30), currentTokens(0) { -+ lastUpdate = now(); -+} -+ -+bool LeakyBucket::ratelimit(int tokens) { -+ // First remove tokens we leaked over time -+ time_point tnow = now(); -+ long ms = millisecondsBetween(lastUpdate, tnow); -+ -+ long drainTokens = (ms * tokensPerSec) / 1000; -+ -+ // Prevent constant starvation due to too many updates -+ if (drainTokens > 0) { -+ this->lastUpdate = tnow; -+ -+ this->currentTokens -= drainTokens; -+ if (this->currentTokens < 0) { -+ this->currentTokens = 0; -+ } -+ } -+ -+ // Then try to add tokens -+ bool limit = this->currentTokens > ((static_cast<long>(maxTokens)) - tokens); -+ -+ // If the bucket is not overflowed, allow message and add tokens -+ if (!limit) { -+ this->currentTokens += tokens; -+ } -+ -+ return limit; -+} -diff --git a/src/murmur/ServerUser.h b/src/murmur/ServerUser.h -index 28e582739..0a3828205 100644 ---- a/src/murmur/ServerUser.h -+++ b/src/murmur/ServerUser.h -@@ -14,6 +14,13 @@ - #include <winsock2.h> - #endif - -+// <chrono> was introduced in C++11 -+#if __cplusplus > 199711LL -+#include <chrono> -+#else -+#include <ctime> -+#endif -+ - #include "Connection.h" - #include "Timer.h" - #include "User.h" -@@ -55,6 +62,26 @@ struct WhisperTarget { - - class Server; - -+#if __cplusplus > 199711L -+ typedef std::chrono::time_point<std::chrono::steady_clock> time_point; -+#else -+ typedef clock_t time_point; -+#endif -+ -+// Simple algorithm for rate limiting -+class LeakyBucket { -+ private: -+ unsigned int tokensPerSec, maxTokens; -+ long currentTokens; -+ time_point lastUpdate; -+ -+ public: -+ // Returns true if packets should be dropped -+ bool ratelimit(int tokens); -+ -+ LeakyBucket(); -+}; -+ - class ServerUser : public Connection, public User { - private: - Q_OBJECT -@@ -103,6 +130,8 @@ class ServerUser : public Connection, public User { - QMap<int, TargetCache> qmTargetCache; - QMap<QString, QString> qmWhisperRedirect; - -+ LeakyBucket leakyBucket; -+ - int iLastPermissionCheck; - QMap<int, unsigned int> qmPermissionSent; - #ifdef Q_OS_UNIX diff --git a/community/mumble/CVE-2018-20743.2.patch b/community/mumble/CVE-2018-20743.2.patch deleted file mode 100644 index 9a7118b87c..0000000000 --- a/community/mumble/CVE-2018-20743.2.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 4761ca41ab1f611cd4a6d117f9f6cfd7c64f6b55 Mon Sep 17 00:00:00 2001 -From: MadMaurice <madmaurice@zom.bi> -Date: Fri, 31 Aug 2018 00:01:40 +0200 -Subject: [PATCH] Lower bucket params - -Use 1 tokens per second and 5 burst instead of 4 tokens per second and 30 burst ---- - src/murmur/ServerUser.cpp | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/murmur/ServerUser.cpp b/src/murmur/ServerUser.cpp -index e5c570d47..5356690de 100644 ---- a/src/murmur/ServerUser.cpp -+++ b/src/murmur/ServerUser.cpp -@@ -138,8 +138,8 @@ unsigned long millisecondsBetween(time_point start, time_point end) { - - #endif - --// Rate limiting: burst up to 30, 4 message per sec limit over longer time --LeakyBucket::LeakyBucket() : tokensPerSec(4), maxTokens(30), currentTokens(0) { -+// Rate limiting: burst up to 5, 1 message per sec limit over longer time -+LeakyBucket::LeakyBucket() : tokensPerSec(1), maxTokens(5), currentTokens(0) { - lastUpdate = now(); - } - diff --git a/community/mumble/boost-1.66.patch b/community/mumble/boost-1.66.patch deleted file mode 100644 index cf61106ce6..0000000000 --- a/community/mumble/boost-1.66.patch +++ /dev/null @@ -1,32 +0,0 @@ -From ea861fe86743c8402bbad77d8d1dd9de8dce447e Mon Sep 17 00:00:00 2001 -From: Mikkel Krautz <mikkel@krautz.dk> -Date: Fri, 29 Dec 2017 14:47:25 +0100 -Subject: [PATCH] AudioOutput: do not use non-existant template version of - std::abs. - -This change fixes AudioOutput to use the float overload of std::abs: - - float std::abs(float); - -instead of a non-existant template version. - -Fixes mumble-voip/mumble#3281 - -Needs-Backport: 1.2.x ---- - src/mumble/AudioOutput.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/mumble/AudioOutput.cpp b/src/mumble/AudioOutput.cpp -index cbe0c0e2b..7a0a5e2ab 100644 ---- a/src/mumble/AudioOutput.cpp -+++ b/src/mumble/AudioOutput.cpp -@@ -437,7 +437,7 @@ bool AudioOutput::mix(void *outbuff, unsigned int nsamp) { - top[2] = 0.0f; - } - -- if (std::abs<float>(front[0] * top[0] + front[1] * top[1] + front[2] * top[2]) > 0.01f) { -+ if (std::abs(front[0] * top[0] + front[1] * top[1] + front[2] * top[2]) > 0.01f) { - // Not perpendicular. Assume Y up and rotate 90 degrees. - - float azimuth = 0.0f; |