public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Andreas Sturmlechner" <asturm@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/gentoo:master commit in: kde-apps/okular/, kde-apps/okular/files/
Date: Mon, 10 Sep 2018 20:38:37 +0000 (UTC)	[thread overview]
Message-ID: <1536611883.75a72fe24a730420ec692367e4e108d4a0a6d617.asturm@gentoo> (raw)

commit:     75a72fe24a730420ec692367e4e108d4a0a6d617
Author:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Mon Sep 10 20:33:04 2018 +0000
Commit:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Mon Sep 10 20:38:03 2018 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=75a72fe2

kde-apps/okular: Fix path traversal issue when extracting .okular file

With a specially crafted .okular files it was possible to trick okular
to create temporary files outside the temporary folder.

Bug: https://bugs.gentoo.org/665662
KDE-Bug: https://bugs.kde.org/show_bug.cgi?id=398096
See also: https://phabricator.kde.org/D15192
Package-Manager: Portage-2.3.49, Repoman-2.3.10

 .../okular-18.04.3-path-traversal-issue.patch      |  46 +++++++++
 kde-apps/okular/okular-18.04.3-r1.ebuild           | 106 +++++++++++++++++++++
 2 files changed, 152 insertions(+)

diff --git a/kde-apps/okular/files/okular-18.04.3-path-traversal-issue.patch b/kde-apps/okular/files/okular-18.04.3-path-traversal-issue.patch
new file mode 100644
index 00000000000..216f235d864
--- /dev/null
+++ b/kde-apps/okular/files/okular-18.04.3-path-traversal-issue.patch
@@ -0,0 +1,46 @@
+From 8ff7abc14d41906ad978b6bc67e69693863b9d47 Mon Sep 17 00:00:00 2001
+From: Albert Astals Cid <aacid@kde.org>
+Date: Mon, 3 Sep 2018 21:14:30 +0200
+Subject: Fix path traversal issue when extracting an .okular file
+
+Summary:
+With specially crafted .okular files you can trick okular to create temporary files outside the temporary folder
+
+We fix that by making sure the file doesn't have folders since the ones we create don't
+
+BUGS: 398096
+
+Subscribers: okular-devel
+
+Tags: #okular
+
+Differential Revision: https://phabricator.kde.org/D15192
+---
+ core/document.cpp | 12 ++++++++++++
+ 1 file changed, 12 insertions(+)
+
+diff --git a/core/document.cpp b/core/document.cpp
+index 5e3c169..7d46173 100644
+--- a/core/document.cpp
++++ b/core/document.cpp
+@@ -4819,6 +4819,18 @@ ArchiveData *DocumentPrivate::unpackDocumentArchive( const QString &archivePath
+         return nullptr;
+ 
+     const KArchiveDirectory * mainDir = okularArchive.directory();
++
++    // Check the archive doesn't have folders, we don't create them when saving the archive
++    // and folders mean paths and paths mean path traversal issues
++    for ( const QString &entry : mainDir->entries() )
++    {
++        if ( mainDir->entry( entry )->isDirectory() )
++        {
++            qWarning() << "Warning: Found a directory inside" << archivePath << " - Okular does not create files like that so it is most probably forged.";
++            return nullptr;
++        }
++    }
++
+     const KArchiveEntry * mainEntry = mainDir->entry( QStringLiteral("content.xml") );
+     if ( !mainEntry || !mainEntry->isFile() )
+         return nullptr;
+-- 
+cgit v0.11.2

diff --git a/kde-apps/okular/okular-18.04.3-r1.ebuild b/kde-apps/okular/okular-18.04.3-r1.ebuild
new file mode 100644
index 00000000000..f802a174ab1
--- /dev/null
+++ b/kde-apps/okular/okular-18.04.3-r1.ebuild
@@ -0,0 +1,106 @@
+# Copyright 1999-2018 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+KDE_HANDBOOK="forceoptional"
+KDE_TEST="forceoptional"
+VIRTUALX_REQUIRED="test"
+inherit kde5
+
+DESCRIPTION="Universal document viewer based on KDE Frameworks"
+HOMEPAGE="https://okular.kde.org https://www.kde.org/applications/graphics/okular"
+KEYWORDS="~amd64 ~x86"
+IUSE="chm crypt djvu epub +image-backend markdown mobi mobile +pdf plucker +postscript share speech +tiff"
+
+DEPEND="
+	$(add_frameworks_dep kactivities)
+	$(add_frameworks_dep karchive)
+	$(add_frameworks_dep kbookmarks)
+	$(add_frameworks_dep kcompletion)
+	$(add_frameworks_dep kconfig)
+	$(add_frameworks_dep kconfigwidgets)
+	$(add_frameworks_dep kcoreaddons)
+	$(add_frameworks_dep kcrash)
+	$(add_frameworks_dep kio)
+	$(add_frameworks_dep kjs)
+	$(add_frameworks_dep kparts)
+	$(add_frameworks_dep kpty)
+	$(add_frameworks_dep kwallet)
+	$(add_frameworks_dep threadweaver)
+	$(add_qt_dep qtdbus)
+	$(add_qt_dep qtgui)
+	$(add_qt_dep qtprintsupport)
+	$(add_qt_dep qtsvg)
+	$(add_qt_dep qtwidgets)
+	media-libs/freetype
+	media-libs/phonon[qt5(+)]
+	sys-libs/zlib
+	chm? (
+		$(add_frameworks_dep khtml)
+		dev-libs/chmlib
+	)
+	crypt? ( app-crypt/qca:2[qt5(+)] )
+	djvu? ( app-text/djvu )
+	epub? ( app-text/ebook-tools )
+	image-backend? (
+		$(add_kdeapps_dep libkexiv2)
+		$(add_qt_dep qtgui 'gif,jpeg,png')
+	)
+	markdown? ( app-text/discount )
+	mobi? ( $(add_kdeapps_dep kdegraphics-mobipocket) )
+	pdf? ( app-text/poppler[qt5] )
+	plucker? ( virtual/jpeg:0 )
+	postscript? ( app-text/libspectre )
+	share? ( $(add_frameworks_dep purpose) )
+	speech? ( $(add_qt_dep qtspeech) )
+	tiff? ( media-libs/tiff:0 )
+"
+RDEPEND="${DEPEND}
+	image-backend? ( $(add_frameworks_dep kimageformats) )
+	mobile? (
+		$(add_frameworks_dep kirigami)
+		$(add_qt_dep qtquickcontrols)
+	)
+"
+
+PATCHES=(
+	"${FILESDIR}/${PN}-tests.patch"
+	"${FILESDIR}/${P}-path-traversal-issue.patch"
+)
+
+src_prepare() {
+	kde5_src_prepare
+	use mobile || cmake_comment_add_subdirectory mobile
+	use test || cmake_comment_add_subdirectory conf/autotests
+}
+
+src_configure() {
+	local mycmakeargs=(
+		$(cmake-utils_use_find_package chm CHM)
+		$(cmake-utils_use_find_package crypt Qca-qt5)
+		$(cmake-utils_use_find_package djvu DjVuLibre)
+		$(cmake-utils_use_find_package epub EPub)
+		$(cmake-utils_use_find_package image-backend KF5KExiv2)
+		$(cmake-utils_use_find_package markdown Discount)
+		$(cmake-utils_use_find_package mobi QMobipocket)
+		$(cmake-utils_use_find_package pdf Poppler)
+		$(cmake-utils_use_find_package plucker JPEG)
+		$(cmake-utils_use_find_package postscript LibSpectre)
+		$(cmake-utils_use_find_package share KDEExperimentalPurpose)
+		$(cmake-utils_use_find_package speech Qt5TextToSpeech)
+		$(cmake-utils_use_find_package tiff TIFF)
+	)
+
+	kde5_src_configure
+}
+
+src_test() {
+	# mainshelltest hangs, chmgeneratortest fails, bug #603116
+	# parttest hangs, bug #641728
+	local myctestargs=(
+		-E "(mainshelltest|chmgeneratortest|parttest)"
+	)
+
+	kde5_src_test
+}


             reply	other threads:[~2018-09-10 20:38 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-09-10 20:38 Andreas Sturmlechner [this message]
  -- strict thread matches above, loose matches on Subject: below --
2024-09-10 18:34 [gentoo-commits] repo/gentoo:master commit in: kde-apps/okular/, kde-apps/okular/files/ Andreas Sturmlechner
2024-09-02 13:54 Andreas Sturmlechner
2020-03-14 17:59 Andreas Sturmlechner
2018-12-13 17:40 Andreas Sturmlechner
2017-04-23 13:38 Andreas Sturmlechner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1536611883.75a72fe24a730420ec692367e4e108d4a0a6d617.asturm@gentoo \
    --to=asturm@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox