Package: release.debian.org
Severity: normal
User: release.debian.org@packages.debian.org
Usertags: freeze-exception
Please unblock hicolor-icon-theme for squeeze.
file-roller (2.30.2-2) unstable; urgency=low
.
* Only suggest lzma. Closes: #595117.
* Include some patches sitting in the upstream repository:
+ 01_rar_crasher.patch: fix a crasher with the rar command.
+ 02_escape_newlines.patch: handle the case of files with newlines
in their name.
+ 03_tar_xz_update.patch: update .tar.xz files without losing the
data in them. Closes: #594839.
I’m attaching the patches. The third issue is arguably RC (data loss).
Cheers,
--
.''`. Josselin Mouette
: :' :
`. `' “If you behave this way because you are blackmailed by someone,
`- […] I will see what I can do for you.” -- Jörg Schilling
From bac5d03a29a411c79e0d838d48c404900d30066d Mon Sep 17 00:00:00 2001
From: Paolo Bacchilega <paobac@src.gnome.org>
Date: Fri, 25 Jun 2010 10:45:32 +0000
Subject: [rar] fixed seg fault when there is an extra info line in the output
---
diff --git a/src/fr-command-rar.c b/src/fr-command-rar.c
index 482ab57..2c42ba4 100644
--- a/src/fr-command-rar.c
+++ b/src/fr-command-rar.c
@@ -117,6 +117,59 @@ process_line (char *line,
return;
}
+ if (! rar_comm->odd_line) {
+ FileData *fdata;
+
+ fdata = rar_comm->fdata;
+
+ /* read file info. */
+
+ fields = split_line (line, 6);
+ if (g_strv_length (fields) < 6) {
+ /* wrong line format, treat this line as a filename line */
+ g_strfreev (fields);
+ file_data_free (rar_comm->fdata);
+ rar_comm->fdata = NULL;
+ rar_comm->odd_line = TRUE;
+ }
+ else {
+ if ((strcmp (fields[2], "<->") == 0)
+ || (strcmp (fields[2], "<--") == 0))
+ {
+ /* ignore files that span more volumes */
+
+ file_data_free (rar_comm->fdata);
+ rar_comm->fdata = NULL;
+ }
+ else {
+ fdata->size = g_ascii_strtoull (fields[0], NULL, 10);
+ fdata->modified = mktime_from_string (fields[3], fields[4]);
+
+ if ((fields[5][1] == 'D') || (fields[5][0] == 'd')) {
+ char *tmp;
+
+ tmp = fdata->full_path;
+ fdata->full_path = g_strconcat (fdata->full_path, "/", NULL);
+
+ fdata->original_path = g_strdup (fdata->original_path);
+ fdata->free_original_path = TRUE;
+
+ g_free (tmp);
+
+ fdata->name = dir_name_from_path (fdata->full_path);
+ fdata->dir = TRUE;
+ }
+ else
+ fdata->name = g_strdup (file_name_from_path (fdata->full_path));
+
+ fr_command_add_file (comm, fdata);
+ rar_comm->fdata = NULL;
+ }
+
+ g_strfreev (fields);
+ }
+ }
+
if (rar_comm->odd_line) {
FileData *fdata;
@@ -141,48 +194,7 @@ process_line (char *line,
fdata->path = remove_level_from_path (fdata->full_path);
}
else {
- FileData *fdata;
-
- fdata = rar_comm->fdata;
-
- /* read file info. */
-
- fields = split_line (line, 6);
-
- if ((strcmp (fields[2], "<->") == 0)
- || (strcmp (fields[2], "<--") == 0))
- {
- /* ignore files that span more volumes */
-
- file_data_free (rar_comm->fdata);
- rar_comm->fdata = NULL;
- }
- else {
- fdata->size = g_ascii_strtoull (fields[0], NULL, 10);
- fdata->modified = mktime_from_string (fields[3], fields[4]);
-
- if ((fields[5][1] == 'D') || (fields[5][0] == 'd')) {
- char *tmp;
-
- tmp = fdata->full_path;
- fdata->full_path = g_strconcat (fdata->full_path, "/", NULL);
-
- fdata->original_path = g_strdup (fdata->original_path);
- fdata->free_original_path = TRUE;
-
- g_free (tmp);
-
- fdata->name = dir_name_from_path (fdata->full_path);
- fdata->dir = TRUE;
- }
- else
- fdata->name = g_strdup (file_name_from_path (fdata->full_path));
-
- fr_command_add_file (comm, fdata);
- rar_comm->fdata = NULL;
- }
- g_strfreev (fields);
}
rar_comm->odd_line = ! rar_comm->odd_line;
--
cgit v0.8.3.1
From 2194eddd71a01f178defa1137d7fab01acedf44b Mon Sep 17 00:00:00 2001
From: Paolo Bacchilega <paobac@src.gnome.org>
Date: Tue, 06 Jul 2010 07:31:15 +0000
Subject: escape new lines in filenames when saving the file list to a file
---
diff --git a/src/fr-archive.c b/src/fr-archive.c
index ff71e92..83d0889 100644
--- a/src/fr-archive.c
+++ b/src/fr-archive.c
@@ -1160,12 +1160,17 @@ save_list_to_temp_file (GList *file_list,
for (scan = file_list; scan != NULL; scan = scan->next) {
char *filename = scan->data;
+ filename = str_substitute (filename, "\n", "\\n");
if ((g_output_stream_write (G_OUTPUT_STREAM (ostream), filename, strlen (filename), NULL, error) < 0)
|| (g_output_stream_write (G_OUTPUT_STREAM (ostream), "\n", 1, NULL, error) < 0))
{
error_occurred = TRUE;
- break;
}
+
+ g_free (filename);
+
+ if (error_occurred)
+ break;
}
if (! error_occurred && ! g_output_stream_close (G_OUTPUT_STREAM (ostream), NULL, error))
error_occurred = TRUE;
--
cgit v0.8.3.1
From c668bfe6175ed0891dd2a42bfe590a8adf7be8de Mon Sep 17 00:00:00 2001
From: Paolo Bacchilega <paobac@src.gnome.org>
Date: Fri, 03 Sep 2010 18:09:04 +0000
Subject: fixed update of files in .tar.xz archives
[bug #628717]
---
diff --git a/src/fr-command-tar.c b/src/fr-command-tar.c
index 53ab601..650a197 100644
--- a/src/fr-command-tar.c
+++ b/src/fr-command-tar.c
@@ -769,7 +769,7 @@ get_uncompressed_name (FrCommandTar *c_tar,
/* X.tar.xz --> X.tar
* (There doesn't seem to be a shorthand suffix) */
if (file_extension_is (e_filename, ".tar.xz"))
- new_name[l - 5] = 0;
+ new_name[l - 3] = 0;
}
else if (is_mime_type (comm->mime_type, "application/x-lzop-compressed-tar")) {
/* X.tzo --> X.tar
--
cgit v0.8.3.1
Attachment:
signature.asc
Description: This is a digitally signed message part