2009-09-24 Hemantha Holla <[email protected]> opensolaris-2009-06 OSOL0906_SRU5_04
authorhem
Thu, 24 Sep 2009 14:10:04 +0000
branchopensolaris-2009-06
changeset 14342 e74a4a9aa10f
parent 14341 49ae682d34ef
child 14343 6a624ee4623e
2009-09-24 Hemantha Holla <[email protected]> * SUNWgnome-im-client.spec: Update %files for 2.6.2 * base-specs/pidgin.spec: Bump to 2.6.2 as fix for 6875021, remove upstreamed patch 08-race-condition and add new patches -08-unlock-keyring, -09 and -10 from trunk. * patches/pidgin-01-gnome-keyring.diff, patches/pidgin-02-uninstalled-pc.diff, patches/pidgin-04-jabber-msg.diff, patches/pidgin-05-option-menu.diff, patches/pidgin-06-parse-account.diff, patches/pidgin-07-menu-entry.diff: Patches updated for 2.6.2 from trunk * patches/pidgin-08-race-condition.diff: Removed, upstreamed * patches/pidgin-08-unlock-keyring.diff, patches/pidgin-09-crash.diff, patches/pidgin-10-crash-when-no-proxy-setting.diff: Patches added from trunk 6875021 msn_slplink_process_msg() is vulnerable to memory corruption and application crash [CVE-2009-2694]
ChangeLog
SUNWgnome-im-client.spec
base-specs/pidgin.spec
patches/pidgin-01-gnome-keyring.diff
patches/pidgin-02-uninstalled-pc.diff
patches/pidgin-04-jabber-msg.diff
patches/pidgin-05-option-menu.diff
patches/pidgin-06-parse-account.diff
patches/pidgin-07-menu-entry.diff
patches/pidgin-08-race-condition.diff
patches/pidgin-08-unlock-keyring.diff
patches/pidgin-09-crash.diff
patches/pidgin-10-crash-when-no-proxy-setting.diff
--- a/ChangeLog	Thu Sep 24 08:48:36 2009 +0000
+++ b/ChangeLog	Thu Sep 24 14:10:04 2009 +0000
@@ -1,3 +1,22 @@
+2009-09-24  Hemantha Holla <[email protected]>
+
+	* SUNWgnome-im-client.spec: Update %files for 2.6.2
+	* base-specs/pidgin.spec: Bump to 2.6.2 as fix for 6875021, remove
+	  upstreamed patch 08-race-condition and add new patches
+	  -08-unlock-keyring, -09 and -10 from trunk.
+	* patches/pidgin-01-gnome-keyring.diff,
+	  patches/pidgin-02-uninstalled-pc.diff,
+	  patches/pidgin-04-jabber-msg.diff,
+	  patches/pidgin-05-option-menu.diff,
+	  patches/pidgin-06-parse-account.diff,
+	  patches/pidgin-07-menu-entry.diff: Patches updated for 2.6.2 from
+	  trunk
+	* patches/pidgin-08-race-condition.diff: Removed, upstreamed
+	* patches/pidgin-08-unlock-keyring.diff,
+	  patches/pidgin-09-crash.diff,
+	  patches/pidgin-10-crash-when-no-proxy-setting.diff: Patches added
+	  from trunk
+
 2009-09-24  Krishnan Parthasarathi <[email protected]>
 
 	* base-specs/firefox.spec: bump firefox to version 3.5.3
--- a/SUNWgnome-im-client.spec	Thu Sep 24 08:48:36 2009 +0000
+++ b/SUNWgnome-im-client.spec	Thu Sep 24 14:10:04 2009 +0000
@@ -89,7 +89,8 @@
 gzcat %SOURCE0 | tar xf -
 
 %build
-%{!?perl_vendorarch: %define perl_vendorarch %(eval "`%{__perl} -V:installvendorarch`"; echo $installvendorarch)}
+%{!?perl_installarchlib: %define perl_installarchlib %(eval "`%{__perl} -V:installarchlib`"; echo $installarchlib)}
+%{!?perl_installvendorlib: %define perl_installvendorlib %(eval "`%{__perl} -V:installvendorlib`"; echo $installvendorlib)}
 export PKG_CONFIG_PATH=../pidgin-%{pidgin.version}/libpurple:../pidgin-%{pidgin.version}:%{_pkg_config_path}
 export CFLAGS="%optflags -DHAVE_ALLOCA_H"
 export RPM_OPT_FLAGS="$CFLAGS"
@@ -167,10 +168,12 @@
 %{_libdir}/*.so*
 %{_libdir}/pidgin/*.so*
 %{_libdir}/purple-2/*.so*
-%attr(755, root, bin) %{perl_vendorarch}/Pidgin.pm
-%attr(755, root, bin) %{perl_vendorarch}/Purple.pm
-%attr(755, root, bin) %{perl_vendorarch}/auto/Pidgin
-%attr(755, root, bin) %{perl_vendorarch}/auto/Purple
+%attr(755, root, bin) %{_libdir}/pidgin/perl/Pidgin.pm
+%attr(755, root, bin) %{_libdir}/purple-2/perl/Purple.pm
+%attr(755, root, bin) %{_libdir}/pidgin/perl/auto/Pidgin
+%attr(755, root, bin) %{_libdir}/purple-2/perl/auto/Purple
+#%attr(755, root, bin) %{perl_installarchlib}/perllocal.pod
+%dir %attr (0755, root, bin) %{perl_installvendorlib}
 %dir %attr (0755, root, sys) %{_datadir}
 %dir %attr (0755, root, other) %{_datadir}/applications
 %{_datadir}/applications/*
@@ -194,6 +197,9 @@
 %dir %attr (-, root, other) %{_datadir}/icons/hicolor/48x48
 %dir %attr (-, root, other) %{_datadir}/icons/hicolor/48x48/apps
 %{_datadir}/icons/hicolor/48x48/apps/pidgin.*
+%dir %attr (-, root, other) %{_datadir}/icons/hicolor/scalable
+%dir %attr (-, root, other) %{_datadir}/icons/hicolor/scalable/apps
+%{_datadir}/icons/hicolor/scalable/apps/pidgin.*
 %dir %attr(0755, root, bin) %{_mandir}
 %dir %attr(0755, root, bin) %{_mandir}/man1
 %dir %attr(0755, root, bin) %{_mandir}/man3
@@ -242,6 +248,8 @@
 %endif
 
 %changelog
+* Thu Sep 24 2009 - [email protected]
+- Update %files for bump to pidgin 2.6.2
 * Thu Apr 16 2009 - [email protected]
 - Add build dependencies of spellcheck feature.
 * Fri Aug 01 2008 - [email protected]
--- a/base-specs/pidgin.spec	Thu Sep 24 08:48:36 2009 +0000
+++ b/base-specs/pidgin.spec	Thu Sep 24 14:10:04 2009 +0000
@@ -5,41 +5,48 @@
 # This file and all modifications and additions to the pristine
 # package are under the same license as the package itself.
 #
-# Owner: rickju
+# Owner: elaine
 # old_bugdb: http://sourceforge.net/tracker/index.php?func=detail&group_id=235&atid=300235&aid=
 # bugdb: http://developer.pidgin.im/ticket/
 #
 %include l10n.inc
 Name:		pidgin
-Version:	2.5.5
+Version:	2.6.2
 Release:        1
 License:	GPL
 Group:		Applications/Internet
 Distribution:	Java Desktop System
 Vendor:		Sun Microsystems, Inc.
 Summary:	Multiprotocol Instant Messaging Client
-Source:		http://easynews.dl.sourceforge.net/sourceforge/%{name}/%{name}-%{version}.tar.bz2
+Source:		http://sourceforge.net/projects/pidgin/files/%{name}/%{name}-%{version}.tar.bz2
 %if %build_l10n
 Source1:        pidgin-po-sun-%{po_sun_version}.tar.bz2
 Source2:        l10n-configure.sh
 %endif
-# date:2006-11-16 owner:rickju type:branding bugster:6439103
+# date:2006-11-16 owner:elaine type:branding bugster:6439103
 Patch1:         pidgin-01-gnome-keyring.diff
-# date:2006-12-20 owner:rickju type:feature bugid:1643233
+# date:2006-12-20 owner:elaine type:feature bugid:1643233
 Patch2:         pidgin-02-uninstalled-pc.diff
-# date:2008-06-02 owner:rickju type:branding
+# date:2008-06-02 owner:elaine type:branding
 Patch3:         pidgin-03-runpath.diff
-# date:2007-03-07 owner:rickju type:bug bugster:6524856 state:upstream
+# date:2007-03-07 owner:elaine type:bug bugster:6524856 state:upstream
 Patch4:        pidgin-04-jabber-msg.diff
-# date:2007-04-03 owner:rickju type:bug bugster:6524819 state:upstream
+# date:2007-04-03 owner:elaine type:bug bugster:6524819 state:upstream
 Patch5:        pidgin-05-option-menu.diff
-# date:2007-08-27 owner:rickju type:bug bugster:6595691 state:upstream
+# date:2007-08-27 owner:elaine type:bug bugster:6595691 state:upstream
 Patch6:        pidgin-06-parse-account.diff
 # date:2008-08-21 owner:jedy type:branding
 Patch7:        pidgin-07-menu-entry.diff
-# date:2009-04-16 owner:elaine type:bug bugzilla:8594 
-# defect.opensolaris.org:8052 status:upstream
-Patch8:        pidgin-08-race-condition.diff
+
+# date:2009-08-12 owner:jefftsai type:bug doo:9963
+Patch8:        pidgin-08-unlock-keyring.diff
+
+# date:2009-09-03 owner:hawklu type:bug doo:10848
+Patch9:        pidgin-09-crash.diff
+
+# date:2009-09-03 owner:hawklu type:bug doo:11160 bugzilla:10242
+Patch10:        pidgin-10-crash-when-no-proxy-setting.diff 
+
 URL:		http://www.pidgin.im
 BuildRoot:	%{_tmppath}/%{name}-%{version}-build
 Docdir:		%{_defaultdocdir}/pidgin
@@ -87,10 +94,10 @@
 %patch6 -p1
 %patch7 -p1
 %patch8 -p1
+%patch9 -p1
+%patch10 -p1
 
 %build
-%{!?perl_vendorarch: %define perl_vendorarch %(eval "`%{__perl} -V:installvendorarch`"; echo $installvendorarch)}
-
 %ifos linux
 if [ -x /usr/bin/getconf ]; then
   CPUS=`getconf _NPROCESSORS_ONLN`
@@ -133,10 +140,18 @@
 	--disable-meanwhile                    \
 	--disable-nm                           \
 	--disable-consoleui                    \
-  --with-perl-lib=vendor
+	--disable-vv                           \
+        --with-perl-lib=vendor                 \
+        --disable-idn
 
 make -j $CPUS
 
+# copy *-uninstalled.pc to the top build dir
+test -f %{name}-uninstalled.pc || \
+  test -f %{name}/%{name}-uninstalled.pc && \
+    cp %{name}/%{name}-uninstalled.pc .
+
+
 %install
 make DESTDIR=$RPM_BUILD_ROOT install \
     SITEPREFIX=/dummy VENDORPREFIX=/dummy PERLPREFIX=/dummy
@@ -168,10 +183,10 @@
 %{_datadir}/icons/*
 %{_datadir}/applications/*
 %{_datadir}/dbus-1
-%attr(755, root, root) %{perl_vendorarch}/Pidgin.pm
-%attr(755, root, root) %{perl_vendorarch}/Purple.pm
-%attr(755, root, root) %{perl_vendorarch}/auto/Pidgin
-%attr(755, root, root) %{perl_vendorarch}/auto/Purple
+%attr(755, root, root) %{_libdir}/pidgin/perl/Pidgin.pm
+%attr(755, root, root) %{_libdir}/purple-2/perl/Purple.pm
+%attr(755, root, root) %{_libdir}/pidgin/perl/auto/Pidgin
+%attr(755, root, root) %{_libdir}/purple-2/perl/auto/Purple
 
 %files devel
 %defattr(-, root, root)
@@ -183,6 +198,21 @@
 rm -r $RPM_BUILD_ROOT
 
 %changelog
+* Thu Sep 24 2009 - [email protected]
+- Bump to 2.6.2 to include security fixes as fix for 6875021. Modifications are
+  pulled from spec-files-trunk (rev 19302) They are
+  - Remove upstreamed patch 08-race-condition
+  - Pull in 01-gnome-keyring, 02-uninstalled-pc, 04-jabber-msg, 05-option-menu,
+    06-parse-account and 07-menu-entry - updated for 2.6.x
+  - Add 08-unlock-keyring, 09-crash and 10-crash-when-no-proxy-setting from
+    trunk
+  - Update %files entries for perl modules installed by Pidgin to reflect their
+    new installation paths
+  - Update Source and Owner
+- Build machines have SUNWgnu-idn installed. Pidgin >= 2.6.0 picks up GNU libidn
+  and links with it by default adding a dependency on SUNWgnu-idn. So disabling
+  GNU idn with --disable-idn to configure
+  
 * Thu Apr 16 2009 - [email protected]
 - Add a patch to fix d.o.o#8052.
 
--- a/patches/pidgin-01-gnome-keyring.diff	Thu Sep 24 08:48:36 2009 +0000
+++ b/patches/pidgin-01-gnome-keyring.diff	Thu Sep 24 14:10:04 2009 +0000
@@ -1,24 +1,60 @@
---- 2.0/libpurple/Makefile.am.orig	2008-05-13 03:07:44.000000000 +0800
-+++ 2.0/libpurple/Makefile.am	2008-05-21 14:58:54.966899000 +0800
-@@ -246,6 +246,7 @@
+--- pidgin-2.6.0/pidgin/gtkmain.c.orig	2009-08-19 03:46:02.100712000 +0800
++++ pidgin-2.6.0/pidgin/gtkmain.c	2009-08-19 06:17:51.378838000 +0800
+@@ -70,6 +70,10 @@
+ #include "pidginstock.h"
+ #include "gtkwhiteboard.h"
+ 
++#ifdef GAIM_ENABLE_KEYRING
++#include <gnome-keyring.h>
++#endif
++
+ #ifdef HAVE_SIGNAL_H
+ # include <signal.h>
+ #endif
+@@ -727,6 +731,12 @@
+ 	gtk_rc_add_default_file(search_path);
+ 	g_free(search_path);
+ 
++#ifdef  GAIM_ENABLE_KEYRING
++        GnomeKeyringResult rtn = gnome_keyring_unlock_sync(NULL, NULL);
++        // if (rtn == GNOME_KEYRING_RESULT_DENIED)
++        //   return 0;
++#endif
++
+ 	gui_check = gtk_init_check(&argc, &argv);
+ 	if (!gui_check) {
+ 		char *display = gdk_get_display();
+--- pidgin-2.6.0/pidgin/Makefile.am.orig	2009-08-19 03:47:41.347475000 +0800
++++ pidgin-2.6.0/pidgin/Makefile.am	2009-08-19 03:48:27.139412000 +0800
+@@ -227,6 +227,7 @@
+ 	$(GSTREAMER_CFLAGS) \
+ 	$(DEBUG_CFLAGS) \
+ 	$(GTK_CFLAGS) \
++        $(GAIM_KEYRING_CFLAGS) \
+ 	$(DBUS_CFLAGS) \
+ 	$(GTKSPELL_CFLAGS) \
+ 	$(STARTUP_NOTIFICATION_CFLAGS) \
+--- pidgin-2.6.0/libpurple/Makefile.am.orig	2009-08-19 03:35:41.369399000 +0800
++++ pidgin-2.6.0/libpurple/Makefile.am	2009-08-19 03:36:56.699745000 +0800
+@@ -290,6 +290,7 @@
  	$(DBUS_LIBS) \
  	$(GLIB_LIBS) \
  	$(LIBXML_LIBS) \
-+	$(GAIM_KEYRING_LIBS) \
++        $(GAIM_KEYRING_LIBS) \
  	$(NETWORKMANAGER_LIBS) \
  	$(INTLLIBS) \
- 	-lm
-@@ -259,6 +260,7 @@
+ 	$(FARSIGHT_LIBS) \
+@@ -307,6 +308,7 @@
  	$(GLIB_CFLAGS) \
  	$(DEBUG_CFLAGS) \
  	$(DBUS_CFLAGS) \
-+	$(GAIM_KEYRING_CFLAGS) \
++        $(GAIM_KEYRING_CFLAGS) \
  	$(LIBXML_CFLAGS) \
- 	$(NETWORKMANAGER_CFLAGS)
- 
---- pidgin-2.3.0/libpurple/account.c	2007-11-25 03:05:51.000000000 +0800
-+++ pidgin-2.3.0-my/libpurple/account.c	2007-12-06 11:35:30.201708000 +0800
-@@ -49,6 +49,13 @@
+ 	$(FARSIGHT_CFLAGS) \
+ 	$(GSTREAMER_CFLAGS) \
+--- pidgin-2.6.0/libpurple/account.c.orig	2009-08-19 03:37:23.386379000 +0800
++++ pidgin-2.6.0/libpurple/account.c	2009-08-19 03:44:16.347281000 +0800
+@@ -49,6 +49,14 @@
  #define PURPLE_ACCOUNT_GET_PRIVATE(account) \
  	((PurpleAccountPrivate *) (account->priv))
  
@@ -29,10 +65,11 @@
 +static gboolean gaim_account_set_password_in_keyring (const char *_prpl, const char *_user, const char *password);
 +#endif
 +
++
  /* TODO: Should use PurpleValue instead of this?  What about "ui"? */
  typedef struct
  {
-@@ -374,8 +381,13 @@
+@@ -378,8 +386,14 @@
  	if (purple_account_get_remember_password(account) &&
  		((tmp = purple_account_get_password(account)) != NULL))
  	{
@@ -40,19 +77,20 @@
 +                gaim_account_set_password_in_keyring( purple_account_get_protocol_id(account),
 +                                          purple_account_get_username(account), tmp);
 +#else
++
  		child = xmlnode_new_child(node, "password");
  		xmlnode_insert_data(child, tmp, -1);
 +#endif
  	}
  
  	if ((tmp = purple_account_get_alias(account)) != NULL)
-@@ -790,17 +802,30 @@
+@@ -828,17 +842,31 @@
  	}
  
  	ret = purple_account_new(name, _purple_oscar_convert(name, protocol_id)); /* XXX: */
 -	g_free(name);
 -	g_free(protocol_id);
--
+ 
 -	/* Read the password */
 -	child = xmlnode_get_child(node, "password");
 -	if ((child != NULL) && ((data = xmlnode_get_data(child)) != NULL))
@@ -75,20 +113,20 @@
 +        if (!got_pwd)
 +        {
 +                /* Read the password */
-+		child = xmlnode_get_child(node, "password");
-+		if ((child != NULL) && ((data = xmlnode_get_data(child)) != NULL))
-+		{
-+			purple_account_set_remember_password(ret, TRUE);
-+			purple_account_set_password(ret, data);
-+			g_free(data);
-+		}
++               child = xmlnode_get_child(node, "password");
++               if ((child != NULL) && ((data = xmlnode_get_data(child)) != NULL))
++               {
++                       purple_account_set_remember_password(ret, TRUE);
++                       purple_account_set_password(ret, data);
++                       g_free(data);
++               }
 +        }
 +        g_free(name);
 +        g_free(protocol_id);
  
  	/* Read the alias */
  	child = xmlnode_get_child(node, "alias");
-@@ -2778,3 +2803,65 @@
+@@ -2866,3 +2894,66 @@
  	purple_signals_disconnect_by_handle(handle);
  	purple_signals_unregister_by_instance(handle);
  }
@@ -154,9 +192,10 @@
 +  return TRUE;
 +}
 +#endif
---- pidgin-2.0.0/configure.ac-ori	2007-05-24 14:26:55.133319000 +0800
-+++ pidgin-2.0.0/configure.ac	2007-05-24 14:27:12.141394000 +0800
-@@ -1914,6 +1914,20 @@
++
+--- pidgin-2.6.0/configure.ac.orig	2009-08-19 03:44:43.445103000 +0800
++++ pidgin-2.6.0/configure.ac	2009-08-19 03:45:27.310441000 +0800
+@@ -2315,6 +2315,20 @@
  	LDFLAGS="$orig_LDFLAGS"
  fi
  
@@ -177,47 +216,3 @@
  AC_MSG_CHECKING(for me pot o' gold)
  AC_MSG_RESULT(no)
  AC_CHECK_FUNCS(gethostid lrand48)
---- old/pidgin/gtkmain.c	Wed Oct 24 04:55:59 2007
-+++ new/pidgin/gtkmain.c	Fri Nov  9 10:12:22 2007
-@@ -67,6 +67,10 @@
- #include "pidginstock.h"
- #include "gtkwhiteboard.h"
- 
-+#ifdef GAIM_ENABLE_KEYRING
-+#include <gnome-keyring.h>
-+#endif
-+
- #ifdef HAVE_SIGNAL_H
- # include <signal.h>
- #endif
-@@ -680,6 +684,12 @@
- 	gtk_rc_add_default_file(search_path);
- 	g_free(search_path);
- 
-+#ifdef  GAIM_ENABLE_KEYRING
-+	GnomeKeyringResult rtn = gnome_keyring_unlock_sync(NULL, NULL);
-+	// if (rtn == GNOME_KEYRING_RESULT_DENIED)
-+	//   return 0;
-+#endif
-+
- 	gui_check = gtk_init_check(&argc, &argv);
- 	if (!gui_check) {
- 		char *display = gdk_get_display();
---- old/pidgin/Makefile.am	2007-08-21 02:12:53.000000000 +0800
-+++ new/pidgin/Makefile.am	2007-09-18 14:55:09.688398000 +0800
-@@ -185,6 +185,7 @@
- 	$(GTKSPELL_LIBS) \
- 	$(STARTUP_NOTIFICATION_LIBS) \
- 	$(LIBXML_LIBS) \
-+	$(GAIM_KEYRING_LIBS) \
- 	$(GTK_LIBS) \
- 	$(top_builddir)/libpurple/libpurple.la
- 
-@@ -204,6 +205,7 @@
- 	$(GSTREAMER_CFLAGS) \
- 	$(DEBUG_CFLAGS) \
- 	$(GTK_CFLAGS) \
-+	$(GAIM_KEYRING_CFLAGS) \
- 	$(DBUS_CFLAGS) \
- 	$(GTKSPELL_CFLAGS) \
- 	$(STARTUP_NOTIFICATION_CFLAGS) \
--- a/patches/pidgin-02-uninstalled-pc.diff	Thu Sep 24 08:48:36 2009 +0000
+++ b/patches/pidgin-02-uninstalled-pc.diff	Thu Sep 24 14:10:04 2009 +0000
@@ -1,26 +1,10 @@
---- /dev/null	2006-12-20 17:41:06.000000000 +0800
-+++ gaim/pidgin-uninstalled.pc.in	2006-12-22 16:32:46.308280000 +0800
-@@ -0,0 +1,13 @@
-+prefix=@prefix@
-+exec_prefix=@exec_prefix@
-+libdir=@libdir@
-+includedir=@includedir@
-+datadir=@datadir@
-+sysconfdir=@sysconfdir@
-+ 
-+Name: Pidgin
-+Description: Pidgin is a GTK2-based instant messenger application.
-+Version: @VERSION@
-+Requires: glib-2.0
+--- pidgin-2.6.0/pidgin/pidgin-uninstalled.pc.in.orig1	2009-08-19 03:51:04.590134000 +0800
++++ pidgin-2.6.0/pidgin/pidgin-uninstalled.pc.in	2009-08-19 03:52:19.272492000 +0800
+@@ -10,4 +10,6 @@
+ Description: Pidgin is a GTK2-based instant messenger application.
+ Version: @VERSION@
+ Requires: gtk+-2.0 purple
+-Cflags: -I${pcfiledir}
 +Cflags: -I${pc_top_builddir}/${pcfiledir}/libpurple -I${pc_top_builddir}/${pcfiledir}/pidgin
 +Libs: ${pc_top_builddir}/${pcfiledir}/libpurple/libpurple.la
---- gaim-orig/configure.ac.orig	2006-12-22 16:35:42.870514000 +0800
-+++ gaim/configure.ac	2006-12-22 16:35:02.633637000 +0800
-@@ -2026,6 +2026,7 @@
- 
- AC_OUTPUT([Makefile
- 		   Doxyfile
-+		   pidgin-uninstalled.pc
- 		   doc/Makefile
- 		   doc/pidgin.1
- 		   doc/finch.1
++
--- a/patches/pidgin-04-jabber-msg.diff	Thu Sep 24 08:48:36 2009 +0000
+++ b/patches/pidgin-04-jabber-msg.diff	Thu Sep 24 14:10:04 2009 +0000
@@ -1,11 +1,11 @@
---- pidgin-2.3.0/libpurple/protocols/jabber/jabber.c	2007-11-25 03:05:56.000000000 +0800
-+++ pidgin-2.3.0-my/libpurple/protocols/jabber/jabber.c	2007-12-06 11:17:22.050609000 +0800
-@@ -181,6 +181,8 @@
- {
- 	PurpleConnectionError reason = PURPLE_CONNECTION_ERROR_NETWORK_ERROR;
- 	char *msg = jabber_parse_error(js, packet, &reason);
-+	if (!msg)
-+		return;
- 
- 	purple_connection_error_reason (js->gc, reason, msg);
- 
+--- pidgin-2.6.0/libpurple/protocols/jabber/jabber.c.orig2	2009-08-19 04:58:50.263681000 +0800
++++ pidgin-2.6.0/libpurple/protocols/jabber/jabber.c	2009-08-19 04:59:35.087217000 +0800
+@@ -153,6 +153,8 @@
+ 	} else {
+ 		PurpleConnectionError reason = PURPLE_CONNECTION_ERROR_NETWORK_ERROR;
+ 		char *msg = jabber_parse_error(js, packet, &reason);
++                if (!msg)
++                  return;
+ 		purple_connection_error_reason(js->gc, reason, msg);
+ 		g_free(msg);
+ 	}
--- a/patches/pidgin-05-option-menu.diff	Thu Sep 24 08:48:36 2009 +0000
+++ b/patches/pidgin-05-option-menu.diff	Thu Sep 24 14:10:04 2009 +0000
@@ -1,23 +1,10 @@
---- gaim-2.0.0beta6/pidgin/gtkaccount.c-ori	2007-04-03 15:27:40.388947000 +0800
-+++ gaim-2.0.0beta6/pidgin/gtkaccount.c	2007-04-03 15:29:02.395556000 +0800
-@@ -425,6 +425,7 @@
- 		dialog->protocol_menu = pidgin_protocol_option_menu_new(
- 				dialog->protocol_id, G_CALLBACK(set_account_protocol_cb), dialog);
+--- pidgin-2.6.0/pidgin/gtkaccount.c.orig3	2009-08-19 05:01:03.349767000 +0800
++++ pidgin-2.6.0/pidgin/gtkaccount.c	2009-08-19 05:02:24.679088000 +0800
+@@ -448,6 +448,7 @@
+ 		g_object_ref(G_OBJECT(dialog->protocol_menu));
+ #else
  		gtk_widget_ref(dialog->protocol_menu);
-+  		gtk_widget_show(dialog->protocol_menu);
++                gtk_widget_show(dialog->protocol_menu);
+ #endif
  	}
  
- 	hbox = add_pref_box(dialog, vbox, _("Pro_tocol:"), dialog->protocol_menu);
---- gaim-2.0.0beta6/libpurple/signals.c-ori	2007-04-03 15:28:03.320887000 +0800
-+++ gaim-2.0.0beta6/libpurple/signals.c	2007-04-03 15:29:30.222262000 +0800
-@@ -339,8 +339,8 @@
- 	/* Get the instance data */
- 	instance_data =
- 		(PurpleInstanceData *)g_hash_table_lookup(instance_table, instance);
--
--	g_return_if_fail(instance_data != NULL);
-+	if (instance_data == NULL)
-+		return;
- 
- 	/* Get the signal data */
- 	signal_data =
--- a/patches/pidgin-06-parse-account.diff	Thu Sep 24 08:48:36 2009 +0000
+++ b/patches/pidgin-06-parse-account.diff	Thu Sep 24 14:10:04 2009 +0000
@@ -1,62 +1,66 @@
---- pidgin-ori/libpurple/account.c-ori	2007-08-27 14:59:30.308555000 +0800
-+++ pidgin/libpurple/account.c	2007-08-27 15:00:01.196954000 +0800
-@@ -689,6 +689,9 @@
- 	char *name = NULL;
- 	char *data;
- 
-+  if (!node)
-+    return NULL;
-+
- 	child = xmlnode_get_child(node, "protocol");
- 	if (child != NULL)
- 		protocol_id = xmlnode_get_data(child);
---- pidgin-ori/pidgin/gtkblist.c-ori	2007-08-27 15:02:39.684347000 +0800
-+++ pidgin/pidgin/gtkblist.c	2007-08-27 15:02:43.117117000 +0800
-@@ -4930,11 +4930,14 @@
+--- pidgin-2.6.0/pidgin/gtkblist.c.orig	2009-08-19 05:09:05.853066000 +0800
++++ pidgin-2.6.0/pidgin/gtkblist.c	2009-08-19 05:12:29.941326000 +0800
+@@ -5387,11 +5387,15 @@
  #endif
  
  	gtk_tooltips_force_window (tooltips);
-+	if (tooltips->tip_window)
-+	{
++        if (tooltips->tip_window)
++        {
++
  #if GTK_CHECK_VERSION(2, 12, 0)
 -	gtk_widget_set_name (tooltips->tip_window, "gtk-tooltips");
-+		gtk_widget_set_name (tooltips->tip_window, "gtk-tooltips");
++	  gtk_widget_set_name (tooltips->tip_window, "gtk-tooltips");
  #endif
 -	gtk_widget_ensure_style (tooltips->tip_window);
 -	style = gtk_widget_get_style (tooltips->tip_window);
-+		gtk_widget_ensure_style (tooltips->tip_window);
-+		style = gtk_widget_get_style (tooltips->tip_window);
-+	}
++	  gtk_widget_ensure_style (tooltips->tip_window);
++	  style = gtk_widget_get_style (tooltips->tip_window);
++        }
  
  	gtkblist->changing_style = TRUE;
  	gtk_widget_set_style (gtkblist->headline_hbox, style);
---- pidgin-ori/pidgin/pidginstock.c	2007-08-30 09:37:50.656130000 +0800
-+++ pidgin/pidgin/pidginstock.c	2007-08-30 09:38:11.935367000 +0800
-@@ -276,6 +276,9 @@
-         guchar *pixdest;
-         guchar a;
+--- pidgin-2.6.0/pidgin/pidginstock.c.orig	2009-08-19 05:12:42.753663000 +0800
++++ pidgin-2.6.0/pidgin/pidginstock.c	2009-08-19 05:14:33.504818000 +0800
+@@ -296,6 +296,8 @@
+ 	guchar *pixdest;
+ 	guchar a;
  
 +        if (!src)
 +          return;
+ 	has_alpha = gdk_pixbuf_get_has_alpha (src);
+ 	if (!has_alpha)
+ 		return;
+@@ -363,6 +365,10 @@
+ 	filename = find_icon_file(theme, size, sized_icon, FALSE);
+ 	g_return_if_fail(filename != NULL);
+ 	pixbuf = gdk_pixbuf_new_from_file(filename, NULL);
 +
-         has_alpha = gdk_pixbuf_get_has_alpha (src);
-         if (!has_alpha)
-           return;
-@@ -323,6 +326,8 @@
- 		return;
- 
- 	pixbuf = gdk_pixbuf_new_from_file(filename, NULL);
-+	if (!pixbuf)
-+    		return;
++        if (!pixbuf)
++          return;
++
  	if (translucent)
  		do_alphashift(pixbuf, pixbuf);
  
-@@ -356,6 +361,8 @@
- 		if (!filename)
- 			return;
+@@ -393,6 +399,10 @@
+ 		filename = find_icon_file(theme, size, sized_icon, TRUE);
+ 		g_return_if_fail(filename != NULL);
  		pixbuf = gdk_pixbuf_new_from_file(filename, NULL);
-+		if (!pixbuf)
-+			return;
++
++                if (!pixbuf)
++                  return;
++
  		if (translucent)
  			do_alphashift(pixbuf, pixbuf);
- 		source = gtk_icon_source_new();
+ 
+--- pidgin-2.6.0/libpurple/account.c.orig	2009-08-19 05:07:32.101317000 +0800
++++ pidgin-2.6.0/libpurple/account.c	2009-08-19 05:08:08.425727000 +0800
+@@ -683,6 +683,9 @@
+ 	xmlnode *child;
+ 	char *data;
+ 
++        if (!node)
++          return;
++
+ 	proxy_info = purple_proxy_info_new();
+ 
+ 	/* Use the global proxy settings, by default */
--- a/patches/pidgin-07-menu-entry.diff	Thu Sep 24 08:48:36 2009 +0000
+++ b/patches/pidgin-07-menu-entry.diff	Thu Sep 24 14:10:04 2009 +0000
@@ -1,8 +1,7 @@
-diff -ur pidgin-2.4.3-orig//pidgin.desktop.in pidgin-2.4.3//pidgin.desktop.in
---- pidgin-2.4.3-orig//pidgin.desktop.in	Wed Jul  2 08:46:24 2008
-+++ pidgin-2.4.3//pidgin.desktop.in	Thu Aug 21 14:11:49 2008
-@@ -2,7 +2,8 @@
- Encoding=UTF-8
+--- pidgin-2.6.0/pidgin.desktop.in.orig1	2009-08-19 05:15:57.434683000 +0800
++++ pidgin-2.6.0/pidgin.desktop.in	2009-08-19 05:16:25.770216000 +0800
+@@ -1,7 +1,8 @@
+ [Desktop Entry]
  _Name=Pidgin Internet Messenger
  _GenericName=Internet Messenger
 -_Comment=Send instant messages over multiple protocols
--- a/patches/pidgin-08-race-condition.diff	Thu Sep 24 08:48:36 2009 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
---- pidgin-2.5.5/libpurple/protocols/msn/soap.c.orig	2009-04-10 09:14:07.457361000 +0800
-+++ pidgin-2.5.5/libpurple/protocols/msn/soap.c	2009-04-10 09:16:12.571812000 +0800
-@@ -667,6 +667,7 @@
- 			conn->handled_len = 0;
- 			conn->current_request = req;
- 
-+	                purple_input_remove(conn->event_handle);
- 			conn->event_handle = purple_input_add(conn->ssl->fd,
- 				PURPLE_INPUT_WRITE, msn_soap_write_cb, conn);
- 			if (!msn_soap_write_cb_internal(conn, conn->ssl->fd, PURPLE_INPUT_WRITE, TRUE)) {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/pidgin-08-unlock-keyring.diff	Thu Sep 24 14:10:04 2009 +0000
@@ -0,0 +1,13 @@
+--- pidgin-2.6.0/pidgin/gtkmain.c.orig2	2009-08-19 07:36:41.935460000 +0800
++++ pidgin-2.6.0/pidgin/gtkmain.c	2009-08-19 07:37:42.090824000 +0800
+@@ -731,6 +731,10 @@
+ 	gtk_rc_add_default_file(search_path);
+ 	g_free(search_path);
+ 
++#if GLIB_CHECK_VERSION(2,2,0)
++       g_set_application_name(_("Pidgin"));
++#endif /* glib-2.0 >= 2.2.0 */
++
+ #ifdef  GAIM_ENABLE_KEYRING
+         GnomeKeyringResult rtn = gnome_keyring_unlock_sync(NULL, NULL);
+         // if (rtn == GNOME_KEYRING_RESULT_DENIED)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/pidgin-09-crash.diff	Thu Sep 24 14:10:04 2009 +0000
@@ -0,0 +1,20 @@
+--- pidgin-2.6.1/pidgin/gtksound.c.old	2009-09-03 17:46:19.061118000 +0800
++++ pidgin-2.6.1/pidgin/gtksound.c	2009-09-03 17:46:34.414491000 +0800
+@@ -373,7 +373,6 @@
+ 		/* fall-through and clean up */
+ 	case GST_MESSAGE_EOS:
+ 		gst_element_set_state(play, GST_STATE_NULL);
+-		gst_object_unref(GST_OBJECT(play));
+ 		break;
+ 	case GST_MESSAGE_WARNING:
+ 		gst_message_parse_warning(msg, &err, NULL);
+--- pidgin-2.6.1/finch/gntsound.c.old	2009-09-03 17:46:50.469738000 +0800
++++ pidgin-2.6.1/finch/gntsound.c	2009-09-03 17:47:01.652629000 +0800
+@@ -427,7 +427,6 @@
+ 		/* fall-through and clean up */
+ 	case GST_MESSAGE_EOS:
+ 		gst_element_set_state(play, GST_STATE_NULL);
+-		gst_object_unref(GST_OBJECT(play));
+ 		break;
+ 	case GST_MESSAGE_WARNING:
+ 		gst_message_parse_warning(msg, &err, NULL);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/pidgin-10-crash-when-no-proxy-setting.diff	Thu Sep 24 14:10:04 2009 +0000
@@ -0,0 +1,15 @@
+--- pidgin-2.6.1/libpurple/dnsquery.c.old	2009-09-03 18:40:02.593372000 +0800
++++ pidgin-2.6.1/libpurple/dnsquery.c	2009-09-03 18:40:14.489648000 +0800
+@@ -956,11 +956,11 @@
+ 		memset(&sin, 0, sizeof(struct sockaddr_in));
+ 		memcpy(&sin.sin_addr.s_addr, hp->h_addr, hp->h_length);
+ 		sin.sin_family = hp->h_addrtype;
++	        g_free(hostname);
+ 	} else
+ 		sin.sin_family = AF_INET;
+ 	sin.sin_port = htons(query_data->port);
+ 
+-	g_free(hostname);
+ 	hosts = g_slist_append(hosts, GINT_TO_POINTER(sizeof(sin)));
+ 	hosts = g_slist_append(hosts, g_memdup(&sin, sizeof(sin)));
+