On 12/30/2012 02:13 AM, intrigeri wrote:
Hi David,

David Smith wrote (28 Dec 2012 06:30:46 GMT) :
Please unblock package liferea/1.8.6-1.1
Hint to increase the chances of seeing the proposed changes more
promptly reviewed by the Release Team: attach the debdiff from the
version in testing to this bug report.
Sorry about that.
debdiff between 1.8.6-1 in Wheezy/Testing and 1.8.6-1.1 in unstable attached.

diffstats for the patches:

 ./fix-browser-selections
 browser.c |    9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

./fix-crash-in-empty-launch-url
 itemlist.c |    7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

 ./fix-crash-when-dragging-feeds-outside-google-reader
 ui_dnd.c |    7 +++++++
 1 file changed, 7 insertions(+)

 ./fix-crash-when-online-status-changes
 liferea_htmlview.c |    2 ++
 1 file changed, 2 insertions(+)

 ./fix-crash-when-removing-google-reader-folders
 fl_sources/default_source.c |    2 ++
 fl_sources/google_source.c  |    1 +
 fl_sources/node_source.h    |   11 ++++++-----
 node.c                      |   22 ++++++++++++++++++++++
 node.h                      |   18 ++++++++++++++++++
 ui/popup_menu.c             |   14 ++++++++------
 6 files changed, 57 insertions(+), 11 deletions(-)



Thanks for your time.

-David

diff -Nru liferea-1.8.6/debian/changelog liferea-1.8.6/debian/changelog
--- liferea-1.8.6/debian/changelog	2012-07-01 05:45:40.000000000 +0800
+++ liferea-1.8.6/debian/changelog	2012-12-15 19:29:35.000000000 +0800
@@ -1,3 +1,23 @@
+liferea (1.8.6-1.1) unstable; urgency=low
+
+  * Non-maintainer upload.
+  * Fixed crash when dragging Google Reader feeds to parent node.
+    (Closes: #692526)
+  * Fixed crash when removing folders in Google Reader feeds.
+    (Closes: #692525)
+  * Fixed crash when opening empty links in feeds. (Closes: #692272)
+  * Fixed crash when network online status changes. (Closes: #692270)
+  * Fixed bug where web browser doesn't launch or the wrong web browser is
+    launched. (Closes: #668197)
+  * Replaced build-depends on transitional package libwebkit-dev with
+    libwebkitgtk-dev. (Closes: #677749)
+  * Added hardening build flags since liferea has a parser and should be
+    built with hardening. (Closes: #692527)
+  * Added build dependency on dpkg-dev (>= 1.16.1~) to enable build flags
+    with hardening.
+
+ -- David Smith <sidic...@gmail.com>  Sat, 15 Dec 2012 16:35:23 +0800
+
 liferea (1.8.6-1) unstable; urgency=low
 
   * Fixes ever growing temporary DB files. (patch by Sven Hartge)
diff -Nru liferea-1.8.6/debian/control liferea-1.8.6/debian/control
--- liferea-1.8.6/debian/control	2012-07-01 05:38:09.000000000 +0800
+++ liferea-1.8.6/debian/control	2012-12-15 18:55:27.000000000 +0800
@@ -15,14 +15,15 @@
                libglade2-dev,
                libgtk2.0-dev (>= 2.18.0),
                libglib2.0-dev (>= 2.24.0),
-               libwebkit-dev (>= 1.2.2),
+               libwebkitgtk-dev (>= 1.2.2),
                intltool,
                libicu-dev,
                libx11-dev,
                dh-autoreconf,
                libice-dev,
                libunique-dev,
-               libjson-glib-dev	      
+               libjson-glib-dev,
+               dpkg-dev (>= 1.16.1~)
 Standards-Version: 3.9.3
 Homepage: http://liferea.sourceforge.net/
 Vcs-Browser: http://git.debian.org/?p=collab-maint/liferea.git
diff -Nru liferea-1.8.6/debian/patches/fix-browser-selections liferea-1.8.6/debian/patches/fix-browser-selections
--- liferea-1.8.6/debian/patches/fix-browser-selections	1970-01-01 08:00:00.000000000 +0800
+++ liferea-1.8.6/debian/patches/fix-browser-selections	2012-12-15 18:36:03.000000000 +0800
@@ -0,0 +1,34 @@
+From: Lars Windolf <lars.lind...@gmail.com>
+Subject: x-www-browser preference not working
+Description: Fixed a bug where web browser doesn't launch
+due to not having gnome desktop installed, or the wrong
+web browser is launched due to not having an appropriate
+fallback.
+Origin: upstream, http://liferea.git.sourceforge.net/git/gitweb.cgi?p=liferea/liferea;a=commit;h=408a99b39535c4eb79983ebd2936a8eda5fff8b7
+Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=668197
+Last-Update: 2012-12-15
+--- a/src/browser.c
++++ b/src/browser.c
+@@ -244,6 +244,7 @@
+ 	struct browser	*browser;
+ 	gchar		*cmd = NULL;
+ 	gboolean	done = FALSE;	
++	gchar		*libname = NULL;
+ 	
+ 	g_assert (uri != NULL);
+ 	
+@@ -255,8 +256,12 @@
+ 			done = browser_execute (cmd, uri, TRUE);
+ 			g_free (cmd);
+ 		} else {
+-			/* the "default" browser has no command to use the GTK launch mechanism */
+-			done = gtk_show_uri (NULL, uri, 0, NULL);
++			/* the "default" browser has no command to use the GTK
++			   launch mechanism, so we use gtk_show_uri() instead */
++			conf_get_str_value (BROWSER_ID, &libname);
++			if (g_str_equal (libname, "default"))
++				done = gtk_show_uri (NULL, uri, 0, NULL);
++			g_free (libname);
+ 		}
+ 	}
+ 	
diff -Nru liferea-1.8.6/debian/patches/fix-crash-in-empty-launch-url liferea-1.8.6/debian/patches/fix-crash-in-empty-launch-url
--- liferea-1.8.6/debian/patches/fix-crash-in-empty-launch-url	1970-01-01 08:00:00.000000000 +0800
+++ liferea-1.8.6/debian/patches/fix-crash-in-empty-launch-url	2012-12-17 19:09:45.000000000 +0800
@@ -0,0 +1,40 @@
+Date: Wed, 15 Aug 2012 00:06:29 +0200
+Subject: [PATCH] fix crash in liferea_webkit_launch_url(...) for empty links
+ in feeds
+
+Description: in case of empty links in feeds liferea crashed with the
+following backtrace:
+  #0 in __strstr_sse42 () from /lib/libc.so.6
+  #1 in liferea_webkit_launch_url (scrollpane=<>, url=0x0) at webkit.c:515
+  #2 in itemlist_selection_changed (item=item@entry=<>) at itemlist.c:599
+
+Copyright (C) 2004-2012 Lars Lindner <lars.lind...@gmail.com>
+
+Reported-by: Matthias Maennich <matth...@maennich.net>
+Origin: upstream, https://sourceforge.net/p/liferea/code/ci/274b4dba082a8353bb17c2017c3eae6c07112144/
+Bug: http://sourceforge.net/tracker/index.php?func=detail&aid=3557513&group_id=87005&atid=581686
+Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=692272
+Last-Update: 2012-12-17
+--- a/src/itemlist.c
++++ b/src/itemlist.c
+@@ -588,7 +588,8 @@
+ 	
+ 		/* set read and unset update status when selecting */
+ 		if (item) {
+-			nodePtr node = node_from_id (item->nodeId);
++			gchar	*link = NULL;
++			nodePtr	node = node_from_id (item->nodeId);
+ 			
+ 			if (IS_FEED(node) && !((feedPtr)node->data)->ignoreComments)
+ 				comments_refresh (item);
+@@ -596,9 +597,7 @@
+ 			item_set_read_state (item, TRUE);
+ 			itemview_set_mode (ITEMVIEW_SINGLE_ITEM);
+ 
+-			if (node->loadItemLink) {
+-				gchar* link = item_make_link (item);
+-
++			if (node->loadItemLink && (link = item_make_link (item))) {
+ 				itemview_launch_URL (link, TRUE /* force internal */);
+ 				g_free (link);
+ 			} else {
diff -Nru liferea-1.8.6/debian/patches/fix-crash-when-dragging-feeds-outside-google-reader liferea-1.8.6/debian/patches/fix-crash-when-dragging-feeds-outside-google-reader
--- liferea-1.8.6/debian/patches/fix-crash-when-dragging-feeds-outside-google-reader	1970-01-01 08:00:00.000000000 +0800
+++ liferea-1.8.6/debian/patches/fix-crash-when-dragging-feeds-outside-google-reader	2012-12-15 18:36:15.000000000 +0800
@@ -0,0 +1,23 @@
+From: Lars Windolf <lars.lind...@gmail.com>
+Date: Mon, 30 Jul 2012 23:26:01 +0200
+Subject: [PATCH] Fixes SF #2855990: Crash when dragging Google Reader feeds outside Google Reader. This is now prevented. (reported by algnod)
+Origin: upstream, http://liferea.git.sourceforge.net/git/gitweb.cgi?p=liferea/liferea;a=commit;h=5f245fe87e8f32ff0e13c2e94addaf6032b806c4
+Bug: http://sourceforge.net/tracker/index.php?func=detail&aid=2855990&group_id=87005&atid=581684
+Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=692526
+Last-Updated: 2012-12-15
+--- a/src/ui/ui_dnd.c
++++ b/src/ui/ui_dnd.c
+@@ -116,6 +116,13 @@
+ 	if (gtk_tree_model_get_iter (GTK_TREE_MODEL (model), &iter, src_path)) {
+ 		gtk_tree_model_get (GTK_TREE_MODEL (model), &iter, FS_PTR, &sourceNode, -1);
+ 
++		g_assert (sourceNode);
++
++		/* Never drop into another node source as this arises to many problems
++		   (e.g. remote sync, different subscription type, e.g. SF #2855990) */
++		if (NODE_SOURCE_TYPE (targetNode) != NODE_SOURCE_TYPE (sourceNode))
++			return FALSE;
++
+ 		if (IS_FOLDER(sourceNode) && !(NODE_SOURCE_TYPE (targetNode)->capabilities & NODE_SOURCE_CAPABILITY_HIERARCHIC_FEEDLIST))
+ 			return FALSE;
+ 	}
diff -Nru liferea-1.8.6/debian/patches/fix-crash-when-online-status-changes liferea-1.8.6/debian/patches/fix-crash-when-online-status-changes
--- liferea-1.8.6/debian/patches/fix-crash-when-online-status-changes	1970-01-01 08:00:00.000000000 +0800
+++ liferea-1.8.6/debian/patches/fix-crash-when-online-status-changes	2012-12-15 18:36:22.000000000 +0800
@@ -0,0 +1,24 @@
+From: Yanko Kaneti <yan...@declera.com>
+Date: Fri, 14 Sep 2012 16:13:00 +0300
+Subject: [PATCH] Fix crash when network online status changes
+Description: From Fedora bug
+https://bugzilla.redhat.com/show_bug.cgi?id=857348 :
+"liferea frequently crashes when manipulating htmlviews (opening/closing
+new tabs) while the network online status changes. This is caused
+because the signal notifying online status is not properly disconnected
+when the htmlview is removed."
+Origin: upstream, http://liferea.git.sourceforge.net/git/gitweb.cgi?p=liferea/liferea;a=commit;h=7c69af4fe8435b34cbf9e7f76cb2e44e985d37b5
+Bug: http://sourceforge.net/tracker/index.php?func=detail&aid=3567715&group_id=87005&atid=581686
+Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=692270
+Last-Update: 2012-12-15
+--- a/src/ui/liferea_htmlview.c
++++ b/src/ui/liferea_htmlview.c
+@@ -77,6 +77,8 @@
+ static void
+ liferea_htmlview_finalize (GObject *object)
+ {
++	g_signal_handlers_disconnect_by_data (network_monitor_get (), object);
++
+ 	G_OBJECT_CLASS (parent_class)->finalize (object);
+ }
+ 
diff -Nru liferea-1.8.6/debian/patches/fix-crash-when-removing-google-reader-folders liferea-1.8.6/debian/patches/fix-crash-when-removing-google-reader-folders
--- liferea-1.8.6/debian/patches/fix-crash-when-removing-google-reader-folders	1970-01-01 08:00:00.000000000 +0800
+++ liferea-1.8.6/debian/patches/fix-crash-when-removing-google-reader-folders	2012-12-15 19:00:43.000000000 +0800
@@ -0,0 +1,157 @@
+From: Lars Windolf <lars.lind...@gmail.com>
+Date: Fri, 5 Oct 2012 12:09:42 +0200
+Subject: [PATCH] Fixes SF #3572660: crash in google_source_remove_node (reported by Yanko Kaneti)
+Origin: upstream, http://liferea.git.sourceforge.net/git/gitweb.cgi?p=liferea/liferea;a=commit;h=878863cd0e02e89e461e5e47f02be38e57a4fe27
+Bug: http://sourceforge.net/tracker/index.php?func=detail&aid=3572660&group_id=87005&atid=581684
+Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=692525
+Last-Update: 2012-12-15
+--- a/src/fl_sources/default_source.c
++++ b/src/fl_sources/default_source.c
+@@ -210,6 +210,8 @@
+ 	.description		= "The default feed list source. Should never be added manually. If you see this then something went wrong!",
+ 	.capabilities		= NODE_SOURCE_CAPABILITY_IS_ROOT |
+ 				  NODE_SOURCE_CAPABILITY_HIERARCHIC_FEEDLIST |
++	                          NODE_SOURCE_CAPABILITY_ADD_FEED |
++	                          NODE_SOURCE_CAPABILITY_ADD_FOLDER |
+ 				  NODE_SOURCE_CAPABILITY_WRITABLE_FEEDLIST,
+ 	.source_type_init	= default_source_init,
+ 	.source_type_deinit	= default_source_deinit,
+--- a/src/fl_sources/node_source.h
++++ b/src/fl_sources/node_source.h
+@@ -50,11 +50,12 @@
+ 
+ enum {
+ 	NODE_SOURCE_CAPABILITY_IS_ROOT			= (1<<0),	/**< flag only for default feed list source */
+-	NODE_SOURCE_CAPABILITY_MULTI_INSTANCES		= (1<<1),	/**< allows multiple source instances */
+-	NODE_SOURCE_CAPABILITY_DYNAMIC_CREATION		= (1<<2),	/**< feed list source is user created */
+-	NODE_SOURCE_CAPABILITY_WRITABLE_FEEDLIST	= (1<<3),	/**< the feed list tree of the source can be changed */
+-	NODE_SOURCE_CAPABILITY_HIERARCHIC_FEEDLIST	= (1<<4),	/**< the feed list tree of the source can have hierarchic folders */
+-	NODE_SOURCE_CAPABILITY_ITEM_STATE_SYNC		= (1<<5)	/**< the item state can and should be sync'ed with remote */
++	NODE_SOURCE_CAPABILITY_DYNAMIC_CREATION		= (1<<1),	/**< feed list source is user created */
++	NODE_SOURCE_CAPABILITY_WRITABLE_FEEDLIST	= (1<<2),	/**< the feed list tree of the source can be changed */
++	NODE_SOURCE_CAPABILITY_ADD_FEED			= (1<<3),	/**< feeds can be added to the source */
++	NODE_SOURCE_CAPABILITY_ADD_FOLDER		= (1<<4),	/**< folders can be added to the source */
++	NODE_SOURCE_CAPABILITY_HIERARCHIC_FEEDLIST	= (1<<5),	/**< the feed list tree of the source can have hierarchic folders */
++	NODE_SOURCE_CAPABILITY_ITEM_STATE_SYNC		= (1<<6)	/**< the item state can and should be sync'ed with remote */
+ };
+ 
+ /** feed list node source type */
+--- a/src/node.c
++++ b/src/node.c
+@@ -494,6 +494,28 @@
+ 	return baseUrl;
+ }
+ 
++gboolean
++node_can_add_child_feed (nodePtr node)
++{
++	g_assert (node->source->root);
++
++	if (!(NODE_TYPE (node->source->root)->capabilities & NODE_CAPABILITY_ADD_CHILDS))
++		return FALSE;
++
++	return (NODE_SOURCE_TYPE (node)->capabilities & NODE_SOURCE_CAPABILITY_ADD_FEED);
++}
++
++gboolean
++node_can_add_child_folder (nodePtr node)
++{
++	g_assert (node->source->root);
++
++	if (!(NODE_TYPE (node->source->root)->capabilities & NODE_CAPABILITY_ADD_CHILDS))
++		return FALSE;
++
++	return (NODE_SOURCE_TYPE (node)->capabilities & NODE_SOURCE_CAPABILITY_ADD_FOLDER);
++}
++
+ /* node children iterating interface */
+ 
+ void
+--- a/src/node.h
++++ b/src/node.h
+@@ -355,6 +355,24 @@
+  */
+ const gchar * node_get_base_url(nodePtr node);
+ 
++/**
++ * Query wether a feed be added to the given node.
++ *
++ * @param node	the node
++ *
++ * @returns TRUE if a feed can be added
++ */
++gboolean node_can_add_child_feed (nodePtr node);
++
++/**
++ * Query wether a folder be added to the given node.
++ *
++ * @param node	the node
++ *
++ * @returns TRUE if a folder can be added
++ */
++gboolean node_can_add_child_folder (nodePtr node);
++
+ /* child nodes iterating interface */
+ 
+ typedef void 	(*nodeActionFunc)	(nodePtr node);
+--- a/src/ui/popup_menu.c
++++ b/src/ui/popup_menu.c
+@@ -262,14 +262,15 @@
+ ui_popup_node_menu (nodePtr node, gboolean validSelection, guint button, guint32 activate_time)
+ {
+ 	GtkWidget	*menu;
+-	gboolean	writeableFeedlist, isRoot, isHierarchic;
++	gboolean	writeableFeedlist, isRoot, isHierarchic, addChildren;
+ 
+ 	menu = gtk_menu_new ();
+ 	
+ 	if (node->parent) {
+ 		writeableFeedlist = NODE_SOURCE_TYPE (node->parent->source->root)->capabilities & NODE_SOURCE_CAPABILITY_WRITABLE_FEEDLIST;
+-		isRoot = NODE_SOURCE_TYPE (node->parent->source->root)->capabilities & NODE_SOURCE_CAPABILITY_IS_ROOT;
++		isRoot = NODE_SOURCE_TYPE (node->source->root)->capabilities & NODE_SOURCE_CAPABILITY_IS_ROOT;
+ 		isHierarchic = NODE_SOURCE_TYPE (node->parent->source->root)->capabilities & NODE_SOURCE_CAPABILITY_HIERARCHIC_FEEDLIST;
++		addChildren = NODE_TYPE (node->source->root)->capabilities & NODE_CAPABILITY_ADD_CHILDS;
+ 	} else {
+ 		/* if we have no parent then we have the root node... */
+ 		writeableFeedlist = TRUE;
+@@ -287,7 +288,7 @@
+ 	}
+ 
+ 	if (writeableFeedlist) {
+-		if (NODE_TYPE (node->source->root)->capabilities & NODE_CAPABILITY_ADD_CHILDS) {
++		if (addChildren) {
+ 			GtkWidget	*item;
+ 			GtkWidget	*submenu;
+ 
+@@ -295,9 +296,10 @@
+ 
+ 			item = ui_popup_add_menuitem (menu, _("_New"), NULL, NULL, NULL, 0);
+ 
+-			ui_popup_add_menuitem (submenu, _("New _Subscription..."), ui_popup_add_feed, NULL, NULL, 0);
++			if (node_can_add_child_feed (node))
++				ui_popup_add_menuitem (submenu, _("New _Subscription..."), ui_popup_add_feed, NULL, NULL, 0);
+ 			
+-			if (isHierarchic)
++			if (node_can_add_child_folder (node))
+ 				ui_popup_add_menuitem (submenu, _("New _Folder..."), ui_popup_add_folder, NULL, NULL, 0);
+ 				
+ 			if (isRoot) {
+@@ -309,7 +311,7 @@
+ 			gtk_menu_item_set_submenu (GTK_MENU_ITEM(item), submenu);
+ 		}
+ 		
+-		if (node->children) {
++		if (isRoot && node->children) {
+ 			gtk_menu_shell_append (GTK_MENU_SHELL(menu), gtk_separator_menu_item_new());
+ 			ui_popup_add_menuitem (menu, _("Sort Feeds"), ui_popup_sort_feeds, node, GTK_STOCK_SORT_ASCENDING, 0);
+ 		}
+--- a/src/fl_sources/google_source.c
++++ b/src/fl_sources/google_source.c
+@@ -360,6 +360,7 @@
+ 	   "present your Google Reader subscriptions, and will synchronize your feed list and reading lists."),
+ 	.capabilities        = NODE_SOURCE_CAPABILITY_DYNAMIC_CREATION | 
+ 	                       NODE_SOURCE_CAPABILITY_WRITABLE_FEEDLIST |
++	                       NODE_SOURCE_CAPABILITY_ADD_FEED |
+ 	                       NODE_SOURCE_CAPABILITY_ITEM_STATE_SYNC,
+ 	.source_type_init    = google_source_init,
+ 	.source_type_deinit  = google_source_deinit,
diff -Nru liferea-1.8.6/debian/patches/series liferea-1.8.6/debian/patches/series
--- liferea-1.8.6/debian/patches/series	2012-02-27 09:54:47.000000000 +0800
+++ liferea-1.8.6/debian/patches/series	2012-12-17 15:32:29.000000000 +0800
@@ -1,3 +1,8 @@
 www-browser
 debian-example-feeds
 libtool-dont-rearange-as-needed
+fix-browser-selections
+fix-crash-when-dragging-feeds-outside-google-reader
+fix-crash-when-online-status-changes
+fix-crash-when-removing-google-reader-folders
+fix-crash-in-empty-launch-url
diff -Nru liferea-1.8.6/debian/rules liferea-1.8.6/debian/rules
--- liferea-1.8.6/debian/rules	2012-02-27 09:54:47.000000000 +0800
+++ liferea-1.8.6/debian/rules	2012-12-15 19:36:20.000000000 +0800
@@ -2,6 +2,9 @@
 # Sample debian/rules that uses debhelper.
 # GNU copyright 1997 to 1999 by Joey Hess.
 
+export DEB_BUILD_MAINT_OPTIONS = hardening=+all
+DPKG_EXPORT_BUILDFLAGS = 1
+include /usr/share/dpkg/buildflags.mk
 CFLAGS += -g -O$(if $(findstring noopt,$(DEB_BUILD_OPTIONS)),0,2)
 LDFLAGS += "-Wl,--as-needed"
 export LIBS=-lX11 -lICE

Reply via email to