Your message dated Thu, 30 Mar 2017 19:27:00 +0000
with message-id <[email protected]>
and subject line Re: Bug#859023: unblock: karchive/5.28.0-2
has caused the Debian Bug report #859023,
regarding unblock: karchive/5.28.0-2
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)


-- 
859023: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=859023
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
User: [email protected]
Usertags: unblock

Dear release team,

Checking some of the KDE frameworks bugs and upstream fixes I stumbled upon a 
couple of changes in karchive that I think that it would be good to include 
for stretch. The changes consist on 3 new upstream patches to fix 2 problems:
  + Fix the seek implementation in KCompressionDevice (the only user that I've
    found is libkdeedu's libkeduvocdocument4).
    Patches: Fix-KCompressionDevice-to-work-with-Qt-5.7.patch
             Fix-my-fix-for-KCompressionDevice-seek.patch
  + A minor leak fix
    Patch: Fix-Potential-leak-of-memory-pointed-to-by-limitedDev.patch

I'm attaching the debdiff between the 5.28.0-1 and 5.28.0-2 versions.

This patches are included in the 5.28.0-2 version currently in unstable and it 
has already built in all the release archs.

Please unblock package karchive

Happy hacking,

unblock karchive/5.28.0-2

-- System Information:
Debian Release: 9.0
  APT prefers unstable-debug
  APT policy: (500, 'unstable-debug'), (500, 'testing-debug'), (500, 
'testing'), (500, 'stable'), (50, 'unstable'), (1, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386, armhf

Kernel: Linux 4.9.0-1-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash
Init: systemd (via /run/systemd/system)
diff -Nru karchive-5.28.0/debian/changelog karchive-5.28.0/debian/changelog
--- karchive-5.28.0/debian/changelog    2016-11-18 16:00:41.000000000 +0100
+++ karchive-5.28.0/debian/changelog    2017-03-29 15:09:44.000000000 +0200
@@ -1,3 +1,13 @@
+karchive (5.28.0-2) unstable; urgency=medium
+
+  * Add upstream patches for KCompressionDevice::seek:
+    + Fix-KCompressionDevice-to-work-with-Qt-5.7.patch
+    + Fix-my-fix-for-KCompressionDevice-seek.patch
+  * Backport upstream patch:
+    + Fix-Potential-leak-of-memory-pointed-to-by-limitedDev.patch
+
+ -- Maximiliano Curia <[email protected]>  Wed, 29 Mar 2017 15:09:44 +0200
+
 karchive (5.28.0-1) unstable; urgency=medium
 
   [ Automatic packaging ]
diff -Nru 
karchive-5.28.0/debian/patches/Fix-KCompressionDevice-to-work-with-Qt-5.7.patch 
karchive-5.28.0/debian/patches/Fix-KCompressionDevice-to-work-with-Qt-5.7.patch
--- 
karchive-5.28.0/debian/patches/Fix-KCompressionDevice-to-work-with-Qt-5.7.patch 
    1970-01-01 01:00:00.000000000 +0100
+++ 
karchive-5.28.0/debian/patches/Fix-KCompressionDevice-to-work-with-Qt-5.7.patch 
    2017-03-29 15:09:44.000000000 +0200
@@ -0,0 +1,78 @@
+From: Albert Astals Cid <[email protected]>
+Date: Sat, 4 Feb 2017 17:02:34 +0100
+Subject: Fix KCompressionDevice to work with Qt >= 5.7
+
+Don't use QIODevice:pos to track our pos, doesn't do what we want it to do.
+Call QIODevice::seek at the beginning as documentation says has to be done.
+
+Differential Revision: 4422
+---
+ src/kcompressiondevice.cpp | 16 ++++++++++------
+ 1 file changed, 10 insertions(+), 6 deletions(-)
+
+diff --git a/src/kcompressiondevice.cpp b/src/kcompressiondevice.cpp
+index de22bf8..04466a6 100644
+--- a/src/kcompressiondevice.cpp
++++ b/src/kcompressiondevice.cpp
+@@ -48,6 +48,7 @@ public:
+         , bOpenedUnderlyingDevice(false)
+         , bIgnoreData(false)
+         , type(KCompressionDevice::None)
++        , deviceReadPos(0)
+     {
+     }
+     bool bNeedHeader;
+@@ -59,6 +60,7 @@ public:
+     KFilterBase::Result result;
+     KFilterBase *filter;
+     KCompressionDevice::CompressionType type;
++    qint64 deviceReadPos;
+ };
+ 
+ KFilterBase 
*KCompressionDevice::filterForCompressionType(KCompressionDevice::CompressionType
 type)
+@@ -174,8 +176,10 @@ void KCompressionDevice::close()
+ 
+ bool KCompressionDevice::seek(qint64 pos)
+ {
+-    qint64 ioIndex = this->pos(); // current position
+-    if (ioIndex == pos) {
++    if (!QIODevice::seek(pos))
++        return false;
++
++    if (d->deviceReadPos == pos) {
+         return true;
+     }
+ 
+@@ -189,13 +193,13 @@ bool KCompressionDevice::seek(qint64 pos)
+         d->result = KFilterBase::Ok;
+         d->filter->setInBuffer(0L, 0);
+         d->filter->reset();
+-        QIODevice::seek(pos);
++        d->deviceReadPos = 0;
+         return d->filter->device()->reset();
+     }
+ 
+     qint64 bytesToRead;
+-    if (ioIndex < pos) { // we can start from here
+-        bytesToRead = pos - ioIndex;
++    if (d->deviceReadPos < pos) { // we can start from here
++        bytesToRead = pos - d->deviceReadPos;
+     } else {
+         // we have to start from 0 ! Ugly and slow, but better than the 
previous
+         // solution (KTarGz was allocating everything into memory)
+@@ -210,7 +214,6 @@ bool KCompressionDevice::seek(qint64 pos)
+     d->bIgnoreData = true;
+     const bool result = (read(dummy.data(), bytesToRead) == bytesToRead);
+     d->bIgnoreData = false;
+-    QIODevice::seek(pos);
+     return result;
+ }
+ 
+@@ -303,6 +306,7 @@ qint64 KCompressionDevice::readData(char *data, qint64 
maxlen)
+         filter->setOutBuffer(data, availOut);
+     }
+ 
++    d->deviceReadPos += dataReceived;
+     return dataReceived;
+ }
+ 
diff -Nru 
karchive-5.28.0/debian/patches/Fix-my-fix-for-KCompressionDevice-seek.patch 
karchive-5.28.0/debian/patches/Fix-my-fix-for-KCompressionDevice-seek.patch
--- karchive-5.28.0/debian/patches/Fix-my-fix-for-KCompressionDevice-seek.patch 
1970-01-01 01:00:00.000000000 +0100
+++ karchive-5.28.0/debian/patches/Fix-my-fix-for-KCompressionDevice-seek.patch 
2017-03-29 15:09:44.000000000 +0200
@@ -0,0 +1,50 @@
+From: Albert Astals Cid <[email protected]>
+Date: Sun, 5 Feb 2017 01:49:42 +0100
+Subject: Fix my fix for KCompressionDevice::seek
+
+Differential Revision: https://phabricator.kde.org/D4437
+---
+ src/kcompressiondevice.cpp | 15 +++++++++++----
+ 1 file changed, 11 insertions(+), 4 deletions(-)
+
+diff --git a/src/kcompressiondevice.cpp b/src/kcompressiondevice.cpp
+index 04466a6..2b70ae0 100644
+--- a/src/kcompressiondevice.cpp
++++ b/src/kcompressiondevice.cpp
+@@ -176,11 +176,8 @@ void KCompressionDevice::close()
+ 
+ bool KCompressionDevice::seek(qint64 pos)
+ {
+-    if (!QIODevice::seek(pos))
+-        return false;
+-
+     if (d->deviceReadPos == pos) {
+-        return true;
++        return QIODevice::seek(pos);
+     }
+ 
+     //qDebug() << "seek(" << pos << ") called, current pos=" << ioIndex;
+@@ -188,6 +185,9 @@ bool KCompressionDevice::seek(qint64 pos)
+     Q_ASSERT(d->filter->mode() == QIODevice::ReadOnly);
+ 
+     if (pos == 0) {
++        if (!QIODevice::seek(pos))
++            return false;
++
+         // We can forget about the cached data
+         d->bNeedHeader = !d->bSkipHeaders;
+         d->result = KFilterBase::Ok;
+@@ -200,6 +200,13 @@ bool KCompressionDevice::seek(qint64 pos)
+     qint64 bytesToRead;
+     if (d->deviceReadPos < pos) { // we can start from here
+         bytesToRead = pos - d->deviceReadPos;
++        // Since we're going to do a read() below
++        // we need to reset the internal QIODevice pos to the real position 
we are
++        // so that after read() we are indeed pointing to the pos seek
++        // asked us to be in
++        if (!QIODevice::seek(d->deviceReadPos)) {
++            return false;
++        }
+     } else {
+         // we have to start from 0 ! Ugly and slow, but better than the 
previous
+         // solution (KTarGz was allocating everything into memory)
diff -Nru 
karchive-5.28.0/debian/patches/Fix-Potential-leak-of-memory-pointed-to-by-limitedDev.patch
 
karchive-5.28.0/debian/patches/Fix-Potential-leak-of-memory-pointed-to-by-limitedDev.patch
--- 
karchive-5.28.0/debian/patches/Fix-Potential-leak-of-memory-pointed-to-by-limitedDev.patch
  1970-01-01 01:00:00.000000000 +0100
+++ 
karchive-5.28.0/debian/patches/Fix-Potential-leak-of-memory-pointed-to-by-limitedDev.patch
  2017-03-29 15:09:44.000000000 +0200
@@ -0,0 +1,20 @@
+From: Leslie Zhai <[email protected]>
+Date: Wed, 1 Mar 2017 16:42:30 +0800
+Subject: Fix Potential leak of memory pointed to by 'limitedDev'.
+
+REVIEW: 129976
+---
+ src/kzip.cpp | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/kzip.cpp b/src/kzip.cpp
+index 94d4276..d7216c1 100644
+--- a/src/kzip.cpp
++++ b/src/kzip.cpp
+@@ -1423,5 +1423,6 @@ QIODevice *KZipFileEntry::createDevice() const
+     qCritical() << "This zip file contains files compressed with method"
+                 << encoding() << ", this method is currently not supported by 
KZip,"
+                 << "please use a command-line tool to handle this file.";
++    delete limitedDev;
+     return 0;
+ }
diff -Nru karchive-5.28.0/debian/patches/series 
karchive-5.28.0/debian/patches/series
--- karchive-5.28.0/debian/patches/series       1970-01-01 01:00:00.000000000 
+0100
+++ karchive-5.28.0/debian/patches/series       2017-03-29 15:09:44.000000000 
+0200
@@ -0,0 +1,3 @@
+Fix-KCompressionDevice-to-work-with-Qt-5.7.patch
+Fix-my-fix-for-KCompressionDevice-seek.patch
+Fix-Potential-leak-of-memory-pointed-to-by-limitedDev.patch

--- End Message ---
--- Begin Message ---
Maximiliano Curia:
> Package: release.debian.org
> Severity: normal
> User: [email protected]
> Usertags: unblock
> 
> Dear release team,
> 
> Checking some of the KDE frameworks bugs and upstream fixes I stumbled upon a 
> couple of changes in karchive that I think that it would be good to include 
> for stretch. The changes consist on 3 new upstream patches to fix 2 problems:
>   + Fix the seek implementation in KCompressionDevice (the only user that I've
>     found is libkdeedu's libkeduvocdocument4).
>     Patches: Fix-KCompressionDevice-to-work-with-Qt-5.7.patch
>              Fix-my-fix-for-KCompressionDevice-seek.patch
>   + A minor leak fix
>     Patch: Fix-Potential-leak-of-memory-pointed-to-by-limitedDev.patch
> 
> I'm attaching the debdiff between the 5.28.0-1 and 5.28.0-2 versions.
> 
> This patches are included in the 5.28.0-2 version currently in unstable and 
> it 
> has already built in all the release archs.
> 
> Please unblock package karchive
> 
> Happy hacking,
> 
> unblock karchive/5.28.0-2
> 
> [...]

Unblocked, thanks.

~Niels

--- End Message ---

Reply via email to