diff -Nru ktnef-16.04.3/debian/changelog ktnef-16.04.3/debian/changelog --- ktnef-16.04.3/debian/changelog 2016-09-30 10:14:33.000000000 +0530 +++ ktnef-16.04.3/debian/changelog 2017-03-01 13:53:49.000000000 +0530 @@ -1,3 +1,13 @@ +ktnef (4:16.04.3-0ubuntu2) yakkety; urgency=medium + + * SECURITY UPDATE: Malicious writes during directory traversal. + - debian/patches/directory-traversal.patch + - Thanks to Eric Sesterhenn for reporting this issue, Albert Astals Cid for fixing this issue. + - No CVE number. + - fixes (LP: #1668552) + + -- v.naini Wed, 01 Mar 2017 13:53:49 +0530 + ktnef (4:16.04.3-0ubuntu1) yakkety; urgency=medium [ Scarlett Clark ] diff -Nru ktnef-16.04.3/debian/patches/directory-taversal.patch ktnef-16.04.3/debian/patches/directory-taversal.patch --- ktnef-16.04.3/debian/patches/directory-taversal.patch 1970-01-01 05:30:00.000000000 +0530 +++ ktnef-16.04.3/debian/patches/directory-taversal.patch 2017-03-01 13:53:39.000000000 +0530 @@ -0,0 +1,58 @@ +From 4ff38aa15487d69021aacad4b078500f77fb4ae8 Mon Sep 17 00:00:00 2001 +From: Albert Astals Cid +Date: Mon, 27 Feb 2017 19:03:49 +0100 +Subject: Fix Directory Traversal problem in ktnef + +Reported by Eric Sesterhenn + +Patch reviewed by Laurent Montel + +CCMAIL: eric.sesterhenn@x41-dsec.de +--- + src/ktnefparser.cpp | 15 ++++++++++++++- + 1 file changed, 14 insertions(+), 1 deletion(-) + +diff --git a/src/ktnefparser.cpp b/src/ktnefparser.cpp +index ce40e40..0678003 100644 +--- a/src/ktnefparser.cpp ++++ b/src/ktnefparser.cpp +@@ -41,7 +41,9 @@ + + #include + #include ++#include + #include ++#include + #include + #include + +@@ -446,7 +448,9 @@ bool KTNEFParser::extractFile(const QString &filename) const + bool KTNEFParser::ParserPrivate::extractAttachmentTo(KTNEFAttach *att, + const QString &dirname) + { +- QString filename = dirname + QLatin1Char('/'); ++ const QString destDir(QDir(dirname).absolutePath()); // get directory path without any "." or ".." ++ ++ QString filename = destDir + QLatin1Char('/'); + if (!att->fileName().isEmpty()) { + filename += att->fileName(); + } else { +@@ -462,6 +466,15 @@ bool KTNEFParser::ParserPrivate::extractAttachmentTo(KTNEFAttach *att, + if (!device_->seek(att->offset())) { + return false; + } ++ ++ const QFileInfo fi(filename); ++ if (!fi.absoluteFilePath().startsWith(destDir)) { ++ qWarning() << "Attempted extract into" << fi.absoluteFilePath() ++ << "which is outside of the extraction root folder" << destDir << "." ++ << "Changing export of contained files to extraction root folder."; ++ filename = destDir + QLatin1Char('/') + fi.fileName(); ++ } ++ + QSaveFile outfile(filename); + if (!outfile.open(QIODevice::WriteOnly)) { + return false; +-- +cgit v0.11.2 + diff -Nru ktnef-16.04.3/debian/patches/series ktnef-16.04.3/debian/patches/series --- ktnef-16.04.3/debian/patches/series 1970-01-01 05:30:00.000000000 +0530 +++ ktnef-16.04.3/debian/patches/series 2017-03-01 13:53:39.000000000 +0530 @@ -0,0 +1 @@ +directory-taversal.patch