You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
1.5 KiB
44 lines
1.5 KiB
From 7237276439281abfedd619ecf6f5c17fae411137 Mon Sep 17 00:00:00 2001 |
|
From: Ondrej Holy <oholy@redhat.com> |
|
Date: Tue, 30 Nov 2021 13:45:07 +0100 |
|
Subject: [PATCH] extractor: Fix extraction to root directory |
|
|
|
An extraction to the root of an archive which contains the "/" path |
|
leads to crashes. Let's handle this rare corner case. |
|
|
|
Relates: https://gitlab.gnome.org/GNOME/gnome-autoar/-/issues/38 |
|
--- |
|
gnome-autoar/autoar-extractor.c | 10 +++++++++- |
|
1 file changed, 9 insertions(+), 1 deletion(-) |
|
|
|
diff --git a/gnome-autoar/autoar-extractor.c b/gnome-autoar/autoar-extractor.c |
|
index bb60901..ab68c47 100644 |
|
--- a/gnome-autoar/autoar-extractor.c |
|
+++ b/gnome-autoar/autoar-extractor.c |
|
@@ -857,6 +857,14 @@ autoar_extractor_get_common_prefix (GList *files, |
|
while (!g_file_has_parent (prefix, root)) { |
|
file = g_file_get_parent (prefix); |
|
g_object_unref (prefix); |
|
+ |
|
+ /* This can happen if the archive contains the "/" path and the destination |
|
+ * is "/" as well. |
|
+ */ |
|
+ if (file == NULL) { |
|
+ return NULL; |
|
+ } |
|
+ |
|
prefix = file; |
|
} |
|
|
|
@@ -984,7 +992,7 @@ autoar_extractor_do_write_entry (AutoarExtractor *self, |
|
{ |
|
GFile *parent; |
|
parent = g_file_get_parent (dest); |
|
- if (!g_file_query_exists (parent, self->cancellable)) |
|
+ if (parent && !g_file_query_exists (parent, self->cancellable)) |
|
g_file_make_directory_with_parents (parent, |
|
self->cancellable, |
|
NULL); |
|
-- |
|
2.33.1 |
|
|
|
|