git » kcoreaddons.git » commit 9c9a599

Fix CVE-2016-7966

author Antonio Rojas
2016-10-07 06:18:57 UTC
committer Antonio Rojas
2016-10-07 06:18:57 UTC
parent d2c4eee65999e450f4b6bb49fb4bc9f8475b7b6b

Fix CVE-2016-7966

CVE-2016-7966.patch +71 -0
PKGBUILD +7 -3

diff --git a/CVE-2016-7966.patch b/CVE-2016-7966.patch
new file mode 100644
index 0000000..c1bf19c
--- /dev/null
+++ b/CVE-2016-7966.patch
@@ -0,0 +1,71 @@
+diff --git a/autotests/kjobtest.cpp b/autotests/kjobtest.cpp
+index 88be4ac..139b9be 100644
+--- a/autotests/kjobtest.cpp
++++ b/autotests/kjobtest.cpp
+@@ -276,6 +276,7 @@ void KJobTest::testDelegateUsage()
+     TestJob *job1 = new TestJob;
+     TestJob *job2 = new TestJob;
+     TestJobUiDelegate *delegate = new TestJobUiDelegate;
++    QPointer<TestJobUiDelegate> guard(delegate);
+ 
+     QVERIFY(job1->uiDelegate() == 0);
+     job1->setUiDelegate(delegate);
+@@ -284,6 +285,10 @@ void KJobTest::testDelegateUsage()
+     QVERIFY(job2->uiDelegate() == 0);
+     job2->setUiDelegate(delegate);
+     QVERIFY(job2->uiDelegate() == 0);
++
++    delete job1;
++    delete job2;
++    QVERIFY(guard.isNull()); // deleted by job1
+ }
+ 
+ void KJobTest::testNestedExec()
+diff --git a/autotests/ktexttohtmltest.cpp b/autotests/ktexttohtmltest.cpp
+index 474f0ca..c5690e8 100644
+--- a/autotests/ktexttohtmltest.cpp
++++ b/autotests/ktexttohtmltest.cpp
+@@ -30,6 +30,15 @@ QTEST_MAIN(KTextToHTMLTest)
+ 
+ Q_DECLARE_METATYPE(KTextToHTML::Options)
+ 
++#ifndef Q_OS_WIN
++void initLocale()
++{
++    setenv("LC_ALL", "en_US.utf-8", 1);
++}
++Q_CONSTRUCTOR_FUNCTION(initLocale)
++#endif
++
++
+ void KTextToHTMLTest::testGetEmailAddress()
+ {
+     // empty input
+@@ -372,6 +381,17 @@ void KTextToHTMLTest::testHtmlConvert_data()
+     QTest::newRow("url-in-parenthesis-3") << "bla (http://www.kde.org - section 5.2)"
+                                           << KTextToHTML::Options(KTextToHTML::PreserveSpaces)
+                                           << "bla (<a href=\"http://www.kde.org\">http://www.kde.org</a> - section 5.2)";
++    
++   // Fix url as foo <<url> <url>> when we concatened them.
++   QTest::newRow("url-with-url") << "foo <http://www.kde.org/ <http://www.kde.org/>>"
++                               << KTextToHTML::Options(KTextToHTML::PreserveSpaces)
++                               << "foo &lt;<a href=\"http://www.kde.org/ \">http://www.kde.org/ </a>&lt;<a href=\"http://www.kde.org/\">http://www.kde.org/</a>&gt;&gt;";
++
++   //Fix url exploit
++   QTest::newRow("url-exec-html") << "https://\"><!--"
++                               << KTextToHTML::Options(KTextToHTML::PreserveSpaces)
++                               << "https://\"><!--";
++
+ }
+ 
+ 
+diff --git a/autotests/kurlmimedatatest.cpp b/autotests/kurlmimedatatest.cpp
+index 5e55d9e..264879f 100644
+--- a/autotests/kurlmimedatatest.cpp
++++ b/autotests/kurlmimedatatest.cpp
+@@ -135,4 +135,5 @@ void KUrlMimeDataTest::testMostLocalUrlList()
+         QCOMPARE(qurls[i], static_cast<QUrl>(localUrls[i]));
+     }
+ 
++    delete mimeData;
+ }
diff --git a/PKGBUILD b/PKGBUILD
index a17a1c8..32d4774 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -3,7 +3,7 @@
 
 pkgname=kcoreaddons
 pkgver=5.26.0
-pkgrel=1
+pkgrel=2
 pkgdesc='Addons to QtCore'
 arch=('i686' 'x86_64')
 url='https://community.kde.org/Frameworks'
@@ -11,11 +11,15 @@ license=('LGPL')
 depends=('qt5-base' 'shared-mime-info')
 makedepends=('extra-cmake-modules' 'qt5-tools')
 groups=('kf5')
-source=("http://download.kde.org/stable/frameworks/${pkgver%.*}/${pkgname}-${pkgver}.tar.xz")
-md5sums=('263530a26fd0b80238827d2d97225e7b')
+source=("http://download.kde.org/stable/frameworks/${pkgver%.*}/${pkgname}-${pkgver}.tar.xz" CVE-2016-7966.patch)
+md5sums=('263530a26fd0b80238827d2d97225e7b'
+         '2078f5ef9f761df6f7701ba96c046125')
 
 prepare() {
   mkdir -p build
+
+  cd $pkgname-$pkgver
+  patch -p1 -i ../CVE-2016-7966.patch # https://www.kde.org/info/security/advisory-20161006-1.txt
 }
 
 build() {