Package: release.debian.org Severity: normal Tags: jessie User: release.debian....@packages.debian.org Usertags: pu
Hello, I would like to update xarchiver in Jessie because of bug https://bugs.debian.org/822115 The attempt to cancel the archive extraction with Xarchiver's Thunar plugin currently crashes the application and sometimes even the X session is killed which may cause data loss. I have applied a patch in Sid/Testing and tested the same one in Jessie. It works for me. Please find attached the debdiff. Regards, Markus
diff -Nru xarchiver-0.5.4/debian/changelog xarchiver-0.5.4/debian/changelog --- xarchiver-0.5.4/debian/changelog 2014-09-29 16:06:53.000000000 +0200 +++ xarchiver-0.5.4/debian/changelog 2016-05-08 15:41:37.000000000 +0200 @@ -1,3 +1,12 @@ +xarchiver (1:0.5.4-1+deb8u1) jessie; urgency=medium + + * Add cancel-extraction-crash.patch. + When using the "extract here" feature of Xarchiver's Thunar plugin, the + attempt to cancel the extraction could crash the application or even the + whole desktop session. (Closes: #802019) + + -- Markus Koschany <a...@debian.org> Sun, 08 May 2016 15:40:11 +0200 + xarchiver (1:0.5.4-1) unstable; urgency=medium * Imported Upstream version 0.5.4. diff -Nru xarchiver-0.5.4/debian/patches/cancel-extraction-crash.patch xarchiver-0.5.4/debian/patches/cancel-extraction-crash.patch --- xarchiver-0.5.4/debian/patches/cancel-extraction-crash.patch 1970-01-01 01:00:00.000000000 +0100 +++ xarchiver-0.5.4/debian/patches/cancel-extraction-crash.patch 2016-05-08 15:41:37.000000000 +0200 @@ -0,0 +1,62 @@ +From: Markus Koschany <a...@debian.org> +Date: Sun, 24 Apr 2016 19:46:41 +0200 +Subject: cancel extraction crash + +Fix crash when cancelling the progress bar of Xarchiver's Thunar plugin. +This patch was taken from Xarchiver's Github fork. The original development has +stopped at sourceforge.net. + +Origin: https://github.com/ib/xarchiver/commit/cfa1d536312abb8d81f9cd74c15cf21038f03a8c +Forwarded: no +--- + src/interface.c | 18 ++++++++++-------- + 1 file changed, 10 insertions(+), 8 deletions(-) + +diff --git a/src/interface.c b/src/interface.c +index 79ffd36..b9aa4f9 100644 +--- a/src/interface.c ++++ b/src/interface.c +@@ -47,8 +47,8 @@ static const GtkTargetEntry drop_targets[] = + + extern gboolean unrar,batch_mode; + +-static gboolean xa_progress_dialog_delete_event (GtkWidget *caller,GdkEvent *event,GPid pid); +-static void xa_progress_dialog_stop_action (GtkWidget *widget,GPid pid); ++static gboolean xa_progress_dialog_delete_event (GtkWidget *caller,GdkEvent *event,GPid *pid); ++static void xa_progress_dialog_stop_action (GtkWidget *widget,GPid *pid); + + void xa_create_main_window (GtkWidget *xa_main_window,gboolean show_location,gboolean show_output_menu_item,gboolean show_sidebar) + { +@@ -1577,8 +1577,8 @@ Progress_bar_data *xa_create_progress_bar(gboolean flag,XArchive *archive) + cancel_button = gtk_button_new_from_stock ("gtk-cancel"); + gtk_box_pack_end (GTK_BOX (action_area),cancel_button,TRUE,TRUE,12); + +- g_signal_connect (G_OBJECT (cancel_button), "clicked", G_CALLBACK (xa_progress_dialog_stop_action), GINT_TO_POINTER (archive->child_pid)); +- g_signal_connect (G_OBJECT (pb->progress_window),"delete_event",G_CALLBACK (xa_progress_dialog_delete_event),GINT_TO_POINTER (archive->child_pid)); ++ g_signal_connect (G_OBJECT (cancel_button), "clicked", G_CALLBACK (xa_progress_dialog_stop_action), &archive->child_pid); ++ g_signal_connect (G_OBJECT (pb->progress_window),"delete_event",G_CALLBACK (xa_progress_dialog_delete_event),&archive->child_pid); + } + gtk_widget_show_all(pb->progress_window); + return pb; +@@ -1616,15 +1616,17 @@ void xa_icon_theme_changed (GtkIconTheme *icon_theme,gpointer data) + * time as the filenames currently displayed. What of the other tabs then? + }*/ + +-static gboolean xa_progress_dialog_delete_event (GtkWidget *caller,GdkEvent *event,GPid pid) ++static gboolean xa_progress_dialog_delete_event (GtkWidget *caller,GdkEvent *event,GPid *pid) + { +- kill (pid,SIGINT); ++ if(pid != NULL && *pid != 0) ++ kill (*pid,SIGINT); + return TRUE; + } + +-static void xa_progress_dialog_stop_action (GtkWidget *widget,GPid pid) ++static void xa_progress_dialog_stop_action (GtkWidget *widget,GPid *pid) + { +- kill (pid,SIGINT); ++ if(pid != NULL && *pid != 0) ++ kill (*pid,SIGINT); + } + + gboolean xa_pulse_progress_bar_window (Progress_bar_data *pb) diff -Nru xarchiver-0.5.4/debian/patches/series xarchiver-0.5.4/debian/patches/series --- xarchiver-0.5.4/debian/patches/series 2014-09-29 16:06:53.000000000 +0200 +++ xarchiver-0.5.4/debian/patches/series 2016-05-08 15:41:37.000000000 +0200 @@ -1,2 +1,3 @@ desktop-file.patch encrypted-7z-archives.patch +cancel-extraction-crash.patch