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