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]
--- 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)));
+