gcab/0001-gcab-Fix-regression-fr...

52 lines
1.8 KiB
Diff

From 3365b4bd58dd7f13e786caf3c7234cf8116263d9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>
Date: Wed, 25 Jul 2018 12:45:24 +0200
Subject: [PATCH] gcab: Fix regression from commit a15d91073fd5d6be25
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Apparently, rewinding should reset the CDATA state.
See also:
https://bugzilla.redhat.com/show_bug.cgi?id=1608301
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
libgcab/gcab-folder.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/libgcab/gcab-folder.c b/libgcab/gcab-folder.c
index 1b09fa3..c0d6600 100644
--- a/libgcab/gcab-folder.c
+++ b/libgcab/gcab-folder.c
@@ -423,6 +423,7 @@ gcab_folder_extract (GCabFolder *self,
g_autoptr(GSList) files = NULL;
g_autoptr(cdata_t) cdata = g_new0 (cdata_t, 1);
guint32 nubytes = 0;
+ guint8 *reserved;
/* never loaded from a stream */
g_assert (self->cfolder != NULL);
@@ -433,7 +434,7 @@ gcab_folder_extract (GCabFolder *self,
files = g_slist_sort (g_slist_copy (self->files), (GCompareFunc)sort_by_offset);
/* this is allocated for every block, but currently unused */
- cdata->reserved = g_malloc (res_data);
+ cdata->reserved = reserved = g_malloc (res_data);
for (f = files; f != NULL; f = f->next) {
GCabFile *file = f->data;
@@ -454,6 +455,8 @@ gcab_folder_extract (GCabFolder *self,
if (!g_seekable_seek (G_SEEKABLE (data), self->cfolder->offsetdata,
G_SEEK_SET, cancellable, error))
return FALSE;
+ bzero(cdata, sizeof(cdata_t));
+ cdata->reserved = reserved;
nubytes = 0;
}
--
2.18.0.321.gffc6fa0e39