diff options
-rw-r--r-- | main/apk-tools/0001-gunzip-fix-ordering-of-boundary-callbacks.patch | 81 | ||||
-rw-r--r-- | main/apk-tools/APKBUILD | 6 |
2 files changed, 2 insertions, 85 deletions
diff --git a/main/apk-tools/0001-gunzip-fix-ordering-of-boundary-callbacks.patch b/main/apk-tools/0001-gunzip-fix-ordering-of-boundary-callbacks.patch deleted file mode 100644 index 0cbebfcd2f..0000000000 --- a/main/apk-tools/0001-gunzip-fix-ordering-of-boundary-callbacks.patch +++ /dev/null @@ -1,81 +0,0 @@ -From f126316c791371bd3dfd7c348b10e93e49f5e2d4 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Timo=20Ter=C3=A4s?= <timo.teras@iki.fi> -Date: Fri, 17 Dec 2010 09:36:19 +0200 -Subject: [PATCH] gunzip: fix ordering of boundary callbacks - -The boundary callback should not happen until all the uncompressed -data has been consumed. This previously seems to have worked -because normally gzip library returns "no error" instead of the -"stream end" if we extract exactly the amount of bytes remaining -in the archive. (Perhaps this was changed in new zlib.) In any -case, verification was broken with some apks due to this callback -ordering issue. ---- - src/gunzip.c | 32 ++++++++++++++++++++++++-------- - 1 files changed, 24 insertions(+), 8 deletions(-) - -diff --git a/src/gunzip.c b/src/gunzip.c -index aebaf76..df2bbbb 100644 ---- a/src/gunzip.c -+++ b/src/gunzip.c -@@ -27,6 +27,7 @@ struct apk_gzip_istream { - apk_multipart_cb cb; - void *cbctx; - void *cbprev; -+ apk_blob_t cbarg; - }; - - static ssize_t gzi_read(void *stream, void *ptr, size_t size) -@@ -48,6 +49,18 @@ static ssize_t gzi_read(void *stream, void *ptr, size_t size) - gis->zs.next_out = ptr; - - while (gis->zs.avail_out != 0 && gis->err == 0) { -+ if (!APK_BLOB_IS_NULL(gis->cbarg)) { -+ r = gis->cb(gis->cbctx, -+ gis->err ? APK_MPART_END : APK_MPART_BOUNDARY, -+ gis->cbarg); -+ if (r > 0) -+ r = -ECANCELED; -+ if (r != 0) { -+ gis->err = r; -+ goto ret; -+ } -+ gis->cbarg = APK_BLOB_NULL; -+ } - if (gis->zs.avail_in == 0) { - apk_blob_t blob; - -@@ -86,19 +99,22 @@ static ssize_t gzi_read(void *stream, void *ptr, size_t size) - gis->zs.avail_in == 0) - gis->err = 1; - if (gis->cb != NULL) { -+ gis->cbarg = APK_BLOB_PTR_LEN(gis->cbprev, (void *) gis->zs.next_in - gis->cbprev); -+ gis->cbprev = gis->zs.next_in; -+ } -+ /* If we hit end of the bitstream (not end -+ * of just this gzip), we need to do the -+ * callback here, as we won't be called again. -+ * For boundaries it should be postponed to not -+ * be called until next gzip read is started. */ -+ if (gis->err) { - r = gis->cb(gis->cbctx, - gis->err ? APK_MPART_END : APK_MPART_BOUNDARY, -- APK_BLOB_PTR_LEN(gis->cbprev, (void *) gis->zs.next_in - gis->cbprev)); -+ gis->cbarg); - if (r > 0) - r = -ECANCELED; -- if (r != 0) { -- gis->err = r; -- goto ret; -- } -- gis->cbprev = gis->zs.next_in; -- } -- if (gis->err) - goto ret; -+ } - inflateEnd(&gis->zs); - if (inflateInit2(&gis->zs, 15+32) != Z_OK) - return -ENOMEM; --- -1.7.3.3 - diff --git a/main/apk-tools/APKBUILD b/main/apk-tools/APKBUILD index dd36527a5f..9bb3c1bb25 100644 --- a/main/apk-tools/APKBUILD +++ b/main/apk-tools/APKBUILD @@ -1,14 +1,13 @@ # Maintainer: Natanael Copa <ncopa@alpinelinux.org> pkgname=apk-tools pkgver=2.0.7 -pkgrel=2 +pkgrel=1 pkgdesc="Alpine Package Keeper - package manager for alpine" subpackages="$pkgname-static" depends= makedepends="zlib-dev openssl-dev pkgconfig" source="http://git.alpinelinux.org/cgit/$pkgname/snapshot/$pkgname-$pkgver.tar.bz2 0001-info-return-error-if-owning-package-was-not-found.patch - 0001-gunzip-fix-ordering-of-boundary-callbacks.patch " url="http://git.alpinelinux.org/cgit/apk-tools/" @@ -51,5 +50,4 @@ static() { } md5sums="3c4591c594f9b2261ab588446a50d183 apk-tools-2.0.7.tar.bz2 -1364d38e784ad6cc04e157665903ef0c 0001-info-return-error-if-owning-package-was-not-found.patch -1ef0ab58cf611c1172e6053a96c46d19 0001-gunzip-fix-ordering-of-boundary-callbacks.patch" +1364d38e784ad6cc04e157665903ef0c 0001-info-return-error-if-owning-package-was-not-found.patch" |