summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Kalnischkies <kalnischkies@gmail.com>2012-01-18 00:51:03 +0100
committerDavid Kalnischkies <kalnischkies@gmail.com>2012-01-18 00:51:03 +0100
commit65c72a4b84273bf8063076bd74861b5931c2b8a5 (patch)
tree9b1582e8783ce447197cabb67de6819d81a5e9a4
parentb711c01e777977a4f9e2b78d7ab91f09f3fdf03f (diff)
* apt-pkg/contrib/fileutl.h:
- store the offset in the internal fd before calculate size of the zlib-handled file to jump back to this place again It jumped back to the position of the content - which is wrong as the internal fd is compressed and even reseting to the beginning of the file doesn't work as zlib uses an internal buffer, so while we might haven't read anything yet zlib might have done so already…
-rw-r--r--apt-pkg/contrib/fileutl.cc4
-rw-r--r--debian/changelog7
2 files changed, 8 insertions, 3 deletions
diff --git a/apt-pkg/contrib/fileutl.cc b/apt-pkg/contrib/fileutl.cc
index 2bbf3a1b1..28898fc34 100644
--- a/apt-pkg/contrib/fileutl.cc
+++ b/apt-pkg/contrib/fileutl.cc
@@ -1347,6 +1347,7 @@ unsigned long long FileFd::Size()
// gzopen in "direct" mode as well
else if (d->gz && !gzdirect(d->gz) && size > 0)
{
+ off_t const oldPos = lseek(iFd,0,SEEK_CUR);
/* unfortunately zlib.h doesn't provide a gzsize(), so we have to do
* this ourselves; the original (uncompressed) file size is the last 32
* bits of the file */
@@ -1364,8 +1365,9 @@ unsigned long long FileFd::Size()
size = tmp_size;
#endif
- if (lseek(iFd, d->seekpos, SEEK_SET) < 0)
+ if (lseek(iFd, oldPos, SEEK_SET) < 0)
return _error->Errno("lseek","Unable to seek in gzipped file");
+
return size;
}
#endif
diff --git a/debian/changelog b/debian/changelog
index 2e8bcfb13..c7c33fef1 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -9,12 +9,15 @@ apt (0.8.16~exp10) UNRELEASED; urgency=low
* apt-pkg/deb/dpkgpm.cc:
- check if dpkg supports multiarch with --assert-multi-arch
and if it does be always explicit about the architecture
+ * apt-pkg/contrib/fileutl.h:
+ - store the offset in the internal fd before calculate size of
+ the zlib-handled file to jump back to this place again
[ Michael Vogt ]
- * apt-pkg/contrib/fileutils.h:
+ * apt-pkg/contrib/fileutl.h:
- fix segfault from python-apt testsuite
- -- David Kalnischkies <kalnischkies@gmail.com> Fri, 13 Jan 2012 17:29:07 +0100
+ -- David Kalnischkies <kalnischkies@gmail.com> Wed, 18 Jan 2012 00:47:54 +0100
apt (0.8.16~exp9) experimental; urgency=low