debian/0000775000000000000000000000000013061562535007176 5ustar debian/TODO0000664000000000000000000000015512274732607007673 0ustar - Move docs from pidgin-dev to libpurple-dev - Add a dh_finch for people who want to package plugins for it. debian/finch-dev.install0000664000000000000000000000023712274732607012437 0ustar debian/tmp/usr/include/finch debian/tmp/usr/include/gnt debian/tmp/usr/lib/libgnt.so debian/tmp/usr/lib/pkgconfig/gnt.pc debian/tmp/usr/lib/pkgconfig/finch.pc debian/control0000664000000000000000000001437612276166653010624 0ustar Source: pidgin Section: net Priority: optional Maintainer: Ubuntu Developers XSBC-Original-Maintainer: Ari Pollak Build-Depends: cdbs (>= 0.4.53), debhelper (>= 7), intltool, gconf2, libtool, dh-autoreconf, hardening-wrapper, libgtk2.0-dev (>= 2.10.0), libxss-dev, libmeanwhile-dev, libnss3-dev (>= 3.11.7), tcl-dev, tk-dev, libgstreamer0.10-dev, libgtkspell-dev, libltdl3-dev, libperl-dev, libstartup-notification0-dev, libzephyr-dev, libxml2-dev, libdbus-glib-1-dev, dbus, python (>= 2.4), libavahi-client-dev, libavahi-glib-dev, libxml-parser-perl, libncursesw5-dev, libsasl2-dev, xsltproc, doxygen, libfarstream-0.1-dev (>= 0.1.1), libgstreamer-plugins-base0.10-dev, network-manager-dev (>= 0.9.0) [linux-any], dpkg-dev (>= 1.16.0), libsqlite3-dev (>= 3.3), libidn11-dev, ca-certificates Standards-Version: 3.9.3 Vcs-Git: git://git.debian.org/git/collab-maint/pidgin.git Vcs-Browser: http://git.debian.org/?p=collab-maint/pidgin.git Homepage: http://www.pidgin.im Package: libpurple0 Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, ${perl:Depends}, libsasl2-modules Recommends: ca-certificates, libpurple-bin Suggests: ${shlibs:Suggests} Conflicts: network-manager (<< 0.9.0) Description: multi-protocol instant messaging library libpurple is a library intended to be used by programmers seeking to write an IM client that connects to many IM networks. Currently supported are: AIM/ICQ, Yahoo!, MSN, IRC, Jabber/XMPP/Google Talk, Napster, Zephyr, Gadu-Gadu, Bonjour, Groupwise, Sametime, SIMPLE, MySpaceIM, and MXit. . Some extra packages are suggested to use increased functionality: * tcl8.5, tk8.5: - Support for writing plugins with Tcl/Tk Package: pidgin Architecture: any Depends: pidgin-data (>= ${source:Upstream-Version}), pidgin-data (<< ${source:Upstream-Version}-z), ${shlibs:Depends}, ${misc:Depends}, ${perl:Depends} Recommends: gstreamer0.10-plugins-base, gstreamer0.10-plugins-good, pidgin-libnotify Suggests: gnome-panel (>= 2.1) | kdebase-workspace-bin | docker, evolution-data-server (>= 1.10.0), ${shlibs:Suggests} Description: graphical multi-protocol instant messaging client for X Pidgin is a graphical, modular instant messaging client capable of using multiple networks at once. Currently supported are: AIM/ICQ, Yahoo!, MSN, IRC, Jabber/XMPP/Google Talk, Napster, Zephyr, Gadu-Gadu, Bonjour, Groupwise, Sametime, SIMPLE, MySpaceIM, and MXit. . Some extra packages are suggested to use increased functionality: * gnome-panel | kdebase-workspace-bin | docker: - To use the system tray icon functionality (minimizing to an icon, having the icon blink when there are new messages, etc.) * libsqlite3-0: - To use Contact Availability Prediction plugin Package: pidgin-data Architecture: all Depends: ${misc:Depends} Enhances: libpurple0, finch, pidgin Replaces: pidgin-facebookchat (<< 1.69-2) Breaks: pidgin-facebookchat (<< 1.69-2) Description: multi-protocol instant messaging client - data files This package contains architecture-independent supporting data files required for use with pidgin, such as documentation, icons, translations, and sounds. Package: pidgin-dev Section: devel Architecture: all Depends: ${misc:Depends}, pidgin (>= ${source:Upstream-Version}), pidgin (<< ${source:Upstream-Version}+1~), pkg-config, libpurple-dev, libgtk2.0-dev Suggests: doc-base Description: multi-protocol instant messaging client - development files This package contains the headers and other development files not included in the main pidgin package. Install this if you wish to compile your own plugins. . If you are creating a pidgin plugin package, please be sure to read /usr/share/doc/pidgin-dev/README.Debian.dev after installing pidgin-dev. Package: pidgin-dbg Priority: extra Section: debug Architecture: any Depends: ${misc:Depends}, pidgin (= ${binary:Version}) | finch (= ${binary:Version}) | libpurple0 (= ${binary:Version}), pidgin-data (= ${source:Version}), ${shlibs:Depends} Description: Debugging symbols for Pidgin This package includes the debugging symbols useful for debugging Pidgin and its plugins, contained in the pidgin package. The debugging symbols are used for execution tracing and core dump analysis. Package: finch Architecture: any Depends: pidgin-data (>= ${source:Upstream-Version}), pidgin-data (<< ${source:Upstream-Version}-z), ${shlibs:Depends}, ${misc:Depends} Suggests: ${shlibs:Suggests} Description: text-based multi-protocol instant messaging client Finch is a text/console-based, modular instant messaging client capable of using multiple networks at once. Currently supported are: AIM/ICQ, Yahoo!, MSN, IRC, Jabber/XMPP/Google Talk, Napster, Zephyr, Gadu-Gadu, Bonjour, Groupwise, Sametime, SIMPLE, MySpaceIM, and MXit. . Some extra packages are suggested to use increased functionality: * libx11-6 - To use the Clipboard and/or Toaster plugins. Package: finch-dev Section: devel Architecture: all Depends: ${misc:Depends}, finch (>= ${source:Upstream-Version}), finch (<< ${source:Upstream-Version}+1~), pkg-config, libpurple-dev, libglib2.0-dev, libncursesw5-dev Description: text-based multi-protocol instant messaging client - development This package contains the headers and other development files not included in the main finch package. Install this if you wish to compile your own plugins, or would like to compile programs that use the libgnt library. Package: libpurple-dev Section: libdevel Architecture: all Depends: libpurple0 (>= ${source:Upstream-Version}), libpurple0 (<< ${source:Upstream-Version}+1~), pkg-config, libglib2.0-dev, libdbus-glib-1-dev, ${misc:Depends} Description: multi-protocol instant messaging library - development files This package contains the headers and other development files not included in the main libpurple0 package. Install this if you wish to compile your own client-agnostic plugins, or would like to compile programs that use libpurple. Package: libpurple-bin Section: net Architecture: all Depends: ${shlibs:Depends}, ${misc:Depends}, python, python-dbus Description: multi-protocol instant messaging library - extra utilities This package contains the utilities not included in the main libpurple0 package. Currently included are: purple-remote, purple-send, purple-send-async, and purple-url-handler. debian/docs0000664000000000000000000000002312274732607010050 0ustar ChangeLog.API NEWS debian/pidgin.install0000664000000000000000000000035612274732607012050 0ustar debian/tmp/etc/gconf debian/tmp/usr/bin/pidgin debian/tmp/usr/lib/pidgin debian/tmp/usr/share/applications debian/tmp/usr/share/man/*/pidgin.* debian/tmp/usr/share/man/*/Pidgin.* debian/lintian-override/pidgin usr/share/lintian/overrides debian/libpurple0.install0000664000000000000000000000027612274732607012655 0ustar debian/tmp/usr/lib/libpurple*.so.* debian/tmp/usr/lib/purple-2 debian/tmp/usr/share/man/*/Purple.* debian/tmp/usr/share/purple debian/lintian-override/libpurple0 usr/share/lintian/overrides debian/pidgin-menu.xpm0000664000000000000000000001031412274732607012143 0ustar /* XPM */ static char *pidgin-menu[] = { /* columns rows colors chars-per-pixel */ "32 32 126 2", " c #2E3436", ". c #35243C", "X c #3C1A42", "o c #31234D", "O c #401C46", "+ c #431F4A", "@ c #402046", "# c #44234A", "$ c #48284E", "% c #4A2651", "& c #4E2D53", "* c #54345A", "= c #503855", "- c #58365F", "; c #593D5E", ": c #5B3B61", "> c #5E3868", ", c #6D4475", "< c #6E4179", "1 c #6B4B72", "2 c #6F4D79", "3 c #635666", "4 c #6B5270", "5 c #70457B", "6 c #704F77", "7 c #714A7C", "8 c #715276", "9 c #725079", "0 c #78517F", "q c #787878", "w c #754680", "e c #764C82", "r c #784B82", "t c #7E4E89", "y c #755380", "u c #7C5585", "i c #7E5788", "p c #7D5985", "a c #7F5C88", "s c #B6625C", "d c #BC6C64", "f c #BA797F", "g c #D5693B", "h c #F7741B", "j c #F9751A", "k c #E96F29", "l c #EE7124", "z c #F97E29", "x c #C1634F", "c c #814E8D", "v c #81508D", "b c #815E87", "n c #815B8A", "m c #8B5284", "M c #845390", "N c #865D91", "B c #895596", "V c #8A5D93", "C c #915B9D", "Z c #955EA1", "A c #816587", "S c #83638C", "D c #816A85", "F c #886A8F", "G c #8B6195", "H c #8A6B92", "J c #8F6899", "K c #8C7093", "L c #916E99", "P c #94729A", "I c #98769F", "U c #9561A1", "Y c #9D65A8", "T c #9773A0", "R c #9A76A3", "E c #9F71A9", "W c #9C7AA4", "Q c #A3708F", "! c #B27A8D", "~ c #A26BAE", "^ c #A476B0", "/ c #AA7CB3", "( c #F9812F", ") c #FA924B", "_ c #FA9651", "` c #F3A06C", "' c #F6AC79", "] c #FBAB73", "[ c #818181", "{ c #8B8B8B", "} c #938196", "| c gray57", " . c gray60", ".. c #A986B2", "X. c #A798A9", "o. c #A89BAB", "O. c #B08CB9", "+. c #B195B7", "@. c #BDB3BF", "#. c #BDA2C3", "$. c #D2B2B5", "%. c #DFBDB3", "&. c #EFAE8A", "*. c #E1A794", "=. c #F8B486", "-. c #C4A5CB", ";. c #C9B2CD", ":. c #D0B4D7", ">. c #D2B7D8", ",. c #D3B9D8", "<. c #CBC4CC", "1. c #D2D2D2", "2. c #DBD6DB", "3. c #DBC4E0", "4. c #DFCFE3", "5. c #E2DEE2", "6. c #EBDFED", "7. c #E5E4E5", "8. c #E9E4EA", "9. c #EEEEEE", "0. c #EFE5F1", "q. c #F2EBF3", "w. c #F3F3F3", "e. c #F9F6F9", "r. c #FDFDFD", "t. c None", /* pixels */ "t.t.t.t.t.t.t.t.t.t.t.q [ q q q q q q q q q q q q q q q [ q t.t.", "t.t.t.t.t.t.t.t.t.t.q | w.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.9.| [ t.", "t.t.t.t.t.t.t.t.t.q { r.r.r.e.r.e.r.r.r.e.r.e.r.r.r.e.r.r.r.{ q ", "t.t.t.t.t.t.t.t.t.[ 7.r.r.e.r.e.r.r.e.e.r.e.r.e.e.r.r.e.r.r.7.[ ", "t.t.t.t.t.t.t.t.t.q r.e.r.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.r.[ ", "t.t.t.t.t.t.t.t.X @ } 9.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.r.q ", "t.t.t.t.t.t.X X X 3 $ ; 7.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.r.q ", "t.t.t.t.t.t.o X X @ o & 4 X.7.e.e.w.e.w.e.e.w.e.w.e.w.e.w.e.r.q ", "t.t.t.t.t.X X - p H W P a 1 % @.w.e.w.e.e.w.e.w.e.w.w.e.w.e.r.q ", "t.t.t.t.X + a W S y 6 y n L L * D w.w.w.w.w.w.e.w.w.e.w.w.w.r.q ", "t.t.t.X + I G e 2 w 7 7 7 7 n W ; o.w.w.w.w.w.w.w.w.w.w.w.w.r.q ", "t.t.X X S J e r e e e e e e r n I & 2.w.w.w.w.w.w.w.w.w.w.w.r.q ", "t.t.X : W E 8.0.O.v t t t t c c J J S w.w.9.w.9.w.9.w.w.w.w.r.q ", "t.t.X a U 3.r.r.r.^ v v v M c C -.q.+.9.w.9.9.w.9.w.9.9.9.9.r.q ", "t.t.O P Y q.H H r.,.v v M M M Z F F q.8.w.9.9.9.9.w.w.9.9.9.e.[ ", "t.t.X W ~ 0.H H r.4.v v c t c C A H e.<.9.9.9.9.9.9.9.9.9.w.w.[ ", "t.t.@ W Y :.r.r.r...c c v v c B / 8.;.7.w.9.9.9.9.9.9.9.9.e.7.q ", "t.t.O W B ~ >.q.#.M c M v v v M B U < r.r.r.r.e.9.e.r.r.r.e.{ q ", "t.t.O W t M c c c v v %.=.' $.t V S = q q q [ r.r.1.q q q [ q t.", "t.t.X R v v M c ! *.&.] _ ( j g d 6 X t.t.t.q e. .[ q q q t.t.t.", "t.t.O I M M c M t ! ` ) ( j j l Q : X t.t.t.q q q t.t.t.t.t.t.t.", "t.t.X R M t M t M c m s g l x m R $ X t.t.t.q q t.t.t.t.t.t.t.t.", "t.X & R t M c c c c c c c c v c R + t.t.t.t.t.t.t.t.t.t.t.t.t.t.", "t.X 1 G m c c c c c c c v v c c T & X t.t.t.t.t.t.t.t.t.t.t.t.t.", "t.X F 7 c c c c c c c c c c c c a 8 X X t.t.t.t.t.t.t.t.t.t.t.t.", "X & G t c c M c c M c c c v c c 5 S 8 @ X t.t.t.t.t.t.t.t.t.t.t.", "X 9 u 5 c c c c c c c c c v v t 5 < u S : + X t.t.t.t.t.t.t.t.t.", "O a 5 < t c c c c c c c c v t 5 < < < 5 i 6 % X t.t.t.t.t.t.t.t.", "X i 5 < 5 t c c c c c c c c w < < 5 < < < e 6 O t.t.t.t.t.t.t.t.", "O > 0 n n n V V G G G G G V N i i u i u i a 7 O t.t.t.t.t.t.t.t.", ". @ # # # O X X X X O O X X X X X X X X X X X X t.t.t.t.t.t.t.t.", " t.t.t.t.t.t.t.t." }; debian/changelog0000664000000000000000000036726513061562535011073 0ustar pidgin (1:2.10.9-0ubuntu3.4) trusty-security; urgency=medium * SECURITY UPDATE: Out-of-bounds write when stripping xml - debian/patches/CVE-2017-2640.patch: improve entity processing in libpurple/util.c. - CVE-2017-2640 -- Marc Deslauriers Mon, 13 Mar 2017 14:30:53 -0400 pidgin (1:2.10.9-0ubuntu3.3) trusty-security; urgency=medium * SECURITY UPDATE: denial of service and code execution in MXIT protocol - debian/patches/CVE-2016-*.patch: fix multiple issues. - CVE-2016-2365 - CVE-2016-2366 - CVE-2016-2367 - CVE-2016-2368 - CVE-2016-2369 - CVE-2016-2370 - CVE-2016-2371 - CVE-2016-2372 - CVE-2016-2373 - CVE-2016-2374 - CVE-2016-2375 - CVE-2016-2376 - CVE-2016-2377 - CVE-2016-2378 - CVE-2016-2380 - CVE-2016-4323 -- Marc Deslauriers Tue, 12 Jul 2016 08:54:12 -0400 pidgin (1:2.10.9-0ubuntu3.2) trusty-security; urgency=medium * SECURITY UPDATE: insufficient ssl certificate validation - debian/patches/CVE-2014-3694.patch: fix basic constraints checking in libpurple/certificate.c, libpurple/certificate.h, libpurple/plugins/ssl/ssl-gnutls.c, libpurple/plugins/ssl/ssl-nss.c. - CVE-2014-3694 * SECURITY UPDATE: denial of service via malformed MXit emoticon response - debian/patches/CVE-2014-3695.patch: properly check lengths in libpurple/protocols/mxit/markup.c. - CVE-2014-3695 * SECURITY UPDATE: denial of service via malformed Groupwise message - debian/patches/CVE-2014-3696.patch: check sizes in libpurple/protocols/novell/nmevent.c. - CVE-2014-3696 * SECURITY UPDATE: XMPP information leak - debian/patches/CVE-2014-3698.patch: fix leaks in libpurple/protocols/jabber/jutil.c. - CVE-2014-3698 -- Marc Deslauriers Mon, 27 Oct 2014 11:36:20 -0400 pidgin (1:2.10.9-0ubuntu3.1) trusty-security; urgency=medium * SECURITY UPDATE: memory corruption via crafted message from gadu-gadu file relay server - debian/patches/CVE-2014-3775.patch: check relay_count in libpurple/protocols/gg/lib/dcc7.c - CVE-2014-3775 -- Marc Deslauriers Tue, 20 May 2014 11:08:53 -0400 pidgin (1:2.10.9-0ubuntu3) trusty; urgency=medium * debian/patches/xmessagingmenu.patch: change the .in file as well so the changes are not overwriten when regenerating -- Sebastien Bacher Wed, 09 Apr 2014 19:00:52 +0200 pidgin (1:2.10.9-0ubuntu2) trusty; urgency=medium * debian/control: remove libgadu-dev from Build-Depends. Pidgin has been using its own libgadu since at least precise, and the useless dependency is pulling libgadu into main. -- Marc Deslauriers Mon, 10 Feb 2014 10:15:42 -0500 pidgin (1:2.10.9-0ubuntu1) trusty; urgency=medium * New upstream version, thanks Jackson Doak (lp: #1275113) CVE-2012-6152, CVE-2013-6477, CVE-2013-6478, CVE-2013-6479, CVE-2013-6481, CVE-2013-6482, CVE-2013-6483, CVE-2013-6484, CVE-2013-6485, CVE-2013-6486, CVE-2013-6487, CVE-2013-6489, CVE-2013-6490, CVE-2014-0020. -- Sebastien Bacher Thu, 06 Feb 2014 16:17:33 +0000 pidgin (1:2.10.7-0ubuntu4.2) trusty; urgency=low * Rebuild for Perl 5.18. -- Colin Watson Tue, 22 Oct 2013 12:18:43 +0100 pidgin (1:2.10.7-0ubuntu4.1) raring-proposed; urgency=low * Add hg-remove-SIGCHLD-handler.patch: Fix hanging on startup. Backport of upstream commit from 3.0 (LP: #1108056) -- Robert Hooker Sat, 20 Apr 2013 15:40:16 -0400 pidgin (1:2.10.7-0ubuntu4) raring; urgency=low * Specified multiarch Tcl location, fixing FTBFS. -- Daniel T Chen Tue, 02 Apr 2013 17:31:12 -0400 pidgin (1:2.10.7-0ubuntu3) raring; urgency=low * debian/patches/hg_no_cap_segfault.patch: - don't segfault when checking capabilities of contacts (lp: #1128768) -- Sebastien Bacher Thu, 28 Feb 2013 11:48:43 +0100 pidgin (1:2.10.7-0ubuntu2) raring; urgency=low * debian/patches/git_pidgin-fix-irc.patch: - upstream patch for being able to use IRC with pidgin for those kind of users… (LP: #1128273) -- Didier Roche Thu, 21 Feb 2013 11:31:08 +0000 pidgin (1:2.10.7-0ubuntu1) raring; urgency=low * New upstream version, includes fixes for those security issues: CVE-2013-0271 CVE-2013-0272 CVE-2013-0273 CVE-2013-0274 * debian/patches/libnssckbi_path.patch: - dropped, the code has been replaced in the new version -- Sebastien Bacher Wed, 13 Feb 2013 18:49:58 +0100 pidgin (1:2.10.6-0ubuntu4) raring; urgency=low * debian/patches/pounce-webview.patch (LP: #1026442) - Buddy pounce - send message window too short -- Ritesh Khadgaray Wed, 09 Jan 2013 19:37:14 +0530 pidgin (1:2.10.6-0ubuntu3) raring; urgency=low * debian/patches/xmessagingmenu.patch: - use X-MessagingMenu-UsesChatSection in the desktop entry (lp: #1040259) -- Sebastien Bacher Fri, 16 Nov 2012 10:29:38 +0100 pidgin (1:2.10.6-0ubuntu2) quantal; urgency=low * debian/control: fixed a typo for tcl and tk (LP: #1022935) -- John Kim Tue, 11 Sep 2012 18:51:33 -0700 pidgin (1:2.10.6-0ubuntu1) quantal-proposed; urgency=low * New upstream release -- Robert Ancell Mon, 09 Jul 2012 09:47:15 +1200 pidgin (1:2.10.5-0ubuntu1) quantal-proposed; urgency=low * New upstream release * debian/libpurple0.symbols: - Updated - Remove debian revisions from symbols versions -- Robert Ancell Fri, 06 Jul 2012 10:59:45 +1200 pidgin (1:2.10.4-0ubuntu1) quantal; urgency=low * New upstream release * debian/patches/irc_disable_periodic_who.patch: * debian/patches/70_farstream_rename.patch: - Applied upstream -- Robert Ancell Mon, 28 May 2012 17:21:44 +1200 pidgin (1:2.10.3-0ubuntu2) quantal; urgency=low * debian/control: - Drop dependency on liblaunchpad-integration-dev * debian/patches/02_lpi.patch: - Dropped, we no longer do Launchpad integration -- Robert Ancell Tue, 15 May 2012 10:12:45 +1200 pidgin (1:2.10.3-0ubuntu1) precise; urgency=low * update to new stable release, fixes (LP: #964210) -- Alexander Fougner Fri, 06 Apr 2012 10:03:13 +0200 pidgin (1:2.10.2-1ubuntu2) precise; urgency=low * debian/patches/70_farstream_rename.patch - updated patch from the upstream bug report http://developer.pidgin.im/ticket/14936 -- Ken VanDine Wed, 04 Apr 2012 17:02:58 -0400 pidgin (1:2.10.2-1ubuntu1) precise; urgency=low * New upstream version based on the Debian update -- Sebastien Bacher Thu, 05 Jan 2012 15:46:36 +0100 pidgin (2.10.2-1) unstable; urgency=medium * Imported Upstream version 2.10.2 - Fixes a possible remote crash in XMPP (CVE-2011-4939) (Closes: #664028) - Fixes a possible remote crash in XMPP (CVE-2012-1178) (Closes: #664030) -- Ari Pollak Wed, 14 Mar 2012 21:20:18 -0400 pidgin (1:2.10.1-1ubuntu2) precise; urgency=low * debian/control - build depend on farstream instead of farsight, it was renamed upstream * debian/patches/70_farstream_rename.patch - updated for the transition from farsight to farstream -- Ken VanDine Mon, 05 Mar 2012 15:13:12 -0500 pidgin (1:2.10.1-1ubuntu1) precise; urgency=low * New upstream version based on the Debian update -- Sebastien Bacher Thu, 05 Jan 2012 15:46:36 +0100 pidgin (2.10.1-1) unstable; urgency=medium * Imported Upstream version 2.10.1 - Fixes remotely-triggered crash in XMPP/Jingle - Fixes remotely-triggered crash in AIM/ICQ (CVE-2011-4601) - Fixes remotely-triggered crash in SILC (CVE-2011-3594) * add NEWS to installed docs * nm09-more.patch: change deprecated Network Manager signal name (Closes: #642117) -- Ari Pollak Fri, 09 Dec 2011 12:03:20 -0500 pidgin (2.10.0-2) unstable; urgency=low * Add Conflicts: network-manager (<< 0.9.0) so there shouldn't be any version mismatch issues (Closes: #642199) -- Ari Pollak Wed, 28 Sep 2011 00:35:09 -0400 pidgin (2.10.0-1) unstable; urgency=high * Imported Upstream version 2.10.0 - Fixes a remote crash in IRC - Fixes a remote crash in MSN * Use linux-any instead of hardcoded list of non-Linux architectures (Closes: #634612) -- Ari Pollak Thu, 18 Aug 2011 08:18:02 -0400 pidgin (1:2.10.0-0ubuntu3) precise; urgency=low * Rebuild for Perl 5.14 (LP: #890845). -- Colin Watson Tue, 15 Nov 2011 21:05:59 +0000 pidgin (1:2.10.0-0ubuntu2) oneiric; urgency=low * debian/patches/irc_disable_periodic_who.patch: work around spontaneous disconnects from IRC due to 'Max SendQ exceeded' errors caused by periodic /who checks. (LP: #856631) -- Mathieu Trudel-Lapierre Fri, 23 Sep 2011 22:00:52 -0400 pidgin (1:2.10.0-0ubuntu1) oneiric; urgency=low * New upstream release. * debian/patches/60_1024x600_gtkprefs.c.patch: refreshed. -- Mathieu Trudel-Lapierre Thu, 25 Aug 2011 16:08:06 -0400 pidgin (1:2.9.0-3ubuntu1) oneiric; urgency=low * Merge with Debian; remaining changes: (LP: #802374) - debian/libpurple0.symbols: update symbols for epoch. - debian/patches/02_lpi.patch: add Launchpad integration support. - debian/patches/04_let_crasher_for_apport.patch: stop catching the SIGSEGV signal and let apport handle it. - debian/patches/05_default_to_irc_ubuntu_com.patch: set the default IRC server to irc.ubuntu.com. - debian/patches/10_docklet_default_off.patch: default behavior to have no notification area icon. - debian/patches/11_buddy_list_really_show.patch: the buddy list tries harder to appear. This fixes some issues with it not appearing. - debian/patches/13_sounds_and_timers.patch: mute notification sounds for 15 seconds at login time. - debian/patches/60_1024x600_gtk*.c.patch: add scrollbars into preferences and pounce dialogs - debian/prefs.xml: ship extra default settings for notifications, add the notification plugin by default and turn on logging by default. - debian/rules: - use autoreconf. - add translation domain for desktop file / update translations. - add launcher desktop file for indicator-messages. - debian/control: - add launchpad-integration, libtool, dh-autoreconf to Build-Depends. - drop pidgin-data Depends from libpurple0. - drop libpurple0 Depends from libpurple-bin. - add pidgin-libnotify as Recommends for pidgin binary. -- Mathieu Trudel-Lapierre Fri, 29 Jul 2011 10:45:37 -0400 pidgin (2.9.0-3) unstable; urgency=low * Oops, really enable hardening-wrapper -- Ari Pollak Thu, 07 Jul 2011 22:14:38 -0400 pidgin (2.9.0-2) unstable; urgency=low * Fix missing epoch in libgadu-dev build-depends (Closes: #630654 again) * Build-depend on fixed version of libgadu-dev that depends on libgnutls-dev (Closes: #631979) * Use hardening-wrapper (Closes: #632515) -- Ari Pollak Wed, 06 Jul 2011 21:52:41 -0400 pidgin (2.9.0-1) unstable; urgency=high * Imported Upstream version 2.9.0 - Fixes denial-of-service vulnerability in buddy icon handling (CVE-2011-2485) * Re-enable GG and update libgadu-dev version -- Ari Pollak Thu, 23 Jun 2011 21:56:01 -0400 pidgin (2.8.0-2) unstable; urgency=low * Explicitly disable GG protocol since we don't have libgadu-dev 1.11.0 in Debian yet (Closes: #630654) -- Ari Pollak Wed, 15 Jun 2011 19:19:58 -0400 pidgin (1:2.8.0-1ubuntu1) oneiric; urgency=low * Updated to the new version, backporting corresponding Debian revision -- Sebastien Bacher Thu, 16 Jun 2011 11:22:59 +0200 pidgin (2.8.0-1) unstable; urgency=low * Imported Upstream version 2.8.0 (Closes: #630124) * Remove SILC support since the library will be orphaned (Closes: #629222) * Fix typo in libpurple-bin description (Closes: #625462) -- Ari Pollak Sun, 13 Jun 2011 21:17:20 -0400 pidgin (2.7.11-2) unstable; urgency=low * Add Build-Depends: gconf2, which used to be pulled in by something else (Closes: #621940) -- Ari Pollak Sun, 08 May 2011 10:04:26 -0400 pidgin (1:2.7.11-1ubuntu4) oneiric; urgency=low * Clean debian-changes-2.7.11-1ubuntu1 from the previous upload * debian/control, debian/rules: - use dh-autoreconf since the lpi patch needs a configure update, thanks Michael Bienia for figuring that build issue -- Sebastien Bacher Thu, 19 May 2011 10:39:30 +0200 pidgin (1:2.7.11-1ubuntu3) oneiric; urgency=low * Rebuild for Perl 5.12. -- Colin Watson Tue, 10 May 2011 05:25:58 +0100 pidgin (1:2.7.11-1ubuntu2) natty; urgency=low * Symbols were removed from libpurple-client.so.0 and are now only found in libpurple.so.0 (LP: #757311) - update debian/libpurple0.symbols -- Micah Gersten Mon, 11 Apr 2011 04:31:49 -0500 pidgin (1:2.7.11-1ubuntu1) natty; urgency=low * Merge from Debian unstable (LP: #757146), remaining changes: + debian/control: - Add libtool and liblaunchpad-integration-dev build depends - Bump standards version - Relax binary depends on pidgin versions - Add pidgin-libnotify as Recommends for pidgin binary - Fix description of pidgin binary - Don't have libpurple-bin depend on libpurple0 + debian/libpurple0.symbols: add epoch to appropriate symbols + Add debian/patches: - 02_lpi.patch - 04_let_crasher_for_apport.patch - 05_default_to_irc_ubuntu_com.patch - 10_docklet_default_off.patch - 11_buddy_list_really_show.patch - 13_sounds_and_timers.patch - 60_1024x600_gtkpounce.c.patch - 60_1024x600_gtkprefs.c.patch + debian/prefs.xml: add notification prefs + debian/rules: - Add translation domain to desktop file with gettext - Add the launcher for pidgin * Add configure check for launchpad integration attached to the gtk check since upstream dropped the startup notification check which is where this check was previously - update debian/patches/02_lpi.patch -- Micah Gersten Mon, 11 Apr 2011 03:27:22 -0500 pidgin (2.7.11-1) unstable; urgency=high * Imported Upstream version 2.7.11 - fixes a crash in Voice/Video settings plugin (Closes: #611678) - fixes a remote DoS in Yahoo protocol (CVE-2011-1091) -- Ari Pollak Sat, 12 Mar 2011 20:58:32 -0500 pidgin (2.7.9-2) unstable; urgency=low * Remove old Replaces/Conflicts * pidgin-data now Breaks/Replaces pidgin-facebookchat since we now provide facebook.png (Closes: #608685) -- Ari Pollak Sun, 02 Jan 2011 14:08:57 -0500 pidgin (1:2.7.9-1ubuntu2) natty; urgency=low * debian/control: Have pidgin-data Replaces: pidgin-facebookchat, as they both ship the same icon. (LP: #697097) -- Martin Pitt Sun, 09 Jan 2011 06:30:48 -0600 pidgin (1:2.7.9-1ubuntu1) natty; urgency=low * Resynchronize on Debian -- Sebastien Bacher Mon, 03 Jan 2011 16:36:53 +0100 pidgin (2.7.9-1) unstable; urgency=medium * Imported Upstream version 2.7.9 (Closes: #608331) - fixes a potential DoS vulnerability in MSN protocol -- Ari Pollak Sat, 01 Jan 2011 16:49:39 -0500 pidgin (1:2.7.7-1ubuntu1) natty; urgency=low * New upstream version, drop msn workaround -- Sebastien Bacher Thu, 02 Dec 2010 16:45:52 +0100 pidgin (2.7.7-1) unstable; urgency=low * Imported Upstream version 2.7.7 -- Ari Pollak Wed, 24 Nov 2010 10:01:07 -0500 pidgin (2.7.6-1) unstable; urgency=low * Imported Upstream version 2.7.6 - Adds new MSN SSL certificates (Closes: #603911) * Call dh_perl with -d to avoid Perl dependency. (Closes: #602928) - thanks to Martin Pitt -- Ari Pollak Mon, 22 Nov 2010 09:42:59 -0500 pidgin (1:2.7.5-1ubuntu3) natty; urgency=low * debian/patches/13_sounds_and_timers.patch: Squash debian-changes-* patch onto this one, was presumably split up by accident * debian/patches/workaround-msn-ssl-failure.patch: Workaround SSL connectivity issues with MSN (LP: #676972) -- Chow Loong Jin Fri, 19 Nov 2010 20:49:42 +0800 pidgin (1:2.7.5-1ubuntu2) natty; urgency=low * debian/rules: Call dh_perl with -d to avoid Perl dependency. The shipped perl module only uses modules from perl-base. -- Martin Pitt Tue, 09 Nov 2010 14:02:05 +0100 pidgin (1:2.7.5-1ubuntu1) natty; urgency=low * Resync on Debian -- Sebastien Bacher Fri, 05 Nov 2010 19:44:21 +0100 pidgin (2.7.5-1) unstable; urgency=low * Imported Upstream version 2.7.5 - Fixes AIM/ICQ regressions (Closes: #602541) -- Ari Pollak Fri, 05 Nov 2010 15:20:02 -0400 pidgin (2.7.4-2) unstable; urgency=low * Add libgadu_version.patch - change minimum version for libgadu (Closes: #600969) * Update version of libgadu-dev build-dependency -- Ari Pollak Fri, 22 Oct 2010 18:44:49 -0400 pidgin (2.7.4-1) unstable; urgency=high * Imported Upstream version 2.7.4 - Fixes multiple remotely-triggered DoSes (CVE-2010-3711) * Remove obsolete msn_crash.patch * Fix doc-base section -- Ari Pollak Wed, 20 Oct 2010 22:04:38 -0400 pidgin (2.7.3-2) unstable; urgency=low * Apply upstream patch to fix random crashes in MSN (Closes: #594893) -- Ari Pollak Sat, 11 Sep 2010 00:21:02 -0400 pidgin (1:2.7.3-1ubuntu3.1) maverick-security; urgency=low * SECURITY UPDATE: denial of service via base64 decoding (LP: #666998) - debian/patches/61_CVE-2010-3711.patch: correctly handle purple_base64_decode return codes in libpurple/ntlm.c, libpurple/plugins/perl/common/Util.xs, libpurple/protocols/{jabber/auth_digest_md5.c,msn/slp.c, myspace/message.c,oscar/clientlogin.c,qq/im.c,yahoo/libymsg.c}. - CVE-2010-3711 -- Marc Deslauriers Tue, 02 Nov 2010 17:17:40 -0400 pidgin (1:2.7.3-1ubuntu3) maverick; urgency=low * Include upstream bugfix (bug 12629) for Bonjour support (LP: #641344) -- Stéphane Graber Tue, 21 Sep 2010 08:31:16 -0400 pidgin (1:2.7.3-1ubuntu2) maverick; urgency=low [ K. Vishnoo Charan Reddy ] * debian/control: - Improve package description for pidgin (LP: #259793) -- Robert Ancell Thu, 02 Sep 2010 17:29:43 +1000 pidgin (1:2.7.3-1ubuntu1) maverick; urgency=low * Resync on Debian, workaround build issue (lp:#600952) * debian/control: - Build-Depends on liblaunchpad-integration-dev - Drop libpurple0 dependency from libpurple-bin - Drop pidgin-data dependency from libpurple0 - Recommends pidgin-libnotify * debian/libpurple0.symbols: - add epochs * debian/patches/02_lpi.patch: - launchpad integration * debian/patches/04_let_crasher_for_apport.patch: - stop catching the SIGSEGV signal and let apport handle it * debian/patches/05_default_to_irc_ubuntu_com.patch: - set the default IRC server to irc.ubuntu.com * debian/patches/10_docklet_default_off.patch: - default behavior to have no notification area icon. * debian/patches/11_buddy_list_really_show.patch: - the buddy list tries harder to appear. This fixes some issues with it not appearing. * debian/patches/ 13_sounds_and_timers.patch: - adjusts the time out for sounds to be 15 seconds, which helps get fewer spurious login notifications on slow connections. * debian/patches/60_1024x600_gtk*.c.patch: - add scrollbars into preferences and pounce dialogs * debian/prefs.xml: - Update to set the notify plugin prefs /plugins/gtk/X11/notify/*, set /pidgin/plugins/loaded to load the notify plugin and enable the standard logging options by default * debian/rules: - install a launcher in the message indicator - set translation domain and update template - use simple-patchsys rules -- Sebastien Bacher Wed, 11 Aug 2010 14:16:15 +0200 pidgin (2.7.3-1) unstable; urgency=low * Imported Upstream version 2.7.3 * Fix lintian weak-library-dev-dependency error * Move package VCS to git -- Ari Pollak Wed, 11 Aug 2010 00:42:09 -0400 pidgin (2.7.2-1) unstable; urgency=medium * New upstream release - Fixes a remote crash in AIM/ICQ (CVE-2010-2528) * debian/patches/python26.patch: - don't raise string exceptions, since that's incompatible with python 2.6 (Closes: #585242) -- Ari Pollak Thu, 22 Jul 2010 19:00:29 -0400 pidgin (2.7.1-1) unstable; urgency=low * New upstream release - Fixes ICQ messages coming in with full HTML (Closes: #583710) -- Ari Pollak Sun, 30 May 2010 00:00:37 -0400 pidgin (2.7.0-3) unstable; urgency=low * Apply patch from upstream to fix a crash in OSCAR (Closes: #582163) -- Ari Pollak Wed, 19 May 2010 23:23:03 -0400 pidgin (2.7.0-2) unstable; urgency=low * Disable gevolution plugin for now since it's more important to get a new version out (Closes: #582227) -- Ari Pollak Wed, 19 May 2010 22:47:45 -0400 pidgin (2.7.0-1) unstable; urgency=medium * New upstream release - Fixes an MSN emoticon DoS (CVE-2010-1624) - Fixes ICQ encoding problems with cyrillic (Closes: #571928) - Fixes notification icon transparency (Closes: #566631) - Fixes ICQ icon size limits (Closes: #570482) - Fixes NSS problem on libpurple reload (Closes: #573065) - Fixes double-free if ssl handshake fails with XMPP (Closes: #573068) -- Ari Pollak Wed, 12 May 2010 23:29:21 -0400 pidgin (2.6.6-2) unstable; urgency=low * debian/patches/oscar_login.patch: - Fix login problems in AIM/ICQ (Closes: #571413) -- Ari Pollak Thu, 25 Feb 2010 10:28:42 -0500 pidgin (2.6.6-1) unstable; urgency=high * New upstream release - Fixes a remote MSN SLP crash (CVE-2010-0277) (Closes: #566775) - Fixes a remote Finch XMPP crash (CVE-2010-0420) - Fixes a remote smiley freeze/CPU pegging DoS (CVE-2010-0423) -- Ari Pollak Tue, 16 Feb 2010 16:50:02 -0500 pidgin (2.6.5-2) unstable; urgency=low * debian/patches/libnssckbi_path.patch: - Fix path to libnssckbi.so (Closes: #564711) * debian/patches/clientlogin-fix.patch: - Fixes ICQ/AIM login issue (Closes: #565147) -- Ari Pollak Thu, 14 Jan 2010 19:46:40 -0500 pidgin (2.6.5-1) unstable; urgency=low * New upstream release * debian/patches/CVE-2010-0013.patch: - Fix MSN local file disclosure vulnerability (Closes: #563206) (CVE-2010-0013) -- Ari Pollak Sat, 09 Jan 2010 14:13:53 -0500 pidgin (2.6.4-1) unstable; urgency=low * New upstream release * Convert to source format 3.0 (quilt), no patches necessary yet -- Ari Pollak Sat, 21 Nov 2009 22:10:11 -0500 pidgin (2.6.3-1) unstable; urgency=medium * New upstream release - fixes a remote ICQ crash (CVE-2009-3615) - fix building on non-Linux architectures (Closes: #546024) -- Ari Pollak Fri, 16 Oct 2009 10:30:34 -0400 pidgin (2.6.2-1) unstable; urgency=medium * New upstream release - Fixes a crash in msn when handwriting message received (Closes: #544236) - Fixes reading GNOME proxy information (Closes: #543504) - Fixes a few remote crashes, so upload with urgency=medium -- Ari Pollak Sun, 06 Sep 2009 12:46:39 -0400 pidgin (2.6.1-2) unstable; urgency=low * Upload to unstable -- Ari Pollak Wed, 26 Aug 2009 20:40:39 -0400 pidgin (2.6.1-1) experimental; urgency=low * Put into experimental so we don't disturb 2.5.9's migration into testing * New upstream release (Closes: #542311) - Fixes hurd FTBFS (Closes: #530893) - Supports auto-join in XMPP (Closes: #462250) - Fixes some problems with international characters (Closes: #469829) - purple-* commandline utilities now pass return value from dbus-send (Closes: #504314) - Fixes lots of problems with XMPP new mail notifications (Closes: #505760) - Fixes crash when adding/removing MSN buddy (Closes: #531201) - Contact availability plugin ignores autoreplies (Closes: #459667) - Fixes some people not showing up when offline (Closes: #533314) * Use tcl-dev/tk-dev * Add Network Manager support back in since there's a -f commandline option to override it if it fails horribly (Closes: #534698) * Drop upstream README since it doesn't contain any useful information for end users -- Ari Pollak Thu, 20 Aug 2009 20:12:54 -0400 pidgin (2.5.9-1) unstable; urgency=high * New upstream release - Fixes MSN buffer overflow (CVE-2009-2964) * Change build-depends for libsilc-dev rename (Closes: #536150) -- Ari Pollak Sun, 16 Aug 2009 19:33:16 -0400 pidgin (2.5.8-1) unstable; urgency=high * New upstream version - Fixes a remote crash in ICQ (CVE-2009-1889) -- Ari Pollak Mon, 29 Jun 2009 20:26:35 -0400 pidgin (2.5.7-1) unstable; urgency=low * New upstream version - Fixes connecting to Yahoo (Closes: #533729) -- Ari Pollak Sat, 20 Jun 2009 23:27:48 -0400 pidgin (2.5.6-1) unstable; urgency=high * New upstream version - Fixes a bunch of security bugs: CVE-2009-1373, CVE-2009-1374, CVE-2009-1375, and CVE-2009-1376 - Fixes a crash in XMPP due to some XML parsing interactions (Closes: #519112) * Fix a missing comma in build-depends (Closes: #520888) -- Ari Pollak Thu, 21 May 2009 10:22:23 -0400 pidgin (2.5.5-1) unstable; urgency=low * New upstream version - Re-initialize preferences correctly in libpurple when called from third-party app (Closes: #508857) -- Ari Pollak Thu, 05 Mar 2009 08:49:31 -0500 pidgin (2.5.4-2) unstable; urgency=low * Upload to unstable -- Ari Pollak Sun, 15 Feb 2009 05:16:09 -0500 pidgin (2.5.4-1) experimental; urgency=low * New upstream version * Remove version-specific shlibdep generation, and add libgnt to libpurple0.symbols -- Ari Pollak Fri, 23 Jan 2009 23:34:53 -0500 pidgin (2.5.3-1) experimental; urgency=low * New upstream release - Tries to fix treating special characters as html entities (Closes: #502802) -- Ari Pollak Mon, 22 Dec 2008 00:10:18 -0500 pidgin (2.5.2-1) experimental; urgency=low * New upstream version - Should fix icon sizes (Closes: #497545) -- Ari Pollak Sun, 19 Oct 2008 14:01:06 -0400 pidgin (2.5.0-1) experimental; urgency=low * New upstream version (Closes: #496109) - Upload to experimental so we don't mess up unstable->lenny transitions - Fixes putting a BOM at the beginning of pasted text (Closes: #475146) - Adds support for MSNP14, which allows viewing of queued messages (Closes: #403006) - Now emits a signal for blocked messages (Closes: #427919) * Drop 00_debian-ca-certs.patch in favor of --with-system-ssl-certs, and build-depend on ca-certificates -- Ari Pollak Sun, 24 Aug 2008 16:59:00 -0400 pidgin (2.4.3-4) unstable; urgency=low * debian/patches/28_upnp_dos.patch: - Backport patch from upstream to fix a possible DoS in the UPnP code (CVE-2008-2957, doesn't competely fix #488632) -- Ari Pollak Mon, 24 Nov 2008 19:33:51 -0500 pidgin (2.4.3-3) unstable; urgency=low * debian/patches/26_nss-ciphers.patch: - Apply patch from upstream to add ciphers so we can connect to more SSL servers (Closes: #495523, #444789) * debian/patches/27_yahoo-ping.patch: - Apply patch from upstream to fix frequent disconnection from Yahoo (Closes: #499983) -- Ari Pollak Tue, 24 Sep 2008 20:48:03 -0400 pidgin (2.4.3-2) unstable; urgency=low * Apply patch from Miron Cuperman to fix path to CA certificates in 00_debian-ca-certs.path * debian/patches/25_ssl-nss.patch: - Apply patch from upstream to add SSL certificate checking to the NSS plugin, which we use (CVE-2008-3532) (Closes: #492434) -- Ari Pollak Thu, 21 Aug 2008 23:56:42 -0400 pidgin (2.4.3-1) unstable; urgency=high * New upstream release (Closes: #488930) - Fixes ICQ sign-on problems (Closes: #488852) - Fixes an MSN integer overflow security issue, CVE-2008-2927 (Closes: #488632). The other issues referenced by that bug report are questionably problematic, and they aren't that serious. * Remove -fstack-protector since it just makes pidgin crash on arm(el). (Closes: #469863) * Remove bashism in debian/rules (Closes: #484429) * Remove Network Manager support again since it's still buggy and doesn't actually tell the user what's going on (Closes: #484750) * debian/patches/16_yahoo_icon_crash.patch: - Drop patch, integrated upstream -- Ari Pollak Wed, 02 Jul 2008 10:44:14 -0400 pidgin (2.4.2-2) unstable; urgency=low * Fix broken Build-Depends line that was causing a lack of SILC support -- Ari Pollak Mon, 19 May 2008 20:58:04 -0400 pidgin (2.4.2-1) unstable; urgency=low * New upstream release * Enable NetworkManager support now that it doesn't add an extra dependency * Remove 11_reread-resolvconf.patch since we have NM support and it didn't apply cleanly anyway * Fix spelling error in dh_pidgin man page (Closes: #474681) * Apply modified patch from Adrien Cunin to move finch dependency on libx11-6 to a suggests, and add an entry in the description about it (Closes: #473997) * Update libpurple0.symbols for 2.4.0 -- Ari Pollak Sun, 18 May 2008 01:02:08 -0400 pidgin (2.4.1-1) unstable; urgency=low * New upstream release - Fixes crash in XMPP if network connection goes down after resume (Closes: #472057) -- Ari Pollak Tue, 01 Apr 2008 19:27:47 -0400 pidgin (2.4.0-2) unstable; urgency=low * Add finch.pc to finch-dev * debian/patches/22_zephyr-crash.patch: - Add patch from upstream to prevent crash in Zephyr when reading accounts.xml file (Closes: #470947) * debian/patches/23_empty-edit.patch: - Add patch from upstream to prevent an invisible edit box in message windows (Closes: #471365) * debian/patches/24_debian-gconf.patch: - Fix an earlier screwup where we set /pidgin/browsers/command in prefs.xml as a string when it should've been a path, so it was never recognized properly and prevented people from using a custom browser if they had run 2.3.1-1. (Closes: #472929) -- Ari Pollak Fri, 28 Mar 2008 20:39:43 -0400 pidgin (2.4.0-1) unstable; urgency=low * New upstream release * Install manpages into their appropriate packages, not pidgin-data (Closes: #459908) -- Ari Pollak Fri, 29 Feb 2008 21:52:50 -0500 pidgin (2.3.1-3) unstable; urgency=low * Seed libpurple0.symbols file * Build with -fstack-protector * Add ${perl:Depends} to libpurple0 and pidgin to get the proper perlapi versioning (Closes: #463143) * Fix syntax problem in pidgin manpage (Closes: #463021) -- Ari Pollak Sun, 24 Feb 2008 15:17:18 -0500 pidgin (2.3.1-2) unstable; urgency=low * Make libpurple0 shlibs slightly looser by making it >= MAJOR.MINOR.0 instead of >= VERSION. * Change browser command in /etc/purple/prefs.xml to be of type 'path' instead of 'string', to match what is set by pidgin. Thanks to Will Thompson for the fix. (Closes: #456441) * Fix FTBFS when doing a "make docs" by adding an appropriate $(top_srcdir) before the path to an included file. (Closes: #454549) -- Ari Pollak Sat, 15 Dec 2007 15:23:38 -0500 pidgin (2.3.1-1) unstable; urgency=low * New upstream release - Fixes problems logging into MSN (Closes: #454592) - Fixes MSN display name randomly changing (Closes: #454490) -- Ari Pollak Fri, 07 Dec 2007 20:33:46 -0500 pidgin (2.3.0-1) unstable; urgency=low * New upstream release - Fixes Jabber crash in non-UTF-8 locale (Closes: #436236) - Fixes problem entering password manually into Jabber (Closes: #446365) * 21_zephyr-external.patch - Apply patch from Klee Dienes to fix the Zephyr protocol when compiled against the system library, as we do (Closes: #451165) * Build the Contact Availability Prediction plugin, and make sqlite optional (Closes: #448096) * Remove 14_xulrunner_nss patch and bump build-depends for libnss3-dev (Closes: #450402) -- Ari Pollak Mon, 03 Dec 2007 14:47:48 -0400 pidgin (2.2.2-1) unstable; urgency=high * New upstream version - Fixes a possible crash when parsing invalid HTML (CVE-2007-4999) * 00_debian-ca-certs.patch: - Make the X.509 certificate authority code look in /etc/ssl/certs and make libpurple0 Recommend: ca-certificates. As far as I know this is not used in any protocols yet. * Fix dpkg-shlibdeps warning when trying to resolve plugin dependencies (by making an shlibs.local with empty libjabber and liboscar entries), since this will be a failure in the experimental version of dpkg -- Ari Pollak Wed, 24 Oct 2007 15:12:52 -0400 pidgin (2.2.1-1) unstable; urgency=high * New upstream release - Fixes remote DoS (crash) in the MSN protocol (CVE-2007-4996) - Fixes wrong file transfer size shown on MSN (Closes: #443447) * Remove circular dependencies on libpurple0/-bin (Closes: #444148) -- Ari Pollak Sat, 29 Sep 2007 19:23:43 -0400 pidgin (2.2.0-1) unstable; urgency=low * New upstream version - Fixes tabbed window preference (Closes: #440260) - Fixes crash in music messaging plugin when sending message to offline buddy (Closes: #441852) - Adds option to show protocol icons in buddy list (Closes: #432077) -- Ari Pollak Fri, 14 Sep 2007 10:43:21 -0400 pidgin (2.1.1-4) unstable; urgency=low * pidgin-dev and finch-dev should depend on libpurple-dev (Closes: #441191) -- Ari Pollak Fri, 07 Sep 2007 11:10:47 -0400 pidgin (2.1.1-3) unstable; urgency=low * Make finch conflict & replace old versions of gaim (closes: #440351) -- Ari Pollak Fri, 31 Aug 2007 15:15:07 -0400 pidgin (2.1.1-2) unstable; urgency=low [ Laurent Bigonville ] * Bump Standards-Version * Split finch out of the pidgin package (Closes: #428678) * Split libpurple out of the pidgin package (Closes: #421282) * Add override file to quiet lintian a bit * Remove symlinks for /usr/share/doc/pidgin{,-dev,-dbg} and really install them instead [ Ari Pollak ] * Move gconf schema into pidgin, so only pidgin needs to depend on gconf * Make dh_pidgin add a versioned misc:Conflict on the next major version of pidgin, in preparation for getting rid of the pidgin (<< 3.0) dependency, and adding dh_purple/dh_finch. -- Ari Pollak Fri, 24 Aug 2007 22:04:23 -0400 pidgin (2.1.1-1) unstable; urgency=low * New upstream version * Update new SVN repository information in debian/control * Install Finch's window managers correctly (Closes: #438536) -- Ari Pollak Mon, 20 Aug 2007 17:40:05 -0400 pidgin (2.1.0-1) unstable; urgency=low * New upstream version - Fixes a spelling mistake in MSN (Closes: #427170) - Fixes a tray icon scaling problem on vertical panels (Closes: #433909) -- Ari Pollak Mon, 30 Jul 2007 17:57:20 -0400 pidgin (2.0.2-2) unstable; urgency=low * Make package binNMU-safe (Closes: #430101) * Add Depends: python -- Ari Pollak Fri, 13 Jul 2007 14:55:15 -0400 pidgin (2.0.2-1) unstable; urgency=low * New upstream version (Closes: #429222) * Enable SILC support (Closes: #260420) * 21_purple-remote_syntax.patch: - Fix syntax error in purple-remote script (Closes: #429623) -- Ari Pollak Thu, 12 Jul 2007 10:37:09 -0400 pidgin (2.0.1-1) unstable; urgency=low * New upstream release - Should fix some buddy list synchronization crashes (Closes: #424062) * Fix gevolution dependency exclusion * Add appropriate Conflicts in addition to Replaces * Fix dh_pidgin warning due to current lack of package epoch -- Ari Pollak Mon, 21 May 2007 23:44:41 -0400 pidgin (2.0.0+dfsg.1-4) unstable; urgency=low * Remove bashism in debian/rules * Make pidgin-dev Replaces: gaim-dev (Closes: #422724) -- Ari Pollak Fri, 11 May 2007 18:42:08 -0400 pidgin (2.0.0+dfsg.1-3) unstable; urgency=low * Make pidgin-dbg Replaces: gaim-dbg (Closes: #422845) -- Ari Pollak Tue, 08 May 2007 11:42:49 -0400 pidgin (2.0.0+dfsg.1-2) unstable; urgency=low * Change pidgin-dev depends from glib to gtk (Closes: #422738) -- Ari Pollak Mon, 07 May 2007 21:09:45 -0400 pidgin (2.0.0+dfsg.1-1) unstable; urgency=low * New upstream release - The .orig.tar.gz source has been modified to remove the libpurple/protocols/irc/PROTOCOL file, which is non-DFSG-free. Pidgin 2.0.1 should have this file removed upstream. * Change name of package to pidgin (Closes: #418215) * 20_purple-remote_friendly.patch: - Make error messages friendlier when python-dbus is not installed or if someone calls purple-remote/purple-url-handler with --help or -h (Closes: #413204) * Update Debian menu icon * Update watch file * Update prefs.xml for new path to browsers * Loosen the dependency on pidgin-data slightly (Closes: #403582) * Add purple-remote manpage from Anibal Avelar (Closes: #412278) -- Ari Pollak Sat, 5 Apr 2007 18:13:41 -0400 gaim (1:2.0.0+beta6-2) experimental; urgency=low * 18_sametime-strip-html.patch: - Patch from David Everly to properly strip HTML entities in Sametime group chat (Closes: #410311) * Make gaim-dev an Arch: all package * Install gaim API docs into gaim-dev * Remove some extraneous Recommends/Suggests * Add rationale for the recommended/suggests packages in the gaim description * Conflict with gaim-librvp (<= 0.9.5-2) to prevent a crash when it's installed (Closes: #408861) * Conflict with gaim-encryption (<= 3.0~beta7-1) to prevent a crash -- Ari Pollak Mon, 29 Jan 2007 12:11:13 -0500 gaim (1:2.0.0+beta6-1) experimental; urgency=low * New upstream release * Add a Recommends: python-dbus (Closes: #404623) * Attempt to enable Cyrus SASL for Jabber again, since support should have been improved upstream * 17_statusbox_crash.patch: - Fix a common crash after upgrading from beta5 when setting status to Available -- Ari Pollak Sat, 27 Jan 2007 16:53:01 -0500 gaim (1:2.0.0+beta5-11) unstable; urgency=low * 20_sametime-strip-html.patch: - Patch from David Everly to properly strip HTML entities in Sametime group chat (Closes: #410311) -- Ari Pollak Fri, 9 Mar 2007 20:06:05 -0500 gaim (1:2.0.0+beta5-10) unstable; urgency=low * 18-jabber-roster-crash.patch: - Fix possible crash when aliasing a user on Jabber * 19_docklet_translation.patch: - Backport some translations of "Blink on new message" from beta6 (Closes: #409259) * Add a Recommends: python-dbus (Closes: #404623) -- Ari Pollak Sat, 3 Feb 2007 20:12:32 -0500 gaim (1:2.0.0+beta5-9) unstable; urgency=low * 15_file_save_name.patch: - Fill the default filename correctly when receiving a file * 16_yahoo_icon_crash.patch: - Try to fix a double-free when unable to receive a Yahoo user's buddy icon (Closes: #402345) * 17_upnp_crash.patch: - Fix a crash when receiving an invalid UPnP response -- Ari Pollak Sun, 17 Dec 2006 20:06:44 -0500 gaim (1:2.0.0+beta5-8) unstable; urgency=low * Remove dependency on libsasl2-modules * Turn off building with gnutls (Really Closes: #401567) * 13_yahoo_webauth_disable.patch: - When Yahoo auth fails, don't fall back to using the web interface since it's broken and only causes more bugs * 14_xulrunner_nss.patch: - Build against xulrunner-nss instead of mozilla-nss -- Ari Pollak Mon, 11 Dec 2006 13:12:42 -0500 gaim (1:2.0.0+beta5-7) unstable; urgency=medium * Add gaim-data dependency on ${misc:Depends} (Closes: #401845) * Use NSS instead of gnutls (Hopefully Closes: #401567) * Remove build-dep on libaudiofile-dev * 12_gstreamer-cleanup.patch: - Add patch to try cleaning up gstreamer support and hopefully fix a crash related to it. If this doesn't fix the crash, I blame gstreamer. (Closes: #397788, #399771) -- Ari Pollak Thu, 7 Dec 2006 15:16:48 -0500 gaim (1:2.0.0+beta5-6) unstable; urgency=low * Brown paper bag release. * Only install gconf schemas in gaim-data (Closes: #401642, #401628) -- Ari Pollak Mon, 4 Dec 2006 21:13:29 -0500 gaim (1:2.0.0+beta5-5) unstable; urgency=low * Er, really install /usr/bin/gaim-remote and gconf schemas * Really don't build with cyrus-SASL (Really Closes: #400002, 401295) -- Ari Pollak Mon, 4 Dec 2006 10:35:31 -0500 gaim (1:2.0.0+beta5-4) unstable; urgency=medium * Install /usr/bin/gaim-remote script * Install gconf schemas * Add Recommends: python * Don't build with Cyrus-SASL, support is too unstable (Closes: #400002, 401295) * 08_jabber-info-crash.patch: - Add patch from upstream to fix Jabber crash when getting info on someone with no resource name (Closes: #398399) * 10_text-arrow-keys.patch: - Add patch from upstream to fix arrow keys not working in gaim-text (Closes: #400496) * 11_reread-resolvconf.patch: - Add patch to re-read resolv.conf when connecting to a server (Closes: #394989) -- Ari Pollak Mon, 4 Dec 2006 00:09:32 -0500 gaim (1:2.0.0+beta5-3) unstable; urgency=low * Add libsasl2-modules to Depends; otherwise, connecting to some Jabber servers won't work. * Oops, forgot to apply part of the Buddy List memleak patch (Really closes: #398133) * 07_msn-custom-smiley-crash.patch: - Apply patch from upstream to prevent a crash when reading a malformed custom emoticon. -- Ari Pollak Tue, 21 Nov 2006 14:27:19 -0500 gaim (1:2.0.0+beta5-2) unstable; urgency=low * Build with LDFLAGS=-Wl,--as-needed * Build Jabber protocol with Cyrus SASL support * 04_blist-memleak.patch: - Add upstream fixes for some potential slow memory leaks due to a bug in GTK+ (Closes: #398133) * 05_url-handler-xmpp.patch: - Add upstream fix for crash on odd xmpp: URLs (Closes: #398969) * 06_jabber-registration-srv.patch: - Add patch from George-Cristian Bîrzan to query SRV record when registering on Jabber servers (Closes: #399230) -- Ari Pollak Sun, 19 Nov 2006 22:43:40 -0500 gaim (1:2.0.0+beta5-1) unstable; urgency=medium * New upstream release - Disables unused/obsolete GStreamer sinks (arts, and NAS) and falls back to a proper GStreamer sink more gracefully (Closes: #397160, #397321) - Fix an uninitialized pointer causing GStreamer crashes (Closes: #397788) - Normalizes improper UTF-8 before sending to DBus (Closes: #397593) - Fixes DNS lookup failure after changing networks (Closes: #394989) * Add Recommends: gstreamer0.10-plugins-base, gstreamer0.10-plugins-good, gstreamer0.10-alsa | gstreamer0.10-esd * Don't ship Release Notification plugin (Closes: #396998) * 03_gconf-gstreamer.patch: - Try getting gstreamer settings from gconf even if we're not running gnome -- Ari Pollak Sun, 5 Nov 2006 17:36:26 -0500 gaim (1:2.0.0+beta4-4) unstable; urgency=medium * 06_irc-signal-crash.patch: - Add patch to work around crash on receiving non-ASCII characters in IRC by not emitting the new "irc-receiving-text" signal; the text from the server needs to be normalized into proper UTF-8 before sending it to dbus. (Closes: #394555, #395520) * 07_delete-account-crash.patch: - Add patch to fix crashies when deleting an Enabled account and then either exiting or setting the status to Available. -- Ari Pollak Sat, 4 Nov 2006 11:01:15 -0500 gaim (1:2.0.0+beta4-3) unstable; urgency=low * 05_gaimgtklogviewer.patch: - Revert upstream privatization of GaimGtkLogViewer, which is needed for attaching to the "log-displaying" signal. -- Ari Pollak Sun, 22 Oct 2006 18:34:50 -0400 gaim (1:2.0.0+beta4-2) unstable; urgency=low * Build against libgadu properly (Closes: #394303) * Make libgadu a Suggests instead of a Depends * 04_ansi-comments.patch: - Fix C++-style comments in gtkgaim.h to allow compilation of plugins with -ansi -- Ari Pollak Sun, 22 Oct 2006 12:34:05 -0400 gaim (1:2.0.0+beta4-1) unstable; urgency=low * New upstream release - This includes a new gaim-text binary; it + libgaim will probably be split out into a separate package soon, but for now I just wanted to get beta4 out there. - Large log files should now behave better in the log viewer (Closes: #341607) - The text replacement plugin should work properly when text is surrounded by punctuation (Closes: #277147) - Buddy pounce should now have an event for receiving a message (Closes: #277727) - Should fix aliases with strange encodings (Closes: #391798) * Add debian/patches/02_gnthistory-in-gtk.patch: - Don't load GntHistory plugin in gtk gaim * Remove bashisms from postinst scripts * Move libmeanwhile1 from Depends to Suggests -- Ari Pollak Wed, 18 Oct 2006 17:30:20 -0400 gaim (1:2.0.0+beta3.1-5) unstable; urgency=low * Update version on evolution-data-server Suggests * Update version on Conflicts/Replaces: gaim-meanwhile -- Ari Pollak Sun, 8 Oct 2006 18:29:17 -0400 gaim (1:2.0.0+beta3.1-4) unstable; urgency=medium * debian/patches/06_varargs-fix2.patch - Add second varargs patch to fix another FTBFS on alpha -- Ari Pollak Thu, 28 Sep 2006 16:31:34 -0400 gaim (1:2.0.0+beta3.1-3) unstable; urgency=medium * debian/patches/05_varargs-fix.patch: - Add fix for alpha FTBFS * Add Conflicts and Replaces: gaim-dev (<< 1:2.0.0+beta3.1-2) on gaim-data, since we moved a file from gaim-dev to gaim-data. -- Ari Pollak Thu, 28 Sep 2006 11:26:02 -0400 gaim (1:2.0.0+beta3.1-2) unstable; urgency=low * First upload of 2.0 branch to unstable * Move the example .py files to /usr/share/doc/gimp-data/examples/ (Closes: #386632) * Re-add link from /usr/share/doc/gaim-dbg to gaim-data * Move ChangeLog.API from gaim-dev to gaim-data since it could be useful for gaim scripts, not just C plugins * debian/patches/02_oscar-sendfile.patch: - Add upstream fix for a bug where the Send File option wasn't enabled in an AIM/ICQ conversaion for someone that isn't in your buddy list * debian/patches/03_novell-fix-1.patch, debian/patches/04_novell-fix-2.patch: - Add patches from upstream post-beta3.1 to fix some connection problems with Novell protocol -- Ari Pollak Mon, 25 Sep 2006 22:12:53 -0400 gaim (1:2.0.0+beta3.1-1) experimental; urgency=low * New upstream release * Suggest dbus-1-utils instead of dbus * Change build-depends on libgnutls11-dev to libgnutls-dev (Closes: #335764) * Move gaim.desktop and the dbus entry to the gaim package instead of gaim-data, and make gaim-data Recommends: gaim (Closes: #313222) * Move /usr/share/aclocal/gaim.m4 to gaim-dev * Remove link to /usr/share/doc/gaim-data from gaim-dbg since gaim-data may not be installed -- Ari Pollak Sun, 20 Aug 2006 22:31:24 -0400 gaim (1:2.0.0+beta3-4) experimental; urgency=low * Somehow I forgot to add libavahi-compat-howl-dev to the build-depends, so do that. -- Ari Pollak Thu, 6 Apr 2006 18:34:29 -0400 gaim (1:2.0.0+beta3-3) experimental; urgency=low * Add build-depends on libgadu-dev >= 1.6+20060215-1 since the gaim plugin now builds from the system library (Closes: #360280) * Add build-depends on libxml-parser-perl to fix FTBFS (Closes: #360955) -- Ari Pollak Wed, 5 Apr 2006 17:31:52 -0400 gaim (1:2.0.0+beta3-1) experimental; urgency=low * New upstream release - There is no more Away window, so "Away box should be toplevel" no longer applies (Closes: #226280) - Auto-away should be fixed with multiple accounts (Closes: #302686) - Contact lists should no longer be lost if you run out of disk space (Closes: #303922) - Only display the font names in the preferences font selector dialog, without the font size (Closes: #270529) - Active/Away status is now integrated into the Buddy List and has multiple account status (Closes: #240300, #290590, #223839) - Play sounds even when queueing new messages to the system tray (Closes: #242516, #272332) - Don't segfault when running "gaim -l" when no preferences file exists (Closes: #326852) - Queued messages should now be saved to the logs as soon as they are received (Closes: #255117) - You should now be able to set your browser manually even if you're using GNOME (Closes: #281381) - Reconnecting should no longer pop up a new dialog (Closes: #347451) - Log viewer now aggregates logs from the same "person" (Closes: #213438) - There is now an included Gtk RC plugin that allows you to change font sizes via a GUI (Closes: #275640) - Auto-reconnect is now in the core and should no longer cause crashes (Closes: #355645) * Move back to straight cdbs build system, not tarball-in-tarball. * Build-Depend on cdbs >= 0.4.37 since it automatically handles -dbg package * Make /usr/share/doc/gaim-dbg a link to gaim-data * Add libmeanwhile-dev, libavahi-compat-howl-dev, libdbus-glib-1-dev, dbus, and python2.4 (to generate dbus schemas) to Build-Depends * Conflict & Replace old gaim-meanwhile package, since we now provide the meanwhile/sametime plugin. * Re-enable perl plugin support, since it's been mostly fixed upstream (Closes: #288851) * debian/patches/{irc-ssl, logging-compatibility, privacy-crash}.patch: - Removed, obsoleted by new upstream version -- Ari Pollak Mon, 27 Mar 2006 14:25:21 -0500 gaim (1:1.5.0+1.5.1cvs20051015-6) unstable; urgency=low * debian/patches/07_msncrashfix.patch: - Backport patch from upstream trunk to handle base16/64 encoding more gracefully, which should hopefully fix an MSN crasher (Closes: #383731) -- Ari Pollak Thu, 24 Aug 2006 22:05:20 -0400 gaim (1:1.5.0+1.5.1cvs20051015-5) unstable; urgency=low * Change build-depends on libgnutls11-dev to libgnutls-dev (Closes: #335764) -- Ari Pollak Sun, 25 Jun 2006 11:18:54 -0400 gaim (1:1.5.0+1.5.1cvs20051015-4) unstable; urgency=low * Number patches so that they're in a reliable order * Bump Standards-Version to 3.7.2; no changes necessary * debian/patches/05_es.po-update.patch: - Add updated Spanish translation from Javier Fernández-Sanguino Peña * debian/patches/06_disable-icq-webaware.patch: - Steal patch from Ubuntu/upstream to disable the webaware feature to drastically reduce AIM & ICQ spam (Closes: #360063, #369234) -- Ari Pollak Sun, 28 May 2006 12:16:34 -0400 gaim (1:1.5.0+1.5.1cvs20051015-3) unstable; urgency=low * debian/patches/privacy-crash.patch: - Add patch from upstream CVS to fix crash when removing a user from the block list (Closes: #357285) -- Ari Pollak Fri, 17 Mar 2006 13:26:33 -0500 gaim (1:1.5.0+1.5.1cvs20051015-2) unstable; urgency=low * debian/patches/logging-compatibility.patch: - Add patch from upstream to make the log browser forwards-compatible with the new log filenames in gaim 2.0 * debian/patches/irc-ssl.patch: - Add patch to enable IRC over SSL (Closes: #343553) * debian/README.Debian.dev: - Correct typo in suggested plugin package name (Closes: #351760) * debian/control: - Upgrade debhelper to 5.0 - Add gaim-dbg package * debian/compat: - Upgrade debhelper compat version to 5 * debian/rules: - Add gaim-dbg package -- Ari Pollak Thu, 9 Feb 2006 14:56:25 -0500 gaim (1:1.5.0+1.5.1cvs20051015-1) unstable; urgency=low * New upstream CVS snapshot of the oldstatus branch - Should fix a yahoo login crash (Closes: #323499) - Adds a fix for a recent OSCAR rate-limiting problem - Adds support for OSCAR file transfers behind NAT through proxy servers (Closes: #267180) -- Ari Pollak Sat, 15 Oct 2005 16:20:06 -0400 gaim (1:1.5.0-1) unstable; urgency=low * New upstream release - IRC quit message is now configurable (Closes: #261317) * Remove patches introduced in 1.4.0 revisions as they are now in upstream. -- Ari Pollak Fri, 12 Aug 2005 08:04:38 -0400 gaim (1:1.4.0-5) unstable; urgency=high * This release fixes three remotely-exploitable security issues. These will be fixed in 1.5.0, but I'm adding the patches now so I don't have to rush to package 1.5.0 when it comes out. * debian/patches/away-message-CAN-2005-2103.patch: - Added - Fixes CAN-2005-2103: Away message buffer overflow (arbitrary code execution) * debian/patches/libgg-CAN-2005-2370.patch: - Added - Fixes CAN-2005-2370: Memory alignment bug in libgadu * debian/patches/oscar-CAN-2005-2102.patch: - Added - Fixes CAN-2005-2102: OSCAR UTF-8 filename remote crash * debian/control: - Remove version from libgtkspell-dev build-depends, since the aspell C++ transition was reverted. -- Ari Pollak Wed, 10 Aug 2005 11:49:26 -0400 gaim (1:1.4.0-4) unstable; urgency=low * Apparently the second OSCAR patch from upstream wasn't getting applied properly. Apply it properly, hopefully this should fix the remaining OSCAR sign-on problem. (Closes: #321071, #321726) -- Ari Pollak Sun, 7 Aug 2005 15:03:22 -0400 gaim (1:1.4.0-3) unstable; urgency=low * Build-depend on libxss-dev so X idle time support will actually get built * Remove build-depends on autotools-dev since it is no longer necessary * Change Suggests: evolution-data-server1.2 to evolution-data-server -- Ari Pollak Thu, 21 Jul 2005 06:59:18 -0400 gaim (1:1.4.0-2) unstable; urgency=low * Apply patch from upstream CVS to fix a crash when connecting to certain AIM/ICQ accounts * Bump build-depends to gtkspell >= 2.0.10-3, which now depends on libaspell15c2 for the C++ ABI transition -- Ari Pollak Sat, 9 Jul 2005 20:02:34 -0400 gaim (1:1.4.0-1) unstable; urgency=low * New upstream version. -- Ari Pollak Fri, 8 Jul 2005 09:10:21 -0400 gaim (1:1.3.1-2) unstable; urgency=low * Argh, this shouldn't be a native package. Correctly include .orig.tar.gz and .diff.gz in upload. (Closes: #314321) -- Ari Pollak Wed, 15 Jun 2005 17:22:02 -0400 gaim (1:1.3.1-1) unstable; urgency=medium * New upstream version. Fixes two remote DoS/crash security bugs, CAN-2005-1934 and CAN-2005-1269. -- Ari Pollak Fri, 10 Jun 2005 12:19:14 -0400 gaim (1:1.3.0-2) unstable; urgency=low * debian/control: - Update build-dependencies and Suggests to evolution-data-server1.2 (Closes: #311663) -- Ari Pollak Thu, 2 Jun 2005 15:11:36 -0400 gaim (1:1.3.0-1) unstable; urgency=high * New upstream version. Fixes two remote DoS/overflow security bugs, CAN-2005-1262 and CAN-2005-1261. -- Ari Pollak Wed, 11 May 2005 09:44:03 -0400 gaim (1:1.2.1-1) unstable; urgency=medium * New upstream version. Fixes IRC escaping remote DOS problems, hence medium priority. * debian/patches/icq-auth2.patch: - removed, upstream backed the changes out themselves in this release -- Robert McQueen Mon, 4 Apr 2005 04:36:38 +0100 gaim (1:1.2.0-3) unstable; urgency=high * debian/patches/icq-auth.patch: - removed, it doesn't actually fix the problem :( * debian/patches/icq-auth2.patch: - new patch to revert to the (arguably less secure, but fully functional) ICQ authentication code from 1.1.4, arguably an RC bug so upload with urgency=high if sarge is about to freeze (really closes: #301072) -- Robert McQueen Fri, 1 Apr 2005 15:17:19 +0100 gaim (1:1.2.0-2) unstable; urgency=low * debian/patches/icq-auth.patch: - Apply patch from upstream CVS which should fix ICQ authentication problems with passwords greater than 8 characters. (Closes: #301072) -- Ari Pollak Thu, 24 Mar 2005 11:11:49 -0500 gaim (1:1.2.0-1) unstable; urgency=medium * New upstream version. * Put better symlink-creating logic in postinst (Closes: #298467) - this is an RC bug, so upload with urgency=medium -- Ari Pollak Mon, 21 Mar 2005 15:57:35 -0500 gaim (1:1.1.4-2) unstable; urgency=low * New revision to fix incorrect build on x86 (and my bad attempt at a binary NMU) -- Ari Pollak Tue, 1 Mar 2005 03:51:14 -0500 gaim (1:1.1.4-1) unstable; urgency=low * New upstream version. - fixes embarrasingly similar HTML crash exploit (CAN-2005-0208) - fixes g_stat crashes by enabling large file support in Gaim, to match glib's compile-time settings - fixes MSN crashes introduced in 1.1.3 * Added CVE numbers for exploits fixed in 1.1.3 (CAN-2005-0472 and CAN-2005-0473) to changelog. * debian/patches/00g_stat_brokenness.patch: - removed * debian/control: - added dependencies on pkg-config and libglib2.0-dev to gaim-dev, but not on libgtk2.0-dev (it's perfectly possible to build Gaim plugins that either have no UI code, or interact with the user via Gaim's interface for doing so) (actually closes: #292728) * debian/dh_gaim: - apply patch to make resulting gaim dependencies less strict (closes: #296512) -- Robert McQueen Fri, 25 Feb 2005 12:28:57 +0000 gaim (1:1.1.3-3) unstable; urgency=low * Well, I feel dumb. I didn't actually make any changes in -2. Really do it this time. -- Ari Pollak Mon, 21 Feb 2005 22:22:15 -0500 gaim (1:1.1.3-2) unstable; urgency=medium * Move g_stat() calls back to stat() as a workaround for brokenness due to large file support in glib but not Gaim (closes: #295904) -- Ari Pollak Mon, 21 Feb 2005 21:31:51 -0500 gaim (1:1.1.3-1) unstable; urgency=high * New upstream version. - security: fixes DoS bug and HTML parsing problems, so urgency=high (CAN-2005-0472 and CAN-2005-0473 respectively) - adds update for pt_BR translation (closes: #292549) - adds HTTP proxy support for MSN (closes: #215810) -- Ari Pollak Thu, 17 Feb 2005 22:41:07 -0500 gaim (1:1.1.2-3) unstable; urgency=low * debian/control: - make gaim-dev depend on pkg-config and libglib2.0-dev (closes: #292728) -- Ari Pollak Wed, 2 Feb 2005 19:56:36 -0500 gaim (1:1.1.2-2) unstable; urgency=low * debian/gaim.postinst: - add script to rmdir /usr/share/doc/gaim if it isn't a symlink, and replace it with the gaim -> gaim-data symlink, on the basis that dpkg doesn't replace directories with symlinks or vice versa (closes: #291827) -- Robert McQueen Sun, 23 Jan 2005 14:45:08 +0000 gaim (1:1.1.2-1) unstable; urgency=low * Upload the formerly experimental packages with gaim/gaim-data/gaim-dev to unstable, given that 1.1.1 is in sarge * New upstream version. - fixes failure to hide Jabber and Yahoo messages in the System Tray Icon, when enabled (closes: #259790) * debian/control: - the conflicts/replaces of gaim-data on gaim that Ari added went missing between 1.1.1-3 and 1.1.1-4... I added the replaces but conflicting with old gaim packages prevents upgrades (see policy 7.3) due to never unpacking conflicting packages side-by-side -- Robert McQueen Fri, 21 Jan 2005 18:26:10 +0000 gaim (1:1.1.1-4) experimental; urgency=low * debian/control: - put gaim-dev into section devel -- Ari Pollak Tue, 11 Jan 2005 10:54:27 -0500 gaim (1:1.1.1-3) experimental; urgency=low * debian/control: - gaim-data conflicts/replaces earlier versions of gaim (closes: #289873) -- Ari Pollak Tue, 11 Jan 2005 10:32:56 -0500 gaim (1:1.1.1-2) experimental; urgency=low * New upstream version in this experimental branch. Contains the same changes made between 1.1.0-1 and 1.1.1-1 in unstable, included below for reference. Further thanks due here to Ari for doing all the legwork with this split into gaim{,-data,-dev}, making packages smaller and allowing plugin packages to be built, and to Tollef Fog Heen for his dh_gaim script. * debian/TODO.Debian: - rename to gaim-dev.TODO so dh_installdocs automatically includes it in the right place * debian/control: - replace suggests of evolution with evolution-data-server - make gaim-dev depend on gaim-data because of /usr/share/doc symlink - tweak descriptions * debian/rules: - explicitly disabled silc support until #273871 progresses - install changelogs and documentation in the gaim-data package only, and make gaim and gaim-dev symlink to it (allowed by policy as they both depend on gaim-data) - instruct dh_installman to install dh_gaim's manpage - run dh_installdocs manually for gaim-dev to install only the files we need on top of those in gaim-data - don't bother removing /usr/lib/gaim/*.la files - they are not installed any more * debian/gaim.install: - install only /usr/lib/gaim/*.so files - don't try and install the perl5 directory any longer * debian/gaim.preinst: - moved aside to gaim.preinst.old because we no longer need to remove /usr/share/doc/gaim if it is a symlink - it is once more a symlink * debian/gaim-dev.install: - don't install /usr/lib/gaim/*.la files * debian/gaim-dev.manpages: - removed in favour of variable in debian/rules -- Robert McQueen Tue, 4 Jan 2005 18:59:50 +0000 gaim (1:1.1.1-1) unstable; urgency=low * New upstream version. Massive thanks to Ari for all his help with the previous releases. * debian/patches/libtoolize.patch, debian/relibtoolize: - removed, should no longer be necessary now Debian's architectures are supported by upstream libtool * debian/rules: - disable perl support for now, its bitrotted enough to be nearly useless, and is slated for removal in 2.0 unless anyone fixes it * debian/control: - remove build dependency on automake1.8 because we no longer touch any of the generated files - remove perl build dependencies and substvars entries -- Robert McQueen Mon, 3 Jan 2005 23:30:47 +0000 gaim (1:1.1.0-3) experimental; urgency=low * Whoops, don't include 1.0.3 tarball in the .orig.tar.gz. * Upload to experimental for now * debian/control: - Update gaim package description to be more current about GNOME (closes: #265269) -- Ari Pollak Thu, 9 Dec 2004 22:44:08 -0500 gaim (1:1.1.0-2) experimental; urgency=low * debian/control: - added libxml2-dev, libebook-dev, and libedata-book-dev to build-deps for gevolution plugin (closes: #274030) - added evolution to Suggests field for people who want to use gevolution - added new gaim-dev and gaim-data packages, which split out the development headers & libraries and architecture-independent data. (closes: #233350, #162653, #234853, #267682, #274023) * debian/gaim-dev.install: - added development files * debian/gaim-dev.manpages: - added debian/dh_gaim.1, generated in debian/rules * debian/gaim-data.install: - added architecture-independent files * debian/gaim.install: - move existing prefs.xml and gaim-menu.xpm into gaim-data.install - added the rest of the files that weren't included in -dev or -data * debian/README.Debian.dev: - added README for Debian developers to explain how gaim plugins should be packaged. * debian/rules: - added dependency excludes for /usr/lib/gaim/gevolution.so, since we added Suggests for that manually. - clean up binary-post-install override to not remove the development files, since we put them in gaim-dev now. - added build/gaim-dev override to generate man page for dh_gaim, and added cleanbuilddir/gaim-dev override to clean it up. * debian/dh_gaim - added, thanks to Tollef Fog Heen for writing this. -- Ari Pollak Thu, 9 Dec 2004 12:30:00 -0500 gaim (1:1.1.0-1) unstable; urgency=low * New upstream version. (closes: #284193) - Fixes MSN switchboard errors (closes: #284406) -- Ari Pollak Mon, 6 Dec 2004 10:27:25 -0500 gaim (1:1.0.3-1) unstable; urgency=low * New upstream version. - fixes Jabber authentication issues (closes: #266632, #218994) - fixes crash when dragging a buddy onto a convo window (closes: #277208) -- Ari Pollak Fri, 12 Nov 2004 11:05:39 -0500 gaim (1:1.0.2-1) unstable; urgency=high * New upstream version, fixes a security hole in MSN. * debian/control: - Add bzip2 to build-deps since the included tarball is now in bz2 format -- Ari Pollak Wed, 20 Oct 2004 10:45:55 -0400 gaim (1:1.0.1-2) unstable; urgency=low * Oops, this shouldn't be a native Debian package. Properly split out the original tarball and the debian directory. (closes: #276298) -- Ari Pollak Wed, 13 Oct 2004 10:10:09 -0400 gaim (1:1.0.1-1) unstable; urgency=low * New upstream version. * debian/rules: - move to a tarball-within-a-tarball build system. * debian/control: - add build-dep for automake1.8 * debian/gaim.docs: - removed, replaced by cdbs variable in debian/rules -- Ari Pollak Tue, 12 Oct 2004 12:26:39 -0400 gaim (1:1.0.0-1) unstable; urgency=medium * New upstream version (in Robot101's absence) - urgency medium because it fixes some regressions in 0.82.1 - should fix encoding problems (closes: #269646, #270490) * debian/patches/libtoolize.patch: - updated -- Ari Pollak Sat, 18 Sep 2004 01:20:32 -0400 gaim (1:0.82.1-1) unstable; urgency=high * New upstream version. Fixes known security issues CAN-2004-0754 and CAN-2004-0785, and includes several important bug fixes. (closes: #268783) * debian/patches/allow-blist-shrink.patch: - removed, I'm trusting upstream on this one :) * debian/patches/libtoolize.patch: - updated * debian/patches/msn-fixes-CAN-2004-0500.patch: - removed, included upstream -- Robert McQueen Sun, 29 Aug 2004 22:19:07 +0100 gaim (1:0.81-3) unstable; urgency=high * debian/patches/cvs-msn-slp-overflow.patch: - removed, because upstream only fixed half the problem... * debian/patches/msn-fixes-CAN-2004-0500.patch: - patch from SUSE to fix CAN-2004-0500 * debian/patches/cvs-gtkblist-size-request.patch: - removed, because despite upstream's insistence... * debian/patches/allow-blist-shrink.patch: - this is the required change to stop the buddy list from appearing wider than its saved width -- Robert McQueen Fri, 13 Aug 2004 10:54:10 +0100 gaim (1:0.81-2) unstable; urgency=medium * debian/control: - raise libgnutls11 build-dep to >= 1.0.16-5 to ensure correct libtasn version is installed (closes: #264455) * debian/patches/cvs-gtkblist-size-request.patch: - fix from CVS to stop the buddy list making itself over 200 pixels wide all the time * debian/patches/cvs-msn-slp-overflow.patch: - fix potential overflow in MSN's slp code -- Robert McQueen Thu, 12 Aug 2004 01:00:28 +0100 gaim (1:0.81-1) unstable; urgency=low * New upstream version. (closes: #264180) * debian/control: - switch to gnutls11 instead of deprecated 10 (closes: #263637) * debian/relibtoolize: - include the script I'm using to generate the following patches - it needs adjustment to be robust to aclocal.m4 changes * debian/patches/cvs-irc-ison-lessflood.patch: - removed * debian/patches/libtoolize.patch: - updated -- Robert McQueen Sun, 8 Aug 2004 15:04:06 +0100 gaim (1:0.80-3) unstable; urgency=low * debian/patches/libtoolize.patch: - not only was the patch turned out by my script complete garbage even on my system, it had the added bonus property that it only worked if you were building gaim in /home/robot101/debian/0.80/gaim-0.80 - this patch should apply with -p1 because the cdbs patch thing doesn't try -p5 for some reason... :P (actually closes: #260070) -- Robert McQueen Sun, 18 Jul 2004 21:25:27 +0100 gaim (1:0.80-2) unstable; urgency=low * debian/patches/libtoolize.patch: - replace spectacularly broken patch with one that actually applies - I can't actually work out how this ever appeared to work on my system in the first place (closes: #260070) -- Robert McQueen Sun, 18 Jul 2004 20:15:45 +0100 gaim (1:0.80-1) unstable; urgency=low * New upstream version. (closes: #259891) * debian/patches/cvs-buddyicon.patch: - removed * debian/patches/cvs-irc-ison-lessflood.patch: - patch from CVS to avoid flooding yourself off with large numbers of ISON requests on IRC (closes: #259010) * debian/patches/libtoolize.patch: - updated * debian/control: - lintian fix - make build-depends into a single line * debian/gaim.menu: - lintian fix - added quotes around X11 in needs field * debian/rules: - until I make a gaim-dev package (shortly - I didn't want to hold up the new upstream version by sending Gaim to queue/NEW) don't ship gaim.pc because it's confusing if stuff configures but doesn't build -- Robert McQueen Sat, 17 Jul 2004 18:15:54 +0100 gaim (1:0.79-2) unstable; urgency=low * debian/control: - update libgnutls7-dev build-depend to libgnutls10-dev to help kill off libgnutls7 (closes: #256428) -- Robert McQueen Sun, 27 Jun 2004 12:29:06 +0100 gaim (1:0.79-1) unstable; urgency=low * New upstream version. Doubtlessly closes many bugs, including the repeatedly reported fact that this new version (and the one before) exist. Sorry, I was busy. I'll look through the bugs soon, but currently I think people would just appreciate the package. :) * debian/patches/cvs-buddyicon.patch: - patch from CVS to fix buddy icon snafu * debian/patches/libtoolize.patch: - updated -- Robert McQueen Sat, 26 Jun 2004 19:05:01 +0100 gaim (1:0.77-1) unstable; urgency=low * New upstream version. (closes: #245446) - finally repairs MSN error reporting (closes: #195475) - optionally mute sounds when the conversation is focussed (thanks to Stu Tomlinson for implementing this) (closes: #140289) * debian/patches/browser-default.patch: - removed * debian/patches/libtoolize.patch: - updated * debian/prefs.xml: - ship new default prefs.xml to use sensible-browser and have the docklet loaded initially * debian/gaim.install: - install prefs.xml into /etc/gaim -- Robert McQueen Sat, 24 Apr 2004 16:18:33 +0100 gaim (1:0.76-1) unstable; urgency=low * New upstream version. (closes: #241968, #242431) - this version builds the zephyr plugin against an external libzephyr, allowing kerberos support and closing a long standing wishlist bug, making zephyr actually useful (closes: #152034) - adds a "Network" preferences pane to choose incoming port ranges (closes: #133850) - adds the choice of "Gnome Default" to the browser choices, I also made Debian's /usr/bin/sensible-browser the default (see below) (closes: #210744) - fixes saving of modified account prefs (closes: #229511, #231249) - Yahoo! works again (closes: #231440, #236744) - shouldn't clobber existing prefs/blist files if disk is full (closes: #234790) - Perl plugin loading fixed (closes: #229457) * debian/patches/browser-default.patch: - set the default browser to Debian's sensible-browser (only affects new users) * debian/patches/buffer-overflows.patch: - removed on the basis that all the problems are fixed in this release, although I plan to audit the patch to confirm this * debian/patches/libtoolize.patch: - regenerated for this version * debian/control: - added libzephyr-dev to build-depends * debian/rules: - build against external libzephyr - make dh_shlibdeps consider libzephyr.so for suggests only -- Robert McQueen Wed, 7 Apr 2004 03:34:57 +0100 gaim (1:0.75-3) unstable; urgency=high * Minor tweak to the security patch to fix an infinite loop. High urgency because I meant to fix this before 0.75-2 reached testing, but didn't. I'm going on holiday for a week, so if 0.76 comes out, be patient. -- Robert McQueen Wed, 24 Mar 2004 02:56:48 +0000 gaim (1:0.75-2) unstable; urgency=medium * Security update to fix 12 possible buffer overflow attacks. Details are at http://security.e-matters.de/advisories/012004.html. * debian/patches/buffer-overflows.patch: - patch from RedHat's RHSA-2004:032-04 advisory to fix CAN-2004-0006/7/8, thanks to RedHat for this patch, Jacques A. Vidrine for the initial patch, and Stefan Esser for finding the original problems (closes: #229843) -- Robert McQueen Tue, 27 Jan 2004 16:06:39 +0000 gaim (1:0.75-1) unstable; urgency=low * New upstream version: - restores Ctrl+PgUp/PgDn tab switching (closes: #226674, #226795) * debian/patches/libtoolize.patch: - regenerated because for some reason, make dist doesn't work for upstream on sid at the moment * debian/control: - add build depend on xutils because configure uses imake to find the X include directory - this makes Gaim link to the X ScreenSaver and session management libs reliably (thanks to Ryan Murray) (closes: #226227) -- Robert McQueen Sat, 10 Jan 2004 12:02:40 +0000 gaim (1:0.74+0.75cvs20040104-1) unstable; urgency=low * CVS snapshot. 0.74 had problems with leaking and some other stuff that annoyed me, so I put off packaging it as long as possible. Turns out CVS was just made usable now in preparation for a release, so I'm just packaging it instead: - typo fix in README was fixed in CVS (closes: #220999) - this can be taken to provide 0.74 (closes: #223931) * debian/patches/00-libtoolize.patch: - deleted, not necessary because I ran "make dist" on a Debian box * debian/patches/gtkspell-locale2.patch: - deleted, in favour of... * debian/patches/gtkspell-locale3.patch: - now very small because I had "cleanups" merged to CVS ;) * debian/control: - change tcl8.3-dev and tk8.3-dev build deps to 8.4, upstream works with 8.4 now - add tcl8.3-dev and tk8.3-dev build conflicts * debian/copyright: - update to point at new COPYRIGHT file * debian/gaim.README.Debian: - deleted, had nothing to say really * debian/gaim.docs: - add new upstream COPYRIGHT file -- Robert McQueen Mon, 5 Jan 2004 03:30:17 +0000 gaim (1:0.72-1) unstable; urgency=low * New upstream version. Sorry I missed 0.71, been busy. Some nice bug fixes and tweaks in these two versions: - now possible to override your username on IRC (closes: #196265) - rewritten Jabber plugin with XMPP support, bugs in old code evaporate (closes: #199345, #217326) - various bugfixes to SSL code (closes: #214798) - fixes ICQ signon crashes (closes: #217851, #217856, #218496) * debian/patches/00-libtoolize.patch: - updated for new version (I should make a script for this...) * debian/patches/cvs-yahoo-{endian,tweak}.patch: - deleted, included in this release * debian/patches/gtkspell-locale.patch: - deleted, was broken ("C" is not a language and has no dictionary) * debian/patches/gtkspell-locale2.patch: - reworked version which should set the dictionary consistently and only when the locale has actually been set (closes: #213937, #215811) * debian/control: - added build depend for libstartup-notification0-dev - added ${shlibs:Suggests} to the suggests field - removed conflicts/replaces for the short-lived (never officially released) libgaim-remote packages * debian/rules: - gentle fudge to stop dh_makeshlibs from acting on the plugins, some of which cause it to false-positives (see #205142) - gentle shlibdeps fudge to downgrade tcl and tk to suggests (closes: #213409) -- Robert McQueen Sat, 1 Nov 2003 19:01:25 +0000 gaim (1:0.70-2) unstable; urgency=low * debian/patches/cvs-yahoo-endian.patch: - memcpy(&some_char[], &some_int, sizeof(int)) is not portable, mmkay? here's my patch [from CVS] (thanks Matthew Wilcox) -- Robert McQueen Mon, 29 Sep 2003 13:31:37 +0100 gaim (1:0.70-1) unstable; urgency=low * New upstream version. Skipped 0.69 because it was shunned upstream due to not actually fixing the Yahoo! problem, and installed Perl all wrong. Since 0.68 we've added Contact support, Tcl plugins, SSL for Jabber and the new MSN plugin, and fixed the Yahoo! connection problems. Also, I'm experimenting with a new changelog format. - pays attention to the challenge type that Yahoo! sends us, and presents an error on unknown types (closes: #212941) - supports the new Yahoo! challenge type (one of them, anyway) (closes: #212749) - supports the new MSN protocol (closes: #207745) * debian/patches/00-libtoolize.patch: - reran libtoolize with the Debian version of libtool, so that Perl support works on arm, m68k and friends (thanks Keybuk) * debian/patches/cvs-yahoo-tweak.patch: - tweak to Yahoo! authentication code [from CVS] * debian/patches/gtkspell-locale.patch: - sets the GtkSpell dictionary according to the current locale. Not merged upstream because blah blah Windows aspell blah blah, but I don't really care. Sigh. (closes: #202009) * debian/control: - standards version 3.6.1 - dropped build conflicts in light of --disable-nss working properly now (I submitted a patch just before 0.69) - added versioned build-depend on libperl-dev >= 5.8.1, because DESTDIR just decided to start working in MakeMaker, and I don't see how to consistently support builds both with and without that functionality without grossly hacking the build system - change Tcl build-depend to tcl8.3-dev, which is all it supports at the moment, and add tk8.3-dev for Tk support - added ${perl:Depends} to depends * debian/gaim.docs: - removed plugins/SIGNALS because it's gone upstream - all the API docs are moving into Doxygen, and I'll consider shipping them whenever upstream starts shipping header files * debian/rules: - add --disable-nss to ensure consistent SSL library choice -- Robert McQueen Mon, 29 Sep 2003 13:28:07 +0100 gaim (1:0.68+0.69cvs20030917-1) experimental; urgency=low * CVS snapshot. Contains SSL support for Jabber and the new MSN plugin, contact support, a Tcl plugin loader, and the two patches that were in 0.68-1. * Added build depends for GNUTLS and Tcl, and conflicts for NAS and NSS (because we don't build with this functionality). -- Robert McQueen Thu, 18 Sep 2003 00:03:42 +0100 gaim (1:0.68-1) unstable; urgency=low * New upstream version. (closes: #209021) - new event system and perl API - ignores MSN's upgrade spam (new MSN plugin will be in 0.69) - fixes Jabber registration (closes: #208070) - now includes code to retrieve, parse and display Yahoo and MSN profiles (closes: #201498) * Start using the simple patch system from cdbs: - cvs-libgaim-remote-glib.diff: link libgaim-remote with glib [from CVS] (closes: #210652) - cvs-yahoo-version.diff: update Yahoo protocol version to avoid warnings and/or allow signing in [from CVS] -- Robert McQueen Wed, 17 Sep 2003 02:20:20 +0100 gaim (1:0.67-3) unstable; urgency=low * Apply my patch from CVS to stop the ticker crashing when it's reloaded (enterprising hack to make GType reuse the existing type instead of trying to register it again). (closes: #203727) * Apply fix from CVS to stop crashes if you don't have yourself on your buddy list (the developers all do this because it's the best way to track your own status at the moment). (closes: #206574) -- Robert McQueen Sat, 23 Aug 2003 04:54:11 +0100 gaim (1:0.67-2) unstable; urgency=low * Apparently libgaim-remote is too small to warrant a package of its own until anything else wants to use it. * Tweak description again to make less of an issue of license and widget set. (closes: #205518) -- Robert McQueen Tue, 19 Aug 2003 19:41:48 +0100 gaim (1:0.67-1) unstable; urgency=medium * New upstream version with much core/UI splitting work and a cool new key/value XML-based prefs engine, rewritten IRC plugin, status icons in conversation tabs, a tab colour for unseen status messages, and various dialog rewrites. (closes: #202666, #202742, #203471) * Merged all the patches from 0.64-3 and should fix a few other bugs: - store proxy settings correctly (closes: #195035, #195304) - wait for the remote buddy list to download (on AIM/ICQ) before maniupulating buddies (closes: #195655, #196445) - display remote aliases correctly (closes: #196664) - new prefs system works now (closes: #200810) - apparently this one is fixed in 0.66 too (closes: #205093) * Between 0.64 and 0.67, various fairly crucial MSN bugfixes were made, preventing all manner of infinite loops, unclosable chat windows, cloned buddies, and the like. (closes: #199421, #199515, #200655) (closes: #203306, #203309, #203866, #204960) * Skipped 0.65 because it was a little broken, hence the hasty release of 0.66. * Skipped 0.66 because I decided to switch to cdbs while I was reworking the packaging for the new libgaim-remote library, and it turned out the build system was subtly broken and needed fixing. These fixes are in this version. So it builds. Hurrah. * By skipping two versions, I shielded you all from the harsh disappearance of the Message Notification plugin in 0.65 and 0.66. Which was my plan all along, of course. * Medium urgency because this is a pretty solid release with lots of bug fixes, and 0.64-3 sucked. * Split out library and -dev packages for the new libgaim-remote0 library. * Switched to CDBS. Shrunk debian/rules somewhat. :D * Made the description less AIM-centric. * Updated standards version to 3.6.0. -- Robert McQueen Fri, 15 Aug 2003 06:06:37 +0100 gaim (1:0.64-3) unstable; urgency=medium * Medium urgency because MSN and Yahoo are fairly broke in the previous release, which should *not* be immortalised in testing. * Added patch from CVS to fix various MSN crashes and corruption of your friendly name. (closes: #195603) * Added patch from CVS to fix crash for buddy lists sorted by status. (closes: #196338, #196515) * Backported fix from CVS to fix Yahoo's new penchant for lower-case user names. * Backported fix so AOL mail is not checked if you disable the option. (closes: #196733) * Corrected spelling error in Oscar (also in CVS). (closes: #196840) -- Robert McQueen Sun, 29 Jun 2003 02:34:32 +0100 gaim (1:0.64-2) unstable; urgency=low * Updated to standards version 3.5.10. * Replaced the Debian menu icon with a nice-looking one now that the menu policy doesn't mandate a crappy pallete. * So I spent a day cleaning the BTS for the Gaim package. Closed about 20 bugs, reassigned 3 and fixed 7. This is the second batch of fixes. * Adjust wording so iconaway plugin no longer claims to minimise the away window, which is a dialog and shouldn't (or sometimes can't) be minimised. It wasn't doing it anyway. (closes: #188821) * Linkify text appended by the history plugin if the option is enabled to do this for conversations. (closes: #189511) * Validate UTF8 for incoming server-stored aliases because clients like Trillian send us random encodings but call them UTF-8. Avoids nasty crashing. (closes: #189662) * Added a "Close" button to the file transfer dialog. (closes: #192366) -- Robert McQueen Sat, 31 May 2003 16:56:18 +0100 gaim (1:0.64-1) unstable; urgency=low * New upstream version. - Fixes some MSN problems, spiffs the debug window some more, and more core/ui splitting work from Chip the living legend. - New user request API fixes age-old dangling callback problems with prompt dialogs such as the IRC nick change dialog. (closes: #189946) * Made the signon meter window not dialog hinted, so you can ignore it and carry on using Gaim while your eleventy billion accounts sign in. Found and fixed a leak in the process. (closes: #187996) * Fixed a minor typo which caused "" to be appended even when the font dialog was cancelled. (closes: #188048) * Fixed "Copy link location" menu entry the right way. The correct clipboard to copy to is... both of them. (closes: #191301) -- Robert McQueen Sat, 31 May 2003 05:28:51 +0100 gaim (1:0.63-1) unstable; urgency=low * New upstream version. The 'I am happy ChipX86' version. He hacked loads on this release, giving us a new MSN plugin, a new plugin API, and brought us far closer to a core/UI split than we've ever done before. Three cheers for Chip! Also thanks to faceprint, you can put chats in your buddy list once more. And there was much rejoycing. -- Robert McQueen Sun, 18 May 2003 04:40:19 +0100 gaim (1:0.62-1) unstable; urgency=low * New upstream version. - fixes AIM/ICQ proxy connection problems (closes: #188530) - includes updated Japanese translation, thanks Junichi Uekawa (closes: #188819) - buddy list keyboard accelerators fixed (closes: #189843) -- Robert McQueen Sun, 27 Apr 2003 19:59:42 +0100 gaim (1:0.61-1) unstable; urgency=low * New upstream version. Fixes buddy list drag and drop issues. Some new icons and spacing to improve the look of the buddy list. New more flexible buddy pounce code. -- Robert McQueen Fri, 11 Apr 2003 03:12:18 +0100 gaim (1:0.60.0-1) unstable; urgency=low * New upstream version. Actually 0.60, but 0.60.0 is higher than the versions on my CVS debs. Skipped 0.59.9, oh well. (closes: #184493) - it has been in development for almost a year, and a third of all the code has been rewritten in porting to Gtk2! - features new buddy list with optional large buddy list icons (closes: #130436) - group folding is persistent across signons and signoffs (closes: #133238) - i18n fixed and rewritten in all protocols (closes: #155058, #185531) - adds X11R6 session management support (closes: #151272) - new sound system with libao has arts plugin (closes: #170960) - adds "Display remote nick if no alias is set" option which can display and update MSN friendly names automatically (closes: #176466) - other cool stuff like XML-based buddy list, global groups, asynchronous DNS lookups, draggable conversational tabs, tray icon plugin to replace the GNOME applet, ICQ server-stored buddy lists, cute new PNG icons, external sounds... * Added long title to Debian menu entry. (closes: #175379) * Disabled NAS support. Feel free to add it to libao. * Dropped licq2gaim.pl, it doesn't work with XML buddy list format. * Tweaked debian/rules with new build options and such. * Updated build-deps with Gtk2 etc, updated standards version, suggest gnome-panel, kicker or docker for the tray icon plugin, and detail the new arrangement in the description. * Updated README.Debian with triumphant post-release banter. * Wrote a manpage for gaim-remote. Fancy that. -- Robert McQueen Sat, 5 Apr 2003 12:30:11 +0100 gaim (1:0.59.8-1) unstable; urgency=low * The 'roll on 0.60' release. * New upstream version. I'd apologise for the delay, but I put the interesting fixes in 0.59.7-1 so there was no hurry anyway. * No longer build the GNOME applet variant. It only works with GNOME 1.4 which isn't shipped in Debian sid any more. Furthermore, the applet won't exist in the Gtk2 version of Gaim, it's already been replaced with my Tray Icon plugin. (closes: #180640) * Add a note in the description, and a longer one in README.Debian, explaining why gaim-gnome is gone. It's not coming back either. If I get any bugs about this I'm gonna be hella annoyed. Use the CVS debs from here: deb http://people.debian.org/~robot101/gaim unstable cvs deb-src http://people.debian.org/~robot101/gaim unstable cvs And no, I will not upload them to sid. It's still buggy as hell. * Kill off gaim-common and gaim-gnome packages. Conflict and replace because all files belong to the gaim package now, and provide in the vain hope that apt/dpkg will choose gaim over old gaim-gnome packages and that I won't have to make a stub package. * Major crapectomy in debian/rules now that we're only building the one time. Thank god. * Add gaim.preinst to remove old /usr/share/doc/gaim symlink because dpkg wisely avoids transitions between symlinks and directories and vice versa. * Updated build-depends to exclude GNOME and libpanel-applet, include esd, have libaudio-dev instead of nas-dev, and no longer require perl 5.8 (sid is 5.6 on all arches now). * Update standard version to 3.6.8. -- Robert McQueen Tue, 18 Feb 2003 00:04:05 +0000 gaim (1:0.59.7-1) unstable; urgency=medium * New upstream version. Various bug fixes including a remote crash bug with malicious AIM rendezvous packets. * Includes patch from CVS to fix Yahoo login problems - sends protocol version 0x0900 instead of 0x0600. * Yahoo i18n patch was included in this release. (closes: #170542) * Fixed a small error causing the "Insert Smiley" button to crash when offline. (closes: #175442) * Replaced invasive automatic config.{guess,sub} updating from debian/rules and replaced with much saner symlinking method. * Murdered pallet of gaim-menu.xpm (for the Debian menu entry) according to the idotic menu policy, to shut lintian up. * This release is from the upstream 'gtk1-stable' branch. If you like Gtk2, or use GNOME 2 or KDE 3.1, please consider trying my Gaim CVS snapshot debs. The Gtk2 port is being worked on in CVS, and as a result this version is a little buggier and has some regressions, including no working IM image support and no protocol specific smileys, but it does have infinitely better i18n, looks a lot prettier, has support for session management (ie start at login in GNOME 2), and also features my Tray Icon plugin, which replaces the applet, and is visible in system-tray-applet in GNOME 2, or the normal Kicker system tray in KDE 3.1. Please mail me directly with any bugs you find in these, rather than filing them in the BTS. The apt lines are: deb http://people.debian.org/~robot101/gaim unstable cvs deb-src http://people.debian.org/~robot101/gaim unstable cvs (closes: #148248, #165291, #171714) -- Robert McQueen Mon, 6 Jan 2003 06:11:33 +0000 gaim (1:0.59.6-1) unstable; urgency=low * New upstream version. Fixes gigantic timestamp font in Jabber group chats. (closes: #167153) * Include patch from CVS to fix Yahoo! i18n issues (hopefully) and crashes due to protocol changes. (closes: #160347, #166505) -- Robert McQueen Sun, 24 Nov 2002 06:01:09 +0000 gaim (1:0.59.5-2) unstable; urgency=low * Added patch from upstream CVS to fix bugs when an invalid gtk style is loaded. Sigh. Roll on 0.60 with Gtk2 goodness. (closes: #152274) -- Robert McQueen Sat, 26 Oct 2002 22:41:20 +0100 gaim (1:0.59.5-1) unstable; urgency=low * New upstream version, sorry about the delay. Considering 0.59.3-1 contained most of the fixes that went into 0.59.4, I didn't bother packaging it. The only changes to 0.59.5 are to fix a crash in the Yahoo plugin due to a slight change in the protocol. * Updated config.sub from 20020621 to 20020905 and config.guess from 20020529 to 20020903. -- Robert McQueen Fri, 25 Oct 2002 02:42:12 +0100 gaim (1:0.59.3-1) unstable; urgency=low * New upstream version. * Updated to standards version 3.5.7. * Tighten perl build-dep to require 5.8 (thanks Ryan Murray). * Applied fixes from upstream CVS: - remove Ctrl+K binding for colour - fix yahoo memleak - make the edit tab in the blist scrollable horizontally - apply patch from A Lee to do charset transitions character by character to avoid iconv's truncation (closes: #162396) -- Robert McQueen Sun, 29 Sep 2002 18:03:49 +0100 gaim (1:0.59.2-1) unstable; urgency=low * New upstream version. * Revert all patches here, everything's included. * Except for a blooper upstream which removes spaces from MSN and Yahoo screen names, and adds random NULs instead. Doh! Pulled fix from CVS. -- Robert McQueen Fri, 13 Sep 2002 02:22:05 +0100 gaim (1:0.59.1-4) unstable; urgency=low * Update build-deps to libgnome-dev (>= 1.4.2-3) and libpanel-applet-dev (>= 1.4.1-2) to ensure imlib1/png2 is used. * Minor modification from Matt Wilson at RedHat to fix UTF8 font selection in GtkImHtml (widget used in conversation/chat windows). -- Robert McQueen Tue, 3 Sep 2002 18:33:24 +0100 gaim (1:0.59.1-3) unstable; urgency=high * The 'getting sick of this now' release. Third time lucky and all... * Ryan Murray (of gdk-pixbuf-dev fame) suggests dropping the new build dependencies and gently hacking the Makefile to substitute them out of linking the applet, because they're not actually necessary. This will also fix libpng2/3 compatibility issues that were making the applet fall back to the ugly xpm icon (until Christian Marillat stops being an idiot and links GNOME 1.4 against libpng2 again). * Thanks to Lukas Geyer (of JimButton fame) for pointing me at the right make features I needed to accomplish this without too much hacking. * Include a patch from Chris Blizzard (of RedHat fame) to fix an oversight in my fix for the browser security vunlerability. Access to unallocated memory in the non-manual browser handlers could have caused crashes in some situations. Cheers Chris. Sorry everyone. * Also edit the default manual browser command to not contain quotes any more. Debian should get a /usr/bin/sensible-browser or something. -- Robert McQueen Wed, 28 Aug 2002 02:42:42 +0100 gaim (1:0.59.1-2) unstable; urgency=high * Well, that's the reason. gdk-imlib-dev dropped the dependencies for lib{jpeg,png,tiff,gif}-dev because apparently they're not necessary. libgnome-dev probably needs to add these. * Added build-deps on libpng3-dev and libtiff3g-dev, so that Gaim can finally build on the buildds without me NMUing libgnome-dev in a fit of anger. * Set urgency back to high to hammer the point home. If this doesn't build I'm going to be mighty annoyed. * Changed gaim-gnome depend to gnome-panel (<< 1.5). It doesn't work with GNOME 2. I'm writing a docklet for that. -- Robert McQueen Mon, 26 Aug 2002 19:02:14 +0100 gaim (1:0.59.1-1) unstable; urgency=low * New upstream version from the gtk1-stable branch. Merges my browser.c patch, works with perl 5.8 and gettext 0.11.x, and has a pretty icon. * Upstream merged patch for fixed i18n with libiconv. (closes: #154473, #155058) * Updated gaim-menu.xpm in light of new gaim.png icon, and fixed gaim-common.files for the new icon name. * Fixes idiotic handling of http_proxy environment variable. (closes: #144244) * Updated ja.po because upstream is ignoring me about this. (closes: #154485) * Added libjpeg-dev build-dep. GNOME 1.4 is messed up in a half-baked libpng2 -> 3 transition, and this dep must've fallen out somewhere else along with someone's brain. Should let the security fix build and propogate to sarge. -- Robert McQueen Mon, 26 Aug 2002 04:59:50 +0100 gaim (1:0.59-2) unstable; urgency=high * Wrote patch to fix hideously insecure execution of unescaped arbitrary strings through the shell for the Manual browser URL click handler. Replaces any spaces in the URL with +, and runs the user's browser command directly without the shell. Users will soon learn not to quote the %s in their browser command. (closes: #157909) * Added libungif4-dev to build-deps. Looks like someone's brain fell out. Ho hum. * Updated config.sub from 20020307 to 20020621, and config.guess from 20020320 to 20020529. -- Robert McQueen Sat, 24 Aug 2002 02:14:49 +0100 gaim (1:0.59-1) unstable; urgency=low * New upstream version. Finally. Contains various new and updated translations, and fixes for various bugs, crashes & memleaks. * Should work around a Gtk+ bug that causes spinning when some text widget is smaller than the text height. (closes: #117498) * Fixes strange tabbing order in 'Add Buddy' dialog. (closes: #134502) * Hopefully a final end to stupid MSN errors. (closes: #147141) * Should display UTF8 MSN names in their full glory. (closes: #150354) * Updated config.sub from 20010420 to 20020307, and config.guess from 20010420 to 20020320. -- root Fri, 26 Jul 2002 23:19:27 +0100 gaim (1:0.58-2) unstable; urgency=low * Applied patch from Chris Blizzard (of Redhat fame =) to fix munged GNOME applet icon at startup. Cheers! (closes: #147071) * Enabled NAS audio in non-GNOME package. (closes: #147291) * Returned globbing to debian/gaim-common.files now we don't need to make an exception for iconaway.so. -- Robert McQueen Fri, 24 May 2002 23:24:16 +0100 gaim (1:0.58-1) unstable; urgency=high * The 'DOH!' release. * New upstream version, lots of nice stuff. See the changelog. =) * To avoid upsetting upgrades, gaim-common now replaces suitably old gaim-gnome packages because iconaway.so moved. (closes: #144945) * Another attempt by upstream to fix those annoying 'Already there' MSN errors. (closes: #145722) * Fixes GNOME applet transparency problems. (closes: #145915) * In the previous version, the MSN plugin got secure logins to Hotmail that used MD5 auth cookies in a file which was opened in the browser, and would log you straight into your inbox. Ironically, this improved security used blatantly insecure tempfiles, which were also created with the 644 mode, leaving the way open for symlink attacks, and anyone on your system reading your mail. This is fixed in this release. (closes: #146750) * Not to mention the overflow in the Jabber plugin that got fixed. * Automatic update of config.sub from 20010907 to 20020307, and config.guess from 20010904 to 20020320. -- Robert McQueen Tue, 14 May 2002 17:44:43 +0100 gaim (1:0.57-2) unstable; urgency=high * The 'Ahh... phew' release. One or two patches from CVS. * Fixes segfault DOS in TOC protocol code. (closes: #144318) * Returns iconaway.so to gaim-common, the gnome/non-gnome dependent code has been moved to the binary itself. * High priority to reach woody with these fixes, and the fix in 0.57 for Yahoo's new authorisation method. -- Robert McQueen Sun, 28 Apr 2002 16:54:18 +0100 gaim (1:0.57-1) unstable; urgency=low * The 'You did WHAT with configure.ac?!?' release. * New upstream version. Adds an evil autoconf hack upstream, support for Yahoo's new authorisation method, new keyboard shortcuts, hashed secure logins for Hotmail from your MSN account, and various translations and Jabber improvements. -- Robert McQueen Fri, 26 Apr 2002 17:09:18 +0100 gaim (1:0.56-1) unstable; urgency=low * The 'Hola from Tenerife!' release. * New upstream version. Signal patch merged. Various bugfixes, and the much-awaited send history finally appears. * Automatic update of config.sub from 20010420 to 20020307, and config.guess from 20010420 to 20020320. -- Robert McQueen Sat, 13 Apr 2002 18:40:05 +0100 gaim (1:0.55-2) unstable; urgency=low * Wrote patch to unblock useful signals like SIGCHLD because gdm helpfully blocks them. Helps avoid zombies from filling your process space when you start the applet from the GNOME panel. [debian/patches/unblock-handled-signals.diff] * Applied patch from CVS to fix MSN problems such as being constantly prompted to allow buddies who you actually wanted to block. [debian/patches/various-msn-fixes.diff] * Automatic update of config.sub from 20020222 to 20020307, and config.guess from 20020219 to 20020320. -- Robert McQueen Wed, 3 Apr 2002 20:53:38 +0100 gaim (1:0.55-1) unstable; urgency=low * The 'and relax...' release. * New upstream version (all patches have been merged). * Updated Spanish translation. (closes: #138471) * Fixes HTTP incompliance in proxy code. (closes: #140036) * Fixes crashing when enabling/disabling animated buddy icons. (closes: #140192) -- Robert McQueen Sat, 30 Mar 2002 16:49:43 +0000 gaim (1:0.54-6) unstable; urgency=low * Updated gaimrc.c to recognise the option for the new Command sound method so it doesn't override it at loadup. (closes: #139253) -- Robert McQueen Thu, 21 Mar 2002 13:01:42 +0000 gaim (1:0.54-5) unstable; urgency=low * Added MSN embarrased icon. (closes: #139109) * Updated MSN pixmaps from CVS to avoid evil crashing on some archs. -- Robert McQueen Wed, 20 Mar 2002 11:14:58 +0000 gaim (1:0.54-4) unstable; urgency=low * Fixed a compiler warning with the sound patch. -- Robert McQueen Sun, 17 Mar 2002 17:56:05 +0000 gaim (1:0.54-3) unstable; urgency=low * Fixed a few things with my sound patch, like the mysterious swapping of the recieve and first recieve sound options versus events. Doh! (closes: #138759) -- Robert McQueen Sun, 17 Mar 2002 17:26:50 +0000 gaim (1:0.54-2) unstable; urgency=low * Removed ICQ plugin. It really doesn't work very well at all any more. (closes: #137058) * Updated README.Debian to take account of this. -- Robert McQueen Sat, 16 Mar 2002 19:46:42 +0000 gaim (1:0.54-1) unstable; urgency=medium * New upstream version. Goodies like IM Image sending for Oscar, protocol specific smileys, off-line message and improved typing notification support for Yahoo, DCC chat and mIRC formatting support for IRC, and lots of general bugfixes, especially pertaining to never being asked to accept/decline MSN buddies who add you when you're off-line. (closes: #138472) * Medium urgency upload because 0.53 was buggy but I had to let 0.53-2 go in to testing because of the nul vulnerability. * The six (!) patches in 0.53-2 from CVS are all included in this version. * 'Oscar' protocol renamed to 'Oscar / ICQ' upstream. (closes: #137061) * Applied patch from me, already accepted upstream, with various cleanups to fix unusual sound behaviour: - attempting to play an internal sound with a command now generates an error instead of silently failing - attempting to play a file with the native method now warns before probably failing - the 'Test' button in the sound preferences now temporarily enables the sound under test, so it always tries to play it - using a command to play sounds is now a seperate option that must be explicitly enabled, avoiding problems with testing for other options happening before testing if a command had been specified (closes: #137010) * Now building the non-GNOME version against ESD to make sound support more useful. Native sound support can only be expected to work for internal sounds. (closes: #137013) * Remove the .h files from gaim-common. It turns out to be very hard indeed to make Gaim plugins build outside the Gaim source tree. I will probably make a gaim-plugins package with a few worthy plugins like the russian charset conversion, xosd signon/signoff notification, etc - I'm open to suggestions. Plugins must be runtime configurable (unlike irc-extras), actually useful (unlike the one to arbitrarily change your idle time), and build against the latest Gaim. * Include the licq2gaim.pl buddy list import script in the examples dir in gaim-common. -- Robert McQueen Sat, 16 Mar 2002 18:47:07 +0000 gaim (1:0.53-2) unstable; urgency=low * The 'No, I don't use CVS' release. * Applied patches from CVS so that: - closing a conversation window when a buddy is typing doesn't cause a crash [debian/patches/close-typing-buddy-crash.diff] - server-side buddy lists are disabled for ICQ over Oscar to avoid mysterious bugs with authentication-required buddies not appearing on-line [debian/patches/no-ssi-for-icq.diff] - Gaim doesn't fork and uses gdk_beep() for console beeps [debian/patches/non-forked-gdk-beep.diff] (closes: #136165) - Gaim doesn't gradually make the X server use all your RAM [debian/patches/memleak.diff] - typing notification doesn't crash Gaim if you don't use tabs [debian/paches/no-tab-crash.diff] - sending a nul or � doesn't crash Gaim [debian/patches/nul-crash.diff] -- Robert McQueen Mon, 4 Mar 2002 19:23:38 +0000 gaim (1:0.53-1) unstable; urgency=low * New upstream version. Adds typing notification, new ICQ icons, IM Images, screen-name formatting support and server-side buddy list storage/retrieval for Oscar, and various other nice features and cleanups. (closes: #136512) * Includes documentation and MSN segfault fixes that were patched into the previous release. * Automatic update of config.{sub,guess} from 20010420 to 20020222. -- Robert McQueen Sun, 3 Mar 2002 19:06:52 +0000 gaim (1:0.52-1) unstable; urgency=medium * New upstream version. Fixes a variety of nasty problems. * Fixes crashing on connection with some MSN buddy lists. * Uses correct Yahoo! messenger server. (closes: #133343) * Fixes DOSable erroneous handling of HTML comments. (closes: #133603) * Applied patch from CVS to fix MSN segfaults. (closes: #115538) * Moved iconaway.so plugin into gaim-gnome package because it's useless without the applet. (closes: #133500) * Fixed little typo in manpage (already fixed in CVS). -- Robert McQueen Sun, 17 Feb 2002 22:32:10 +0000 gaim (1:0.51-2) unstable; urgency=low * Fixed description of gaim-gnome to make it obvious that it is a panel applet. * Made gaim-gnome depend on gnome-panel. It's unreasonable to request that libpanel-applet0 does so, but gaim-gnome is useless without it. (closes: #131233) -- Robert McQueen Mon, 28 Jan 2002 20:25:04 +0000 gaim (1:0.51-1) unstable; urgency=low * The 'Hi anyone on gaim's PTS' release. * New upstream version, mostly bug fixes. (closes: #130737) * Upstream developer Eric Warmenhoven departs... thanks for all of your help and effort - you'll be greatly missed by all. * According to him, crashes were caused by a Gtk+ bug which has now been worked around. (closes: #115538) * He removed the help message a few weeks ago because I said it didn't wrap properly... not sure how helpful that was though. (closes: #125310) * He also grappled with the GNOME panel to implement transparent backgrounds as best he could. The Gaim applet icon will have the same background image as the panel, but it will not line up with the panel's because the panel doesn't provide enough imformation to achieve that. (closes: #128449) * Made gaim-common include a handful of .h files so that you can build plugins without the Gaim source - this opens the way for packaging plugins that don't come with Gaim. The reason is that I do not wish to include unofficial plugins in Gaim and accept responsibility for ensuring they work with the latest versions, or be forced to remove them from the package at a later date, sorry. (closes: #129737) * I can no longer reproduce this bug with this new version, but I am also unable to determine if/when exactly it was fixed from the CVS logs. If you can still make it happen, please reopen it and I'll chase it up. (closes: #117498) * Fixed a few minor errors in the manpage. (closes: #130435, #130443) * Re-worked description to highlight mutli-protocol support. (closes: #130437) * Automatic update of config.{sub,guess} from 20010907 to 20020102. -- Robert McQueen Sun, 27 Jan 2002 05:45:05 +0000 gaim (1:0.50-1) unstable; urgency=low * The 'Hi everyone who reads d-d-c!' release. * New upstream version, includes GnomeICU import and Galeon patches from 0.49-2. (closes: #125897) * Added a suitably scaled Debian menu icon for gaim. (closes: #122302) * Re-ordered build to do the non-GNOME version first and install that 'manually', so all the files from the GNOME applet get installed with the 'make install' target. This means gaim-gnome now contains the applet panel images. (closes: #122315) * Fixed re-declaration of time() in jabber/xtream.c. (closes: #124390) -- Robert McQueen Thu, 20 Dec 2001 18:30:16 +0000 gaim (1:0.49-2) unstable; urgency=medium * The 'grr... dpkg' release. Fixes possibly troublesome package relationship problems. * Made gaim-gnome conflict and replace old gaim packages. * Made gaim-common have a versioned depend on gaim or gaim-gnome, because a dpkg bug seemed to let you install an old gaim-common with a new gaim or gaim-gnome, even though they have a versioned depend on gaim-common. * Added patch from CVS to support GnomeICU buddy list importing. * Added option to use Galeon as the browser. -- Robert McQueen Sat, 1 Dec 2001 22:41:04 +0000 gaim (1:0.49-1) unstable; urgency=low * New upstream version. * Removed evil hack from debian/rules to rename plugins from libfoo.so.0.0.0 to libfoo.so (fixed upstream). * Updated description to include Gadu-gadu protocol. * Removal of buddies from within the IM window is now confirmed. (closes: #116442) * Memory leak in buddy list fixed. (closes: #119639) * Pgup/pgdown in IM windows now scrolls only one text box, not both. (closes: #120027) * Included a minor patch to remove ^M characters from Oscar messages. (closes: #120595) * Now suggests ispell. (closes: #121656) -- Robert McQueen Fri, 30 Nov 2001 01:43:01 +0000 gaim (1:0.48-1) unstable; urgency=low * New upstream version. (closes: #119748) * Better support for ICQ2000 features via OSCAR protocol, like server/offline messages. * Doesn't temporarily grow small GNONE panels when the applet starts up. * GNU config automated update: config.sub (20011005 to 20011108), config.guess (20011005 to 20011108) -- Robert McQueen Fri, 16 Nov 2001 19:46:48 +0000 gaim (1:0.47-1) unstable; urgency=low * New upstream version. * Sound-playing children now time out after 30 seconds. (closes: #116982) -- Robert McQueen Fri, 2 Nov 2001 00:53:18 +0000 gaim (1:0.46-1) unstable; urgency=low * New upstream version. (closes: #114950) * Added documentation: plugins/PERL-HOWTO, plugins/SIGNALS, doc/CREDITS, doc/FAQ. -- Robert McQueen Fri, 19 Oct 2001 00:37:19 +0100 gaim (1:0.45-1) unstable; urgency=low * New upstream version, includes fix to avoid infinite IM window growth. (closes: #114950) * Upgraded to DH_COMPAT=3 to make /etc/CORBA/servers/gaim_applet.gnorba a conffile. Adjusted build deps to match. -- Robert McQueen Sun, 14 Oct 2001 19:45:20 +0100 gaim (1:0.44-2) unstable; urgency=medium * Applied patch from CVS to avoid IM windows sizing to 0 by default and growing limitlessly. -- Robert McQueen Tue, 25 Sep 2001 01:28:14 +0100 gaim (1:0.44-1) unstable; urgency=low * New upstream version. * Enabled perl support, upstream assures me it works now. (closes: #112732) -- Robert McQueen Sun, 23 Sep 2001 18:37:20 +0100 gaim (1:0.43-1) unstable; urgency=medium * New upstream version including various bugfixes. * Colour selection dialogs now remember the previous colours. (closes: #101562) * Autorecon plugin now has an exponential backoff to allow users to correct non-transient errors. (closes: #102042) * Changed 'buddy' prompt to 'contact' to make the Add Buddy dialog less AIM-specific. (closes: #105460) * Users can now edit their alias with the MSN plugin. (closes: #110966) * Added postinst scripts for gaim and gaim-gnome to rmdir their dirs from /usr/share/doc if they exist, and replace them with symlinks to gaim-common. (closes: #111127) * Seeing as we have to build twice, try and build as little as possible the first time round (just the gaim_applet binary and its dependencies) to make it more efficient. * Updated config.{sub,guess} from latest autotools-dev. -- Robert McQueen Tue, 11 Sep 2001 22:42:51 +0100 gaim (1:0.11.0pre15-1) unstable; urgency=low * New maintainer. (closes: #100549) * New upstream version. (closes: #54105, #96166) * Repackaged with sane version number, pristine .orig.tar.gz, and seperate .diff.gz. (closes: #106488) * MSN and OSCAR protocols are functional at time of release. (closes: #92045, #105841) * Plugins, locales and docs are now in a shared gaim-common package. * Therefore, gaim and gaim-gnome are concurrently installable. (closes: #69794, #87873) * These new shared plugins are not linked against GNOME. (closes: #83427) * The GNOME applet now has a CORBA file and correct Applet menu entry, so it correctly integrates with the panel and saves settings. (closes: #80587, #92950, #101560) * Added code to debian/rules to update config.{guess,sub} from autotools-dev when necessary. (closes: #104934) -- Robert McQueen Fri, 31 Aug 2001 03:38:54 +0100 gaim (1:0.11.0pre11) unstable; urgency=low * New upstream release. -- Robert S. Edmonds Mon, 14 May 2001 17:40:05 -0400 gaim (1:0.11.0pre9-1) unstable; urgency=low * New upstream release. Closes: #91854 -- Robert S. Edmonds Tue, 27 Mar 2001 07:32:16 -0500 gaim (1:0.11.0pre8-1) unstable; urgency=low * New upstream release. -- Robert S. Edmonds Sun, 25 Mar 2001 15:26:59 -0500 gaim (1:0.11.0pre7-1) unstable; urgency=low * New upstream release. -- Robert S. Edmonds Sun, 18 Mar 2001 18:40:46 -0500 gaim (1:0.11.0pre4-2) unstable; urgency=low * Fixed gaim package, now contains a plain GTK-linked binary. -- Robert S. Edmonds Tue, 20 Feb 2001 18:12:45 -0500 gaim (1:0.11.0pre4-1) unstable; urgency=low * New upstream release. -- Robert S. Edmonds Sat, 23 Dec 2000 16:38:09 -0500 gaim (1:0.11.0pre2-1) unstable; urgency=low * New upstream release. -- Robert S. Edmonds Wed, 13 Dec 2000 07:28:04 -0500 gaim (1:0.10.3-2) unstable; urgency=low * Patched to fix remote HTML exploit when using OSCAR protocol. Closes: #77539 * New upstream release. -- Robert S. Edmonds Tue, 28 Nov 2000 19:48:33 -0500 gaim (1:0.10.1) unstable; urgency=low * New upstream release. -- Robert S. Edmonds Sun, 17 Sep 2000 17:43:20 -0400 gaim (1:0.10.0-1) unstable; urgency=low * New upstream release. -- Robert S. Edmonds Mon, 11 Sep 2000 17:56:10 -0400 gaim (1:0.9.20-1) unstable; urgency=low * Thanks to Decklin Foster * New upstream release. * removed au2h generated files from .diff.gz * Build with and without Gnome support -- Robert S. Edmonds Wed, 26 Jul 2000 00:19:20 -0400 gaim (1:0.9.18-1) unstable; urgency=low * New upstream release. -- Robert S. Edmonds Sat, 3 Jun 2000 11:14:21 -0400 gaim (1:0.9.15-1) unstable; urgency=low * New upstream release. -- Robert S. Edmonds Sun, 21 May 2000 21:00:40 -0400 gaim (1:0.9.13-1) unstable; urgency=low * New upstream release. -- Robert S. Edmonds Wed, 29 Mar 2000 21:16:47 -0500 gaim (1:0.9.10-2) unstable; urgency=low * Closes: #56340 -- Robert S. Edmonds Wed, 23 Feb 2000 19:01:54 -0500 gaim (1:0.9.10-1) unstable; urgency=low * New upstream release. -- Robert S. Edmonds Tue, 23 Nov 1999 22:42:47 -0500 gaim (1:0.9.7-1) unstable; urgency=low * New upstream release. -- Robert S. Edmonds Sun, 15 Aug 1999 20:01:54 -0400 gaim (0.9.5-1) unstable; urgency=low * New upstream release. -- Robert S. Edmonds Sat, 31 Jul 1999 23:12:54 -0400 gaim (0.8.0-1) unstable; urgency=low * New upstream version. -- Robert S. Edmonds Mon, 17 May 1999 20:00:10 -0400 gaim (19990311-1) unstable; urgency=low * New upstream version. -- Robert S. Edmonds Thu, 11 Mar 1999 16:58:29 -0500 gaim (19990227-1) unstable; urgency=low * New upstream version. -- Robert S. Edmonds Sat, 27 Feb 1999 21:54:49 -0500 gaim (19981231-1) unstable; urgency=low * New upstream version. -- Robert S. Edmonds Thu, 31 Dec 1998 14:06:14 -0500 gaim (19981126-1) unstable; urgency=low * New upsteam version. -- Robert S. Edmonds Sat, 28 Nov 1998 17:46:25 -0500 gaim (19981117-1) unstable; urgency=low * Initial release. -- Robert S. Edmonds Wed, 18 Nov 1998 16:59:35 -0500 debian/source/0000775000000000000000000000000012274732607010502 5ustar debian/source/format0000664000000000000000000000001412274732607011710 0ustar 3.0 (quilt) debian/compat0000664000000000000000000000000212274732607010400 0ustar 7 debian/pidgin-dev.doc-base0000664000000000000000000000046612274732607012635 0ustar Document: pidgin-dev Title: Pidgin/libpurple API Manual Abstract: This manual describes the Pidgin programming interface for use by Pidgin/libpurple plugins and scripts. Section: Network/Communication Format: HTML Index: /usr/share/doc/pidgin-dev/html/index.html Files: /usr/share/doc/pidgin-dev/html/*.html debian/libpurple-bin.manpages0000664000000000000000000000002712274732607013462 0ustar debian/purple-remote.1 debian/pidgin-dbg.preinst0000664000000000000000000000155612274732607012623 0ustar #!/bin/sh # preinst script for pidgin-dbg # # see: dh_installdeb(1) set -e # summary of how this script can be called: # * `install' # * `install' # * `upgrade' # * `abort-upgrade' # for details, see http://www.debian.org/doc/debian-policy/ or # the debian-policy package case "$1" in install|upgrade) if dpkg --compare-versions "$2" lt 2.1.1-2; then if [ -h /usr/share/doc/pidgin-dbg ]; then rm /usr/share/doc/pidgin-dbg fi fi ;; abort-upgrade) ;; *) echo "preinst called with unknown argument \`$1'" >&2 exit 1 ;; esac # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. #DEBHELPER# exit 0 debian/patches/0000775000000000000000000000000013061562531010621 5ustar debian/patches/CVE-2014-3696.patch0000664000000000000000000001071412423463153013254 0ustar Backport of: # HG changeset patch # User Mark Doliner # Date 1396942285 25200 # Node ID 44fd8915877754d378f859dae73b64b39d4e7cb0 # Parent 6436e14bdb9d997dfd73cc7cea1b300c37fa401d In Novell Groupwise, fix potential remote crash parsing server message that indicates that a large amount of memory should be allocated. I added arbitrary max size checks that are hopefully larger than any real expected value. It was kinda weird that the existing check on checked MAXINT. We'll want to request a CVE ID for this. Discovered by Yves Younan and Richard Johnson of Sourcefire VRT #diff --git a/ChangeLog b/ChangeLog #--- a/ChangeLog #+++ b/ChangeLog #@@ -12,6 +12,11 @@ # Gadu-Gadu: # * Updated internal libgadu to version 1.12.0-rc2. # #+ Groupwise: #+ * Fix potential remote crash parsing server message that indicates that #+ a large amount of memory should be allocated. (Discovered by Yves Younan #+ and Richard Johnson of Sourcefire VRT) (CVE-2014-NNNN) #+ # MXit: # * Fix potential remote crash parsing a malformed emoticon response. # (Discovered by Yves Younan and Richard Johnson of Sourcefire VRT) diff --git a/libpurple/protocols/novell/nmevent.c b/libpurple/protocols/novell/nmevent.c --- a/libpurple/protocols/novell/nmevent.c +++ b/libpurple/protocols/novell/nmevent.c @@ -149,7 +149,7 @@ /* Read the conference guid */ rc = nm_read_uint32(conn, &size); - if (size == MAX_UINT32) return NMERR_PROTOCOL; + if (size > 1000) return NMERR_PROTOCOL; if (rc == NM_OK) { guid = g_new0(char, size + 1); @@ -164,7 +164,7 @@ /* Read the message text */ if (rc == NM_OK) { rc = nm_read_uint32(conn, &size); - if (size == MAX_UINT32) return NMERR_PROTOCOL; + if (size > 100000) return NMERR_PROTOCOL; if (rc == NM_OK) { msg = g_new0(char, size + 1); @@ -270,7 +270,7 @@ /* Read the conference guid */ rc = nm_read_uint32(conn, &size); - if (size == MAX_UINT32) return NMERR_PROTOCOL; + if (size > 1000) return NMERR_PROTOCOL; if (rc == NM_OK) { guid = g_new0(char, size + 1); @@ -280,7 +280,7 @@ /* Read the the message */ if (rc == NM_OK) { rc = nm_read_uint32(conn, &size); - if (size == MAX_UINT32) return NMERR_PROTOCOL; + if (size > 100000) return NMERR_PROTOCOL; if (rc == NM_OK) { msg = g_new0(char, size + 1); @@ -349,7 +349,7 @@ /* Read the conference guid */ rc = nm_read_uint32(conn, &size); - if (size == MAX_UINT32) return NMERR_PROTOCOL; + if (size > 1000) return NMERR_PROTOCOL; if (rc == NM_OK) { guid = g_new0(char, size + 1); @@ -401,7 +401,7 @@ /* Read the conference guid */ rc = nm_read_uint32(conn, &size); - if (size == MAX_UINT32) return NMERR_PROTOCOL; + if (size > 1000) return NMERR_PROTOCOL; if (rc == NM_OK) { guid = g_new0(char, size + 1); @@ -440,7 +440,7 @@ /* Read the conference guid */ rc = nm_read_uint32(conn, &size); - if (size == MAX_UINT32) return NMERR_PROTOCOL; + if (size > 1000) return NMERR_PROTOCOL; if (rc == NM_OK) { guid = g_new0(char, size + 1); @@ -490,7 +490,7 @@ /* Read the conference guid */ rc = nm_read_uint32(conn, &size); - if (size == MAX_UINT32) return NMERR_PROTOCOL; + if (size > 1000) return NMERR_PROTOCOL; if (rc == NM_OK) { guid = g_new0(char, size + 1); @@ -530,7 +530,7 @@ /* Read the conference guid */ rc = nm_read_uint32(conn, &size); - if (size == MAX_UINT32) return NMERR_PROTOCOL; + if (size > 1000) return NMERR_PROTOCOL; if (rc == NM_OK) { guid = g_new0(char, size + 1); @@ -589,7 +589,7 @@ /* Read the conference guid */ rc = nm_read_uint32(conn, &size); - if (size == MAX_UINT32) return NMERR_PROTOCOL; + if (size > 1000) return NMERR_PROTOCOL; if (rc == NM_OK) { guid = g_new0(char, size + 1); @@ -632,7 +632,7 @@ /* Read the status text */ rc = nm_read_uint32(conn, &size); - if (size == MAX_UINT32) return NMERR_PROTOCOL; + if (size > 10000) return NMERR_PROTOCOL; if (rc == NM_OK) { text = g_new0(char, size + 1); @@ -670,7 +670,7 @@ /* Read the conference guid */ rc = nm_read_uint32(conn, &size); - if (size == MAX_UINT32) return NMERR_PROTOCOL; + if (size > 1000) return NMERR_PROTOCOL; if (rc == NM_OK) { guid = g_new0(char, size + 1); @@ -833,7 +833,10 @@ /* Read the event source */ rc = nm_read_uint32(conn, &size); if (rc == NM_OK) { - if (size > 0) { + if (size > 1000000) { + /* Size is larger than our 1MB sanity check. Ignore it. */ + rc = NMERR_PROTOCOL; + } else { source = g_new0(char, size); rc = nm_read_all(conn, source, size); debian/patches/CVE-2016-2376.patch0000664000000000000000000000201212741157522013243 0ustar # HG changeset patch # User Andrew Victor # Date 1464900062 18000 # Branch release-2.x.y # Node ID 19f89eda85875507ee37c9430bb8798f0afa5c0b # Parent 5e5e84e8a79890e580158ac2eae073d7394e93b7 Fix TALOS-CAN-0118 Index: pidgin-2.10.12/libpurple/protocols/mxit/protocol.c =================================================================== --- pidgin-2.10.12.orig/libpurple/protocols/mxit/protocol.c 2016-07-12 08:15:11.739324694 -0400 +++ pidgin-2.10.12/libpurple/protocols/mxit/protocol.c 2016-07-12 08:15:11.735324648 -0400 @@ -2841,8 +2841,9 @@ /* the end of the length record found */ session->rx_lbuf[session->rx_i] = '\0'; session->rx_res = atoi( &session->rx_lbuf[3] ); - if ( session->rx_res > CP_MAX_PACKET ) { + if ( ( session->rx_res <= 0 ) || ( session->rx_res > CP_MAX_PACKET ) ) { purple_connection_error( session->con, _( "A connection error occurred to MXit. (read stage 0x03)" ) ); + return; } session->rx_state = RX_STATE_DATA; session->rx_i = 0; debian/patches/11_buddy_list_really_show.patch0000664000000000000000000000236412274732607016732 0ustar === modified file 'pidgin/gtkblist.c' Index: pidgin-2.10.4/pidgin/gtkblist.c =================================================================== --- pidgin-2.10.4.orig/pidgin/gtkblist.c 2012-05-07 15:37:25.000000000 +1200 +++ pidgin-2.10.4/pidgin/gtkblist.c 2012-05-28 17:31:17.349363076 +1200 @@ -6907,6 +6907,12 @@ purple_prefs_disconnect_by_handle(pidgin_blist_get_handle()); } +static gboolean keep_above_idle_cb (gpointer data) +{ + gtk_window_set_keep_above(GTK_WINDOW(data), FALSE); + return FALSE; +} + static void pidgin_blist_set_visible(PurpleBuddyList *list, gboolean show) { if (!(gtkblist && gtkblist->window)) @@ -6916,7 +6922,11 @@ if(!PIDGIN_WINDOW_ICONIFIED(gtkblist->window) && !GTK_WIDGET_VISIBLE(gtkblist->window)) purple_signal_emit(pidgin_blist_get_handle(), "gtkblist-unhiding", gtkblist); pidgin_blist_restore_position(); + gtk_widget_show(GTK_WIDGET(gtkblist->window)); + gtk_window_deiconify(GTK_WINDOW(gtkblist->window)); gtk_window_present(GTK_WINDOW(gtkblist->window)); + gtk_window_set_keep_above(GTK_WINDOW(gtkblist->window), TRUE); + g_idle_add(keep_above_idle_cb, gtkblist->window); } else { if(visibility_manager_count) { purple_signal_emit(pidgin_blist_get_handle(), "gtkblist-hiding", gtkblist); debian/patches/13_sounds_and_timers.patch0000664000000000000000000000157012274732607015700 0ustar === modified file 'pidgin/gtksound.c' Index: pidgin-2.10.2/pidgin/gtksound.c =================================================================== --- pidgin-2.10.2.orig/pidgin/gtksound.c 2012-03-14 06:28:02.000000000 +0100 +++ pidgin-2.10.2/pidgin/gtksound.c 2012-03-16 12:33:57.148065833 +0100 @@ -228,7 +228,7 @@ } /* - * We mute sounds for the 10 seconds after you log in so that + * We mute sounds for the 15 seconds after you log in so that * you don't get flooded with sounds when the blist shows all * your buddies logging in. */ @@ -238,7 +238,7 @@ if (mute_login_sounds_timeout != 0) purple_timeout_remove(mute_login_sounds_timeout); mute_login_sounds = TRUE; - mute_login_sounds_timeout = purple_timeout_add_seconds(10, unmute_login_sounds_cb, NULL); + mute_login_sounds_timeout = purple_timeout_add_seconds(15, unmute_login_sounds_cb, NULL); } const char * debian/patches/10_docklet_default_off.patch0000664000000000000000000000132112274732607016132 0ustar === modified file 'pidgin/gtkdocklet.c' Index: pidgin-2.10.2/pidgin/gtkdocklet.c =================================================================== --- pidgin-2.10.2.orig/pidgin/gtkdocklet.c 2012-03-14 06:28:02.000000000 +0100 +++ pidgin-2.10.2/pidgin/gtkdocklet.c 2012-03-16 12:33:53.572065697 +0100 @@ -841,7 +841,7 @@ purple_prefs_add_none(PIDGIN_PREFS_ROOT "/docklet"); purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/docklet/blink", FALSE); - purple_prefs_add_string(PIDGIN_PREFS_ROOT "/docklet/show", "always"); + purple_prefs_add_string(PIDGIN_PREFS_ROOT "/docklet/show", "never"); purple_prefs_connect_callback(docklet_handle, PIDGIN_PREFS_ROOT "/docklet/show", docklet_show_pref_changed_cb, NULL); debian/patches/CVE-2016-2370.patch0000664000000000000000000003364112741157725013256 0ustar # HG changeset patch # User Andrew Victor # Date 1464978366 18000 # Branch release-2.x.y # Node ID fe0e01b2840740d9a07acf9a9788ec22e9dd120f # Parent bb5701f8ae79d6f6a1be7a99b256a8360436be98 Fix for TALOS-CAN-0138 diff --git a/libpurple/protocols/mxit/chunk.c b/libpurple/protocols/mxit/chunk.c --- a/libpurple/protocols/mxit/chunk.c +++ b/libpurple/protocols/mxit/chunk.c @@ -151,11 +151,15 @@ * Extract a single byte from the chunked data. * * @param chunkdata The chunked-data buffer + * @param chunklen The amount of data available in the buffer. * @param value The byte * @return The number of bytes extracted. */ -static int get_int8( const char* chunkdata, char* value ) +static int get_int8( const char* chunkdata, size_t chunklen, char* value ) { + if ( chunklen < sizeof( char ) ) + return 0; + *value = *chunkdata; return sizeof( char ); @@ -165,11 +169,15 @@ * Extract a 16-bit value from the chunked data. * * @param chunkdata The chunked-data buffer + * @param chunklen The amount of data available in the buffer. * @param value The 16-bit value * @return The number of bytes extracted */ -static int get_int16( const char* chunkdata, unsigned short* value ) +static int get_int16( const char* chunkdata, size_t chunklen, unsigned short* value ) { + if ( chunklen < sizeof( short ) ) + return 0; + *value = ntohs( *( (const short*) chunkdata ) ); /* host byte-order */ return sizeof( short ); @@ -179,11 +187,15 @@ * Extract a 32-bit value from the chunked data. * * @param chunkdata The chunked-data buffer + * @param chunklen The amount of data available in the buffer. * @param value The 32-bit value * @return The number of bytes extracted */ -static int get_int32( const char* chunkdata, unsigned int* value ) +static int get_int32( const char* chunkdata, size_t chunklen, unsigned int* value ) { + if ( chunklen < sizeof( int ) ) + return 0; + *value = ntohl( *( (const int*) chunkdata ) ); /* host byte-order */ return sizeof( int ); @@ -194,11 +206,15 @@ * Extract a 64-bit value from the chunked data. * * @param chunkdata The chunked-data buffer + * @param chunklen The amount of data available in the buffer. * @param value The 64-bit value * @return The number of bytes extracted */ -static int get_int64( const char* chunkdata, int64_t* value ) +static int get_int64( const char* chunkdata, size_t chunklen, int64_t* value ) { + if ( chunklen < sizeof( int64_t ) ) + return 0; + *value = SWAP_64( *( (const int64_t*) chunkdata ) ); /* host byte-order */ return sizeof( int64_t ); @@ -209,12 +225,16 @@ * Copy a block of data from the chunked data. * * @param chunkdata The chunked-data buffer + * @param chunklen The amount of data available in the buffer. * @param dest Where to store the extract data * @param datalen The length of the data to extract * @return The number of bytes extracted */ -static int get_data( const char* chunkdata, char* dest, int datalen ) +static int get_data( const char* chunkdata, size_t chunklen, char* dest, size_t datalen ) { + if ( chunklen < datalen ) + return 0; + memcpy( dest, chunkdata, datalen ); return datalen; @@ -224,20 +244,25 @@ * Extract a UTF-8 encoded string from the chunked data. * * @param chunkdata The chunked-data buffer + * @param chunklen The amount of data available in the buffer. * @param str A pointer to extracted string. Must be g_free()'d. * @param maxstrlen Maximum size of destination buffer. * @return The number of bytes consumed */ -static int get_utf8_string( const char* chunkdata, char* str, int maxstrlen ) +static int get_utf8_string( const char* chunkdata, size_t chunklen, char* str, size_t maxstrlen ) { - int pos = 0; - unsigned short len; - int skip = 0; + size_t pos = 0; + unsigned short len = 0; + size_t skip = 0; /* string length [2 bytes] */ - pos += get_int16( &chunkdata[pos], &len ); + pos += get_int16( &chunkdata[pos], chunklen - pos, &len ); - if ( len > maxstrlen ) { + if ( ( len + pos ) > chunklen ) { + /* string length is longer than chunk size */ + return 0; + } + else if ( len > maxstrlen ) { /* possible buffer overflow */ purple_debug_error( MXIT_PLUGIN_ID, "Buffer overflow detected (get_utf8_string)\n" ); skip = len - maxstrlen; @@ -245,7 +270,7 @@ } /* string data */ - pos += get_data( &chunkdata[pos], str, len ); + pos += get_data( &chunkdata[pos], chunklen - pos, str, len ); str[len] = '\0'; /* terminate string */ return pos + skip; @@ -453,27 +478,27 @@ */ gboolean mxit_chunk_parse_offer( char* chunkdata, size_t datalen, struct offerfile_chunk* offer ) { - int pos = 0; + size_t pos = 0; purple_debug_info( MXIT_PLUGIN_ID, "mxit_chunk_parse_offer (%zu bytes)\n", datalen ); memset( offer, 0, sizeof( struct offerfile_chunk ) ); /* id [8 bytes] */ - pos += get_data( &chunkdata[pos], offer->fileid, 8); + pos += get_data( &chunkdata[pos], datalen - pos, offer->fileid, 8); /* from username [UTF-8] */ - pos += get_utf8_string( &chunkdata[pos], offer->username, sizeof( offer->username ) ); + pos += get_utf8_string( &chunkdata[pos], datalen - pos, offer->username, sizeof( offer->username ) ); mxit_strip_domain( offer->username ); /* file size [4 bytes] */ - pos += get_int32( &chunkdata[pos], &(offer->filesize) ); + pos += get_int32( &chunkdata[pos], datalen - pos, &(offer->filesize) ); /* filename [UTF-8] */ - pos += get_utf8_string( &chunkdata[pos], offer->filename, sizeof( offer->filename ) ); + pos += get_utf8_string( &chunkdata[pos], datalen - pos, offer->filename, sizeof( offer->filename ) ); /* mime type [UTF-8] */ - pos += get_utf8_string( &chunkdata[pos], offer->mimetype, sizeof( offer->mimetype ) ); + pos += get_utf8_string( &chunkdata[pos], datalen - pos, offer->mimetype, sizeof( offer->mimetype ) ); /* timestamp [8 bytes] */ /* not used by libPurple */ @@ -501,7 +526,7 @@ */ gboolean mxit_chunk_parse_get( char* chunkdata, size_t datalen, struct getfile_chunk* getfile ) { - int pos = 0; + size_t pos = 0; purple_debug_info( MXIT_PLUGIN_ID, "mxit_chunk_parse_file (%zu bytes)\n", datalen ); @@ -512,19 +537,24 @@ return FALSE; /* id [8 bytes] */ - pos += get_data( &chunkdata[pos], getfile->fileid, 8 ); + pos += get_data( &chunkdata[pos], datalen - pos, getfile->fileid, 8 ); /* offset [4 bytes] */ - pos += get_int32( &chunkdata[pos], &(getfile->offset) ); + pos += get_int32( &chunkdata[pos], datalen - pos, &(getfile->offset) ); /* file length [4 bytes] */ - pos += get_int32( &chunkdata[pos], &(getfile->length) ); + pos += get_int32( &chunkdata[pos], datalen - pos, &(getfile->length) ); /* crc [4 bytes] */ - pos += get_int32( &chunkdata[pos], &(getfile->crc) ); + pos += get_int32( &chunkdata[pos], datalen - pos, &(getfile->crc) ); + + /* check length does not exceed chunked data length */ + if ( getfile->length > datalen - pos ) + return FALSE; /* file data */ - getfile->data = &chunkdata[pos]; + if ( getfile->length > 0 ) + getfile->data = &chunkdata[pos]; return TRUE; } @@ -540,23 +570,28 @@ */ gboolean mxit_chunk_parse_splash( char* chunkdata, size_t datalen, struct splash_chunk* splash ) { - int pos = 0; + size_t pos = 0; purple_debug_info( MXIT_PLUGIN_ID, "mxit_chunk_parse_splash (%zu bytes)\n", datalen ); memset( splash, 0, sizeof( struct splash_chunk ) ); + /* ensure that the chunk size is atleast the minimum size for a "splash screen" chunk */ + if ( datalen < 6 ) + return FALSE; + /* anchor [1 byte] */ - pos += get_int8( &chunkdata[pos], &(splash->anchor) ); + pos += get_int8( &chunkdata[pos], datalen - pos, &(splash->anchor) ); /* time to show [1 byte] */ - pos += get_int8( &chunkdata[pos], &(splash->showtime) ); + pos += get_int8( &chunkdata[pos], datalen - pos, &(splash->showtime) ); /* background color [4 bytes] */ - pos += get_int32( &chunkdata[pos], &(splash->bgcolor) ); + pos += get_int32( &chunkdata[pos], datalen - pos, &(splash->bgcolor) ); /* file data */ - splash->data = &chunkdata[pos]; + if ( pos < datalen ) + splash->data = &chunkdata[pos]; /* data length */ splash->datalen = datalen - pos; @@ -575,38 +610,44 @@ */ gboolean mxit_chunk_parse_cr( char* chunkdata, size_t datalen, struct cr_chunk* cr ) { - int pos = 0; - unsigned int chunklen = 0; + size_t pos = 0; + unsigned int chunkslen = 0; purple_debug_info( MXIT_PLUGIN_ID, "mxit_chunk_parse_cr (%zu bytes)\n", datalen ); memset( cr, 0, sizeof( struct cr_chunk ) ); /* id [UTF-8] */ - pos += get_utf8_string( &chunkdata[pos], cr->id, sizeof( cr->id ) ); + pos += get_utf8_string( &chunkdata[pos], datalen - pos, cr->id, sizeof( cr->id ) ); /* handle [UTF-8] */ - pos += get_utf8_string( &chunkdata[pos], cr->handle, sizeof( cr->handle ) ); + pos += get_utf8_string( &chunkdata[pos], datalen - pos, cr->handle, sizeof( cr->handle ) ); /* operation [1 byte] */ - pos += get_int8( &chunkdata[pos], &(cr->operation) ); + pos += get_int8( &chunkdata[pos], datalen - pos, &(cr->operation) ); - /* chunk size [4 bytes] */ - pos += get_int32( &chunkdata[pos], &chunklen ); + /* total length of all the chunks that are included [4 bytes] */ + pos += get_int32( &chunkdata[pos], datalen - pos, &chunkslen ); + + /* ensure the chunks size does not exceed the data size */ + if ( pos + chunkslen > datalen ) + return FALSE; /* parse the resource chunks */ - while ( chunklen > 0 ) { - gchar* chunk = &chunkdata[pos]; + while ( chunkslen >= MXIT_CHUNK_HEADER_SIZE ) { + gchar* chunk = &chunkdata[pos]; + guint32 chunksize = chunk_length( chunk ); - /* start of chunk data */ - pos += MXIT_CHUNK_HEADER_SIZE; + /* check chunk size against length of received data */ + if ( pos + MXIT_CHUNK_HEADER_SIZE + chunksize > datalen ) + return FALSE; switch ( chunk_type( chunk ) ) { case CP_CHUNK_SPLASH : /* splash image */ { struct splash_chunk* splash = g_new0( struct splash_chunk, 1 ); - if ( mxit_chunk_parse_splash( &chunkdata[pos], chunk_length( chunk ), splash ) ) + if ( mxit_chunk_parse_splash( chunk_data( chunk ), chunksize, splash ) ) cr->resources = g_list_append( cr->resources, splash ); else g_free( splash ); @@ -624,8 +665,8 @@ } /* skip over data to next resource chunk */ - pos += chunk_length( chunk ); - chunklen -= ( MXIT_CHUNK_HEADER_SIZE + chunk_length( chunk ) ); + pos += MXIT_CHUNK_HEADER_SIZE + chunksize; + chunkslen -= ( MXIT_CHUNK_HEADER_SIZE + chunksize ); } return TRUE; @@ -642,7 +683,7 @@ */ gboolean mxit_chunk_parse_sendfile( char* chunkdata, size_t datalen, struct sendfile_chunk* sendfile ) { - int pos = 0; + size_t pos = 0; unsigned short entries = 0; purple_debug_info( MXIT_PLUGIN_ID, "mxit_chunk_parse_sendfile (%zu bytes)\n", datalen ); @@ -650,19 +691,19 @@ memset( sendfile, 0, sizeof( struct sendfile_chunk ) ); /* number of entries [2 bytes] */ - pos += get_int16( &chunkdata[pos], &entries ); + pos += get_int16( &chunkdata[pos], datalen - pos, &entries ); if ( entries < 1 ) /* no data */ return FALSE; /* contactAddress [UTF-8 string] */ - pos += get_utf8_string( &chunkdata[pos], sendfile->username, sizeof( sendfile->username ) ); + pos += get_utf8_string( &chunkdata[pos], datalen - pos, sendfile->username, sizeof( sendfile->username ) ); /* status [4 bytes] */ - pos += get_int32( &chunkdata[pos], &(sendfile->status) ); + pos += get_int32( &chunkdata[pos], datalen - pos, &(sendfile->status) ); /* status message [UTF-8 string] */ - pos += get_utf8_string( &chunkdata[pos], sendfile->statusmsg, sizeof( sendfile->statusmsg ) ); + pos += get_utf8_string( &chunkdata[pos], datalen - pos, sendfile->statusmsg, sizeof( sendfile->statusmsg ) ); return TRUE; } @@ -678,7 +719,7 @@ */ gboolean mxit_chunk_parse_get_avatar( char* chunkdata, size_t datalen, struct getavatar_chunk* avatar ) { - int pos = 0; + size_t pos = 0; unsigned int numfiles = 0; purple_debug_info( MXIT_PLUGIN_ID, "mxit_chunk_parse_get_avatar (%zu bytes)\n", datalen ); @@ -686,37 +727,42 @@ memset( avatar, 0, sizeof( struct getavatar_chunk ) ); /* number of files [4 bytes] */ - pos += get_int32( &chunkdata[pos], &numfiles ); + pos += get_int32( &chunkdata[pos], datalen - pos, &numfiles ); if ( numfiles < 1 ) /* no data */ return FALSE; /* mxitId [UTF-8 string] */ - pos += get_utf8_string( &chunkdata[pos], avatar->mxitid, sizeof( avatar->mxitid ) ); + pos += get_utf8_string( &chunkdata[pos], datalen - pos, avatar->mxitid, sizeof( avatar->mxitid ) ); /* avatar id [UTF-8 string] */ - pos += get_utf8_string( &chunkdata[pos], avatar->avatarid, sizeof( avatar->avatarid ) ); + pos += get_utf8_string( &chunkdata[pos], datalen - pos, avatar->avatarid, sizeof( avatar->avatarid ) ); /* format [UTF-8 string] */ - pos += get_utf8_string( &chunkdata[pos], avatar->format, sizeof( avatar->format ) ); + pos += get_utf8_string( &chunkdata[pos], datalen - pos, avatar->format, sizeof( avatar->format ) ); /* bit depth [1 byte] */ - pos += get_int8( &chunkdata[pos], &(avatar->bitdepth) ); + pos += get_int8( &chunkdata[pos], datalen - pos, &(avatar->bitdepth) ); /* crc [4 bytes] */ - pos += get_int32( &chunkdata[pos], &(avatar->crc) ); + pos += get_int32( &chunkdata[pos], datalen - pos, &(avatar->crc) ); /* width [4 bytes] */ - pos += get_int32( &chunkdata[pos], &(avatar->width) ); + pos += get_int32( &chunkdata[pos], datalen - pos, &(avatar->width) ); /* height [4 bytes] */ - pos += get_int32( &chunkdata[pos], &(avatar->height) ); + pos += get_int32( &chunkdata[pos], datalen - pos, &(avatar->height) ); /* file length [4 bytes] */ - pos += get_int32( &chunkdata[pos], &(avatar->length) ); + pos += get_int32( &chunkdata[pos], datalen - pos, &(avatar->length) ); + + /* check length does not exceed chunked data length */ + if ( avatar->length > datalen - pos ) + return FALSE; /* file data */ - avatar->data = &chunkdata[pos]; + if ( avatar->length > 0 ) + avatar->data = &chunkdata[pos]; return TRUE; } debian/patches/CVE-2016-2378.patch0000664000000000000000000006076712741164013013263 0ustar Backport of: # HG changeset patch # User Andrew Victor # Date 1464973641 18000 # Branch release-2.x.y # Node ID 06278419c703cf6dd42a8add415480046ce9a05e # Parent 5e5e84e8a79890e580158ac2eae073d7394e93b7 Fix for TALOS-CAN-0120 Index: pidgin-2.10.9/libpurple/protocols/mxit/chunk.c =================================================================== --- pidgin-2.10.9.orig/libpurple/protocols/mxit/chunk.c 2016-07-12 08:50:39.728596977 -0400 +++ pidgin-2.10.9/libpurple/protocols/mxit/chunk.c 2016-07-12 08:51:22.645115448 -0400 @@ -168,7 +168,7 @@ * @param value The 16-bit value * @return The number of bytes extracted */ -static int get_int16( const char* chunkdata, short* value ) +static int get_int16( const char* chunkdata, unsigned short* value ) { *value = ntohs( *( (const short*) chunkdata ) ); /* host byte-order */ @@ -182,7 +182,7 @@ * @param value The 32-bit value * @return The number of bytes extracted */ -static int get_int32( const char* chunkdata, int* value ) +static int get_int32( const char* chunkdata, unsigned int* value ) { *value = ntohl( *( (const int*) chunkdata ) ); /* host byte-order */ @@ -230,9 +230,9 @@ */ static int get_utf8_string( const char* chunkdata, char* str, int maxstrlen ) { - int pos = 0; - short len; - int skip = 0; + int pos = 0; + unsigned short len; + int skip = 0; /* string length [2 bytes] */ pos += get_int16( &chunkdata[pos], &len ); @@ -263,9 +263,9 @@ * @param fileid A unique ID that identifies this file * @return The number of bytes encoded in the buffer */ -int mxit_chunk_create_reject( char* chunkdata, const char* fileid ) +size_t mxit_chunk_create_reject( char* chunkdata, const char* fileid ) { - int pos = 0; + size_t pos = 0; /* file id [8 bytes] */ pos += add_data( &chunkdata[pos], fileid, MXIT_CHUNK_FILEID_LEN ); @@ -289,9 +289,9 @@ * @param offset The start offset in the file * @return The number of bytes encoded in the buffer */ -int mxit_chunk_create_get( char* chunkdata, const char* fileid, int filesize, int offset ) +size_t mxit_chunk_create_get( char* chunkdata, const char* fileid, size_t filesize, size_t offset ) { - int pos = 0; + size_t pos = 0; /* file id [8 bytes] */ pos += add_data( &chunkdata[pos], fileid, MXIT_CHUNK_FILEID_LEN ); @@ -314,9 +314,9 @@ * @param status The status of the file transfer (see chunk.h) * @return The number of bytes encoded in the buffer */ -int mxit_chunk_create_received( char* chunkdata, const char* fileid, unsigned char status ) +size_t mxit_chunk_create_received( char* chunkdata, const char* fileid, unsigned char status ) { - int pos = 0; + size_t pos = 0; /* file id [8 bytes] */ pos += add_data( &chunkdata[pos], fileid, MXIT_CHUNK_FILEID_LEN ); @@ -338,9 +338,9 @@ * @param datalen The size of the file contents * @return The number of bytes encoded in the buffer */ -int mxit_chunk_create_senddirect( char* chunkdata, const char* username, const char* filename, const unsigned char* data, int datalen ) +size_t mxit_chunk_create_senddirect( char* chunkdata, const char* username, const char* filename, const unsigned char* data, size_t datalen ) { - int pos = 0; + size_t pos = 0; const char* mime = NULL; /* data length [4 bytes] */ @@ -380,10 +380,10 @@ * @param datalen The size of the avatar data * @return The number of bytes encoded in the buffer */ -int mxit_chunk_create_set_avatar( char* chunkdata, const unsigned char* data, int datalen ) +size_t mxit_chunk_create_set_avatar( char* chunkdata, const unsigned char* data, size_t datalen ) { const char fileid[MXIT_CHUNK_FILEID_LEN]; - int pos = 0; + size_t pos = 0; /* id [8 bytes] */ memset( &fileid, 0, sizeof( fileid ) ); /* set to 0 for file upload */ @@ -410,9 +410,9 @@ * @param avatarId The Id of the avatar image (as string) * @return The number of bytes encoded in the buffer */ -int mxit_chunk_create_get_avatar( char* chunkdata, const char* mxitId, const char* avatarId ) +size_t mxit_chunk_create_get_avatar( char* chunkdata, const char* mxitId, const char* avatarId ) { - int pos = 0; + size_t pos = 0; /* number of avatars [4 bytes] */ pos += add_int32( &chunkdata[pos], 1 ); @@ -450,11 +450,11 @@ * @param datalen The length of the chunked data * @param offer Decoded offerfile information */ -void mxit_chunk_parse_offer( char* chunkdata, int datalen, struct offerfile_chunk* offer ) +void mxit_chunk_parse_offer( char* chunkdata, size_t datalen, struct offerfile_chunk* offer ) { - int pos = 0; + int pos = 0; - purple_debug_info( MXIT_PLUGIN_ID, "mxit_chunk_parse_offer (%i bytes)\n", datalen ); + purple_debug_info( MXIT_PLUGIN_ID, "mxit_chunk_parse_offer (%zu bytes)\n", datalen ); /* id [8 bytes] */ pos += get_data( &chunkdata[pos], offer->fileid, 8); @@ -493,11 +493,11 @@ * @param datalen The length of the chunked data * @param offer Decoded getfile information */ -void mxit_chunk_parse_get( char* chunkdata, int datalen, struct getfile_chunk* getfile ) +void mxit_chunk_parse_get( char* chunkdata, size_t datalen, struct getfile_chunk* getfile ) { int pos = 0; - purple_debug_info( MXIT_PLUGIN_ID, "mxit_chunk_parse_file (%i bytes)\n", datalen ); + purple_debug_info( MXIT_PLUGIN_ID, "mxit_chunk_parse_file (%zu bytes)\n", datalen ); /* id [8 bytes] */ pos += get_data( &chunkdata[pos], getfile->fileid, 8 ); @@ -523,11 +523,11 @@ * @param datalen The length of the chunked data * @param splash Decoded splash image information */ -static void mxit_chunk_parse_splash( char* chunkdata, int datalen, struct splash_chunk* splash ) +static void mxit_chunk_parse_splash( char* chunkdata, size_t datalen, struct splash_chunk* splash ) { int pos = 0; - purple_debug_info( MXIT_PLUGIN_ID, "mxit_chunk_parse_splash (%i bytes)\n", datalen ); + purple_debug_info( MXIT_PLUGIN_ID, "mxit_chunk_parse_splash (%zu bytes)\n", datalen ); /* anchor [1 byte] */ pos += get_int8( &chunkdata[pos], &(splash->anchor) ); @@ -553,12 +553,12 @@ * @param datalen The length of the chunked data * @param offer Decoded custom resource */ -void mxit_chunk_parse_cr( char* chunkdata, int datalen, struct cr_chunk* cr ) +void mxit_chunk_parse_cr( char* chunkdata, size_t datalen, struct cr_chunk* cr ) { - int pos = 0; - int chunklen = 0; + int pos = 0; + unsigned int chunklen = 0; - purple_debug_info( MXIT_PLUGIN_ID, "mxit_chunk_parse_cr (%i bytes)\n", datalen ); + purple_debug_info( MXIT_PLUGIN_ID, "mxit_chunk_parse_cr (%zu bytes)\n", datalen ); /* id [UTF-8] */ pos += get_utf8_string( &chunkdata[pos], cr->id, sizeof( cr->id ) ); @@ -614,12 +614,12 @@ * @param datalen The length of the chunked data * @param sendfile Decoded sendfile information */ -void mxit_chunk_parse_sendfile( char* chunkdata, int datalen, struct sendfile_chunk* sendfile ) +void mxit_chunk_parse_sendfile( char* chunkdata, size_t datalen, struct sendfile_chunk* sendfile ) { - int pos = 0; - short entries = 0; + int pos = 0; + unsigned short entries = 0; - purple_debug_info( MXIT_PLUGIN_ID, "mxit_chunk_parse_sendfile (%i bytes)\n", datalen ); + purple_debug_info( MXIT_PLUGIN_ID, "mxit_chunk_parse_sendfile (%zu bytes)\n", datalen ); /* number of entries [2 bytes] */ pos += get_int16( &chunkdata[pos], &entries ); @@ -645,12 +645,12 @@ * @param datalen The length of the chunked data * @param avatar Decoded avatar information */ -void mxit_chunk_parse_get_avatar( char* chunkdata, int datalen, struct getavatar_chunk* avatar ) +void mxit_chunk_parse_get_avatar( char* chunkdata, size_t datalen, struct getavatar_chunk* avatar ) { - int pos = 0; - int numfiles = 0; + int pos = 0; + unsigned int numfiles = 0; - purple_debug_info( MXIT_PLUGIN_ID, "mxit_chunk_parse_get_avatar (%i bytes)\n", datalen ); + purple_debug_info( MXIT_PLUGIN_ID, "mxit_chunk_parse_get_avatar (%zu bytes)\n", datalen ); /* number of files [4 bytes] */ pos += get_int32( &chunkdata[pos], &numfiles ); Index: pidgin-2.10.9/libpurple/protocols/mxit/chunk.h =================================================================== --- pidgin-2.10.9.orig/libpurple/protocols/mxit/chunk.h 2016-07-12 08:50:39.728596977 -0400 +++ pidgin-2.10.9/libpurple/protocols/mxit/chunk.h 2016-07-12 08:50:39.724596929 -0400 @@ -103,22 +103,22 @@ * Offer File chunk (6). */ struct offerfile_chunk { - char fileid[MXIT_CHUNK_FILEID_LEN]; - char username[MXIT_CP_MAX_JID_LEN + 1]; - int filesize; - char filename[FILENAME_MAX]; - char mimetype[64]; + char fileid[MXIT_CHUNK_FILEID_LEN]; + char username[MXIT_CP_MAX_JID_LEN + 1]; + unsigned int filesize; + char filename[FILENAME_MAX]; + char mimetype[64]; }; /* * Get File chunk (8) response. */ struct getfile_chunk { - char fileid[MXIT_CHUNK_FILEID_LEN]; - int offset; - int length; - int crc; - char* data; + char fileid[MXIT_CHUNK_FILEID_LEN]; + unsigned int offset; + unsigned int length; + unsigned int crc; + char* data; }; /* @@ -135,11 +135,11 @@ * Splash Image chunk (2) */ struct splash_chunk { - char anchor; - char showtime; - int bgcolor; - char* data; - int datalen; + char anchor; + char showtime; + unsigned int bgcolor; + char* data; + unsigned int datalen; }; /* @@ -153,40 +153,40 @@ * Get Avatar chunk (14) response. */ struct getavatar_chunk { - char mxitid[50]; - char avatarid[64]; - char format[16]; - char bitdepth; - int crc; - int width; - int height; - int length; - char* data; + char mxitid[50]; + char avatarid[64]; + char format[16]; + char bitdepth; + unsigned int crc; + unsigned int width; + unsigned int height; + unsigned int length; + char* data; }; /* * Send File Direct chunk (10) response. */ struct sendfile_chunk { - char username[MXIT_CP_MAX_JID_LEN + 1]; - int status; - char statusmsg[1024]; + char username[MXIT_CP_MAX_JID_LEN + 1]; + unsigned int status; + char statusmsg[1024]; }; /* Encode chunk */ -int mxit_chunk_create_senddirect( char* chunkdata, const char* username, const char* filename, const unsigned char* data, int datalen ); -int mxit_chunk_create_reject( char* chunkdata, const char* fileid ); -int mxit_chunk_create_get( char* chunkdata, const char* fileid, int filesize, int offset ); -int mxit_chunk_create_received( char* chunkdata, const char* fileid, unsigned char status ); -int mxit_chunk_create_set_avatar( char* chunkdata, const unsigned char* data, int datalen ); -int mxit_chunk_create_get_avatar( char* chunkdata, const char* mxitId, const char* avatarId ); +size_t mxit_chunk_create_senddirect( char* chunkdata, const char* username, const char* filename, const unsigned char* data, size_t datalen ); +size_t mxit_chunk_create_reject( char* chunkdata, const char* fileid ); +size_t mxit_chunk_create_get( char* chunkdata, const char* fileid, size_t filesize, size_t offset ); +size_t mxit_chunk_create_received( char* chunkdata, const char* fileid, unsigned char status ); +size_t mxit_chunk_create_set_avatar( char* chunkdata, const unsigned char* data, size_t datalen ); +size_t mxit_chunk_create_get_avatar( char* chunkdata, const char* mxitId, const char* avatarId ); /* Decode chunk */ -void mxit_chunk_parse_offer( char* chunkdata, int datalen, struct offerfile_chunk* offer ); -void mxit_chunk_parse_get( char* chunkdata, int datalen, struct getfile_chunk* getfile ); -void mxit_chunk_parse_cr( char* chunkdata, int datalen, struct cr_chunk* cr ); -void mxit_chunk_parse_sendfile( char* chunkdata, int datalen, struct sendfile_chunk* sendfile ); -void mxit_chunk_parse_get_avatar( char* chunkdata, int datalen, struct getavatar_chunk* avatar ); +void mxit_chunk_parse_offer( char* chunkdata, size_t datalen, struct offerfile_chunk* offer ); +void mxit_chunk_parse_get( char* chunkdata, size_t datalen, struct getfile_chunk* getfile ); +void mxit_chunk_parse_cr( char* chunkdata, size_t datalen, struct cr_chunk* cr ); +void mxit_chunk_parse_sendfile( char* chunkdata, size_t datalen, struct sendfile_chunk* sendfile ); +void mxit_chunk_parse_get_avatar( char* chunkdata, size_t datalen, struct getavatar_chunk* avatar ); #endif /* _MXIT_CHUNK_H_ */ Index: pidgin-2.10.9/libpurple/protocols/mxit/filexfer.c =================================================================== --- pidgin-2.10.9.orig/libpurple/protocols/mxit/filexfer.c 2016-07-12 08:50:39.728596977 -0400 +++ pidgin-2.10.9/libpurple/protocols/mxit/filexfer.c 2016-07-12 08:50:39.724596929 -0400 @@ -358,7 +358,7 @@ * @param filesize The size of the file being offered * @param fileid A unique ID that identifies this file */ -void mxit_xfer_rx_offer( struct MXitSession* session, const char* username, const char* filename, int filesize, const char* fileid ) +void mxit_xfer_rx_offer( struct MXitSession* session, const char* username, const char* filename, unsigned int filesize, const char* fileid ) { PurpleXfer* xfer = NULL; struct mxitxfer* mx = NULL; @@ -374,7 +374,7 @@ xfer->data = mx; purple_xfer_set_filename( xfer, filename ); - if( filesize > 0 ) + if ( filesize > 0 ) purple_xfer_set_size( xfer, filesize ); /* register file transfer callback functions */ @@ -430,7 +430,7 @@ * @param data The file data * @param datalen The size of the data */ -void mxit_xfer_rx_file( struct MXitSession* session, const char* fileid, const char* data, int datalen ) +void mxit_xfer_rx_file( struct MXitSession* session, const char* fileid, const char* data, unsigned int datalen ) { PurpleXfer* xfer = NULL; Index: pidgin-2.10.9/libpurple/protocols/mxit/filexfer.h =================================================================== --- pidgin-2.10.9.orig/libpurple/protocols/mxit/filexfer.h 2016-07-12 08:50:39.728596977 -0400 +++ pidgin-2.10.9/libpurple/protocols/mxit/filexfer.h 2016-07-12 08:50:39.724596929 -0400 @@ -43,8 +43,8 @@ PurpleXfer* mxit_xfer_new( PurpleConnection* gc, const char* who ); /* MXit Protocol callbacks */ -void mxit_xfer_rx_offer( struct MXitSession* session, const char* username, const char* filename, int filesize, const char* fileid ); -void mxit_xfer_rx_file( struct MXitSession* session, const char* fileid, const char* data, int datalen ); +void mxit_xfer_rx_offer( struct MXitSession* session, const char* username, const char* filename, unsigned int filesize, const char* fileid ); +void mxit_xfer_rx_file( struct MXitSession* session, const char* fileid, const char* data, unsigned int datalen ); #endif /* _MXIT_FILEXFER_H_ */ Index: pidgin-2.10.9/libpurple/protocols/mxit/protocol.c =================================================================== --- pidgin-2.10.9.orig/libpurple/protocols/mxit/protocol.c 2016-07-12 08:50:39.728596977 -0400 +++ pidgin-2.10.9/libpurple/protocols/mxit/protocol.c 2016-07-12 08:50:39.724596929 -0400 @@ -1236,14 +1236,14 @@ * @param buf The content of the file * @param buflen The length of the file contents */ -void mxit_send_file( struct MXitSession* session, const char* username, const char* filename, const unsigned char* buf, int buflen ) +void mxit_send_file( struct MXitSession* session, const char* username, const char* filename, const unsigned char* buf, size_t buflen ) { char data[CP_MAX_PACKET]; int datalen = 0; gchar* chunk; - int size; + size_t chunksize; - purple_debug_info( MXIT_PLUGIN_ID, "SENDING FILE '%s' of %i bytes to user '%s'\n", filename, buflen, username ); + purple_debug_info( MXIT_PLUGIN_ID, "SENDING FILE '%s' of %zu bytes to user '%s'\n", filename, buflen, username ); /* convert the packet to a byte stream */ datalen = g_snprintf( data, sizeof( data ), "ms=" ); @@ -1251,15 +1251,11 @@ /* map chunk header over data buffer */ chunk = &data[datalen]; - size = mxit_chunk_create_senddirect( chunk_data( chunk ), username, filename, buf, buflen ); - if ( size < 0 ) { - purple_debug_error( MXIT_PLUGIN_ID, "Error creating senddirect chunk (%i)\n", size ); - return; - } - + /* encode chunk */ + chunksize = mxit_chunk_create_senddirect( chunk_data( chunk ), username, filename, buf, buflen ); set_chunk_type( chunk, CP_CHUNK_DIRECT_SND ); - set_chunk_length( chunk, size ); - datalen += MXIT_CHUNK_HEADER_SIZE + size; + set_chunk_length( chunk, chunksize ); + datalen += MXIT_CHUNK_HEADER_SIZE + chunksize; /* send the byte stream to the mxit server */ mxit_queue_packet( session, data, datalen, CP_CMD_MEDIA ); @@ -1277,7 +1273,7 @@ char data[CP_MAX_PACKET]; int datalen = 0; gchar* chunk; - int size; + size_t chunksize; purple_debug_info( MXIT_PLUGIN_ID, "mxit_send_file_reject\n" ); @@ -1287,15 +1283,11 @@ /* map chunk header over data buffer */ chunk = &data[datalen]; - size = mxit_chunk_create_reject( chunk_data( chunk ), fileid ); - if ( size < 0 ) { - purple_debug_error( MXIT_PLUGIN_ID, "Error creating reject chunk (%i)\n", size ); - return; - } - + /* encode chunk */ + chunksize = mxit_chunk_create_reject( chunk_data( chunk ), fileid ); set_chunk_type( chunk, CP_CHUNK_REJECT ); - set_chunk_length( chunk, size ); - datalen += MXIT_CHUNK_HEADER_SIZE + size; + set_chunk_length( chunk, chunksize ); + datalen += MXIT_CHUNK_HEADER_SIZE + chunksize; /* send the byte stream to the mxit server */ mxit_queue_packet( session, data, datalen, CP_CMD_MEDIA ); @@ -1310,12 +1302,12 @@ * @param filesize The number of bytes to retrieve * @param offset Offset in file at which to start retrieving */ -void mxit_send_file_accept( struct MXitSession* session, const char* fileid, int filesize, int offset ) +void mxit_send_file_accept( struct MXitSession* session, const char* fileid, size_t filesize, size_t offset ) { char data[CP_MAX_PACKET]; int datalen = 0; gchar* chunk; - int size; + size_t chunksize; purple_debug_info( MXIT_PLUGIN_ID, "mxit_send_file_accept\n" ); @@ -1325,15 +1317,11 @@ /* map chunk header over data buffer */ chunk = &data[datalen]; - size = mxit_chunk_create_get( chunk_data(chunk), fileid, filesize, offset ); - if ( size < 0 ) { - purple_debug_error( MXIT_PLUGIN_ID, "Error creating getfile chunk (%i)\n", size ); - return; - } - + /* encode chunk */ + chunksize = mxit_chunk_create_get( chunk_data(chunk), fileid, filesize, offset ); set_chunk_type( chunk, CP_CHUNK_GET ); - set_chunk_length( chunk, size ); - datalen += MXIT_CHUNK_HEADER_SIZE + size; + set_chunk_length( chunk, chunksize ); + datalen += MXIT_CHUNK_HEADER_SIZE + chunksize; /* send the byte stream to the mxit server */ mxit_queue_packet( session, data, datalen, CP_CMD_MEDIA ); @@ -1351,7 +1339,7 @@ char data[CP_MAX_PACKET]; int datalen = 0; gchar* chunk; - int size; + size_t chunksize; purple_debug_info( MXIT_PLUGIN_ID, "mxit_send_file_received\n" ); @@ -1361,15 +1349,11 @@ /* map chunk header over data buffer */ chunk = &data[datalen]; - size = mxit_chunk_create_received( chunk_data(chunk), fileid, status ); - if ( size < 0 ) { - purple_debug_error( MXIT_PLUGIN_ID, "Error creating received chunk (%i)\n", size ); - return; - } - + /* encode chunk */ + chunksize = mxit_chunk_create_received( chunk_data(chunk), fileid, status ); set_chunk_type( chunk, CP_CHUNK_RECEIVED ); - set_chunk_length( chunk, size ); - datalen += MXIT_CHUNK_HEADER_SIZE + size; + set_chunk_length( chunk, chunksize ); + datalen += MXIT_CHUNK_HEADER_SIZE + chunksize; /* send the byte stream to the mxit server */ mxit_queue_packet( session, data, datalen, CP_CMD_MEDIA ); @@ -1383,14 +1367,14 @@ * @param data The avatar data * @param buflen The length of the avatar data */ -void mxit_set_avatar( struct MXitSession* session, const unsigned char* avatar, int avatarlen ) +void mxit_set_avatar( struct MXitSession* session, const unsigned char* avatar, size_t avatarlen ) { char data[CP_MAX_PACKET]; int datalen = 0; gchar* chunk; - int size; + size_t chunksize; - purple_debug_info( MXIT_PLUGIN_ID, "mxit_set_avatar: %i bytes\n", avatarlen ); + purple_debug_info( MXIT_PLUGIN_ID, "mxit_set_avatar: %zu bytes\n", avatarlen ); /* convert the packet to a byte stream */ datalen = g_snprintf( data, sizeof( data ), "ms=" ); @@ -1398,15 +1382,11 @@ /* map chunk header over data buffer */ chunk = &data[datalen]; - size = mxit_chunk_create_set_avatar( chunk_data(chunk), avatar, avatarlen ); - if ( size < 0 ) { - purple_debug_error( MXIT_PLUGIN_ID, "Error creating set avatar chunk (%i)\n", size ); - return; - } - + /* encode chunk */ + chunksize = mxit_chunk_create_set_avatar( chunk_data(chunk), avatar, avatarlen ); set_chunk_type( chunk, CP_CHUNK_SET_AVATAR ); - set_chunk_length( chunk, size ); - datalen += MXIT_CHUNK_HEADER_SIZE + size; + set_chunk_length( chunk, chunksize ); + datalen += MXIT_CHUNK_HEADER_SIZE + chunksize; /* send the byte stream to the mxit server */ mxit_queue_packet( session, data, datalen, CP_CMD_MEDIA ); @@ -1427,7 +1407,7 @@ char data[CP_MAX_PACKET]; int datalen = 0; gchar* chunk; - int size; + size_t chunksize; purple_debug_info( MXIT_PLUGIN_ID, "mxit_get_avatar: %s\n", mxitId ); @@ -1437,15 +1417,11 @@ /* map chunk header over data buffer */ chunk = &data[datalen]; - size = mxit_chunk_create_get_avatar( chunk_data(chunk), mxitId, avatarId ); - if ( size < 0 ) { - purple_debug_error( MXIT_PLUGIN_ID, "Error creating get avatar chunk (%i)\n", size ); - return; - } - + /* encode chunk */ + chunksize = mxit_chunk_create_get_avatar( chunk_data(chunk), mxitId, avatarId ); set_chunk_type( chunk, CP_CHUNK_GET_AVATAR ); - set_chunk_length( chunk, size ); - datalen += MXIT_CHUNK_HEADER_SIZE + size; + set_chunk_length( chunk, chunksize ); + datalen += MXIT_CHUNK_HEADER_SIZE + chunksize; /* send the byte stream to the mxit server */ mxit_queue_packet( session, data, datalen, CP_CMD_MEDIA ); Index: pidgin-2.10.9/libpurple/protocols/mxit/protocol.h =================================================================== --- pidgin-2.10.9.orig/libpurple/protocols/mxit/protocol.h 2016-07-12 08:50:39.728596977 -0400 +++ pidgin-2.10.9/libpurple/protocols/mxit/protocol.h 2016-07-12 08:50:39.724596929 -0400 @@ -332,11 +332,11 @@ void mxit_send_splashclick( struct MXitSession* session, const char* splashid ); void mxit_send_msgevent( struct MXitSession* session, const char* to, const char* id, int event); -void mxit_send_file( struct MXitSession* session, const char* username, const char* filename, const unsigned char* buf, int buflen ); +void mxit_send_file( struct MXitSession* session, const char* username, const char* filename, const unsigned char* buf, size_t buflen ); void mxit_send_file_reject( struct MXitSession* session, const char* fileid ); -void mxit_send_file_accept( struct MXitSession* session, const char* fileid, int filesize, int offset ); +void mxit_send_file_accept( struct MXitSession* session, const char* fileid, size_t filesize, size_t offset ); void mxit_send_file_received( struct MXitSession* session, const char* fileid, short status ); -void mxit_set_avatar( struct MXitSession* session, const unsigned char* avatar, int avatarlen ); +void mxit_set_avatar( struct MXitSession* session, const unsigned char* avatar, size_t avatarlen ); void mxit_get_avatar( struct MXitSession* session, const char* mxitId, const char* avatarId ); void mxit_send_groupchat_create( struct MXitSession* session, const char* groupname, int nr_usernames, const char* usernames[] ); Index: pidgin-2.10.9/libpurple/protocols/mxit/splashscreen.c =================================================================== --- pidgin-2.10.9.orig/libpurple/protocols/mxit/splashscreen.c 2016-07-12 08:50:39.728596977 -0400 +++ pidgin-2.10.9/libpurple/protocols/mxit/splashscreen.c 2016-07-12 08:50:39.728596977 -0400 @@ -112,7 +112,7 @@ * @param data Splash-screen image data (PNG format) * @param datalen Splash-screen image data size */ -void splash_update(struct MXitSession* session, const char* splashId, const char* data, int datalen, gboolean clickable) +void splash_update(struct MXitSession* session, const char* splashId, const char* data, unsigned int datalen, gboolean clickable) { char* dir; char* filename; Index: pidgin-2.10.9/libpurple/protocols/mxit/splashscreen.h =================================================================== --- pidgin-2.10.9.orig/libpurple/protocols/mxit/splashscreen.h 2016-07-12 08:50:39.728596977 -0400 +++ pidgin-2.10.9/libpurple/protocols/mxit/splashscreen.h 2016-07-12 08:50:39.728596977 -0400 @@ -44,7 +44,7 @@ /* * Save a new splash-screen. */ -void splash_update(struct MXitSession* session, const char* splashId, const char* data, int datalen, gboolean clickable); +void splash_update(struct MXitSession* session, const char* splashId, const char* data, unsigned int datalen, gboolean clickable); /* * Remove the stored splash-screen (if it exists). debian/patches/xmessagingmenu.patch0000664000000000000000000000152212321276267014702 0ustar --- pidgin.desktop.in | 1 + 1 file changed, 1 insertion(+) Index: pidgin-2.10.9/pidgin.desktop.in =================================================================== --- pidgin-2.10.9.orig/pidgin.desktop.in 2014-02-02 22:30:51.000000000 +0100 +++ pidgin-2.10.9/pidgin.desktop.in 2014-04-09 18:55:02.000000000 +0200 @@ -8,4 +8,5 @@ Terminal=false Type=Application Categories=Network;InstantMessaging; +X-MessagingMenu-UsesChatSection=true Index: pidgin-2.10.9/pidgin.desktop.in.in =================================================================== --- pidgin-2.10.9.orig/pidgin.desktop.in.in 2014-02-02 22:29:20.000000000 +0100 +++ pidgin-2.10.9/pidgin.desktop.in.in 2014-04-09 19:00:33.447381461 +0200 @@ -9,3 +9,5 @@ Type=Application Categories=Network;InstantMessaging; @USES_MM_CHAT_SECTION@ +X-MessagingMenu-UsesChatSection=true + debian/patches/CVE-2016-2375.patch0000664000000000000000000000366012741157565013263 0ustar # HG changeset patch # User Andrew Victor # Date 1464973294 18000 # Branch release-2.x.y # Node ID b786e9814536aa96a3f7c8674d588b04d11c57a7 # Parent 5e5e84e8a79890e580158ac2eae073d7394e93b7 Fix for TALOS-CAN-0143 Index: pidgin-2.10.12/libpurple/protocols/mxit/protocol.c =================================================================== --- pidgin-2.10.12.orig/libpurple/protocols/mxit/protocol.c 2016-07-12 08:15:47.067735194 -0400 +++ pidgin-2.10.12/libpurple/protocols/mxit/protocol.c 2016-07-12 08:15:47.067735194 -0400 @@ -2034,6 +2034,12 @@ * userid \1 contactType \1 value0 \1 value1 ... valueN */ + /* ensure that record[0] contacts the minumum number of fields */ + if ( records[0]->fcount < 4 ) { + purple_debug_error( MXIT_PLUGIN_ID, "Insufficient number of fields in suggest contacts response. fields=%i", records[0]->fcount ); + return; + } + /* the type of results */ searchType = atoi( records[0]->fields[0]->data ); @@ -2043,11 +2049,24 @@ /* set the count for attributes */ count = atoi( records[0]->fields[3]->data ); + /* ensure that record[0] contains the specified number of attributes */ + if ( records[0]->fcount < ( 4 + count ) ) { + purple_debug_error( MXIT_PLUGIN_ID, "Insufficient number of fields in suggest contacts response. fields=%i attributes=%i", records[0]->fcount, count ); + return; + } + for ( i = 1; i < rcount; i ++ ) { struct record* rec = records[i]; struct MXitProfile* profile = g_new0( struct MXitProfile, 1 ); int j; + /* ensure that each result contains the specified number of attributes */ + if ( rec->fcount != ( 2 + count ) ) { + purple_debug_error( MXIT_PLUGIN_ID, "Insufficient number of fields in suggest contacts response. fields=%i attributes=%i", rec->fcount, count ); + g_free( profile ); + continue; + } + g_strlcpy( profile->userid, rec->fields[0]->data, sizeof( profile->userid ) ); // TODO: ContactType - User or Service debian/patches/CVE-2014-3694.patch0000664000000000000000000004253612423463143013260 0ustar Backport of: # HG changeset patch # User Mark Doliner # Date 1413181738 25200 # Node ID 2e4475087f048f1a1c473d5136149d8443ded85e # Parent db951baf06ac796493dea48fc7dbe987cc379ec4 Fix basic constraints checking for both our SSL plugins. This was reported to our private security@pidgin.im mailing list by an anonymous person and Jacob Appelbaum of the Tor project. The general problem is described by Moxie Marlinspike here: http://www.thoughtcrime.org/ie-ssl-chain.txt Turns out BOTH of our SSL/TLS plugins are vulnerable to this. It allows a malicious man-in-the-middle to impersonate an https server accessed by Pidgin. The fix for this was difficult. We'd really like to just delegate all cert validate to the NSS or GnuTLS plugins and not do any of it ourselves, because they're experts and we're not. And this is essentially the change we made for NSS. However, this was difficult for GnuTLS because we need a context that we don't have access to in the right function. We could have done it, but it would have been a little hacky. So for our GnuTLS plugin we added basic constraints checking ourselves. In Pidgin 3.0.0 would should clean this up and remove a lot of internal cert validation and ALWAYS delegate to the SSL/TLS library. The NSS parts of this patch were written by Kai Engert and Daniel Atallah. I wrote the GnuTLS parts. We'll be requesting a CVE number for this. Also, my thanks to Jacob Appelbaum and Moxie Marlinspike for their efforts over many years to improve the security of the software that we use on a daily basis. They are both stand-out citizens who have made contributions to protect the privacy of all internet users. Thanks, guys! #diff --git a/COPYRIGHT b/COPYRIGHT #--- a/COPYRIGHT #+++ b/COPYRIGHT #@@ -161,6 +161,7 @@ # Markus Elfring # Nelson Elhage # Ignacio J. Elia #+Kai Engert # Brian Enigma # Mattias Eriksson # Pat Erley #diff --git a/ChangeLog b/ChangeLog #--- a/ChangeLog #+++ b/ChangeLog #@@ -1,9 +1,17 @@ # Pidgin and Finch: The Pimpin' Penguin IM Clients That're Good for the Soul # #-version 2.10.10 (?/?/?): #+version 2.10.10 (10/22/14): # General: #- * Allow and prefer TLS 1.2 and 1.1 when using libnss. (Elrond and #- Ashish Gupta) (#15909) #+ * Check the basic constraints extension when validating SSL/TLS #+ certificates. This fixes a security hole that allowed a malicious #+ man-in-the-middle to impersonate an IM server or any other https #+ endpoint. This affected both the NSS and GnuTLS plugins. (Discovered #+ by an anonymous person and Jacob Appelbaum of the Tor Project, with #+ thanks to Moxie Marlinspike for first publishing about this type of #+ vulnerability. Thanks to Kai Engert for guidance and for some of the #+ NSS changes). #+ * Allow and prefer TLS 1.2 and 1.1 when using the NSS plugin for SSL. #+ (Elrond and Ashish Gupta) (#15909) # # libpurple3 compatibility: # * Encrypted account passwords are preserved until the new one is set. Index: pidgin-2.10.9/libpurple/certificate.c =================================================================== --- pidgin-2.10.9.orig/libpurple/certificate.c 2014-10-27 11:28:05.247836306 -0400 +++ pidgin-2.10.9/libpurple/certificate.c 2014-10-27 11:28:05.239836227 -0400 @@ -41,50 +41,6 @@ /** List of registered Pools */ static GList *cert_pools = NULL; -/* - * TODO: Merge this with PurpleCertificateVerificationStatus for 3.0.0 */ -typedef enum { - PURPLE_CERTIFICATE_UNKNOWN_ERROR = -1, - - /* Not an error */ - PURPLE_CERTIFICATE_NO_PROBLEMS = 0, - - /* Non-fatal */ - PURPLE_CERTIFICATE_NON_FATALS_MASK = 0x0000FFFF, - - /* The certificate is self-signed. */ - PURPLE_CERTIFICATE_SELF_SIGNED = 0x01, - - /* The CA is not in libpurple's pool of certificates. */ - PURPLE_CERTIFICATE_CA_UNKNOWN = 0x02, - - /* The current time is before the certificate's specified - * activation time. - */ - PURPLE_CERTIFICATE_NOT_ACTIVATED = 0x04, - - /* The current time is after the certificate's specified expiration time */ - PURPLE_CERTIFICATE_EXPIRED = 0x08, - - /* The certificate's subject name doesn't match the expected */ - PURPLE_CERTIFICATE_NAME_MISMATCH = 0x10, - - /* No CA pool was found. This shouldn't happen... */ - PURPLE_CERTIFICATE_NO_CA_POOL = 0x20, - - /* Fatal */ - PURPLE_CERTIFICATE_FATALS_MASK = 0xFFFF0000, - - /* The signature chain could not be validated. Due to limitations in the - * the current API, this also indicates one of the CA certificates in the - * chain is expired (or not yet activated). FIXME 3.0.0 */ - PURPLE_CERTIFICATE_INVALID_CHAIN = 0x10000, - - /* The signature has been revoked. */ - PURPLE_CERTIFICATE_REVOKED = 0x20000, - - PURPLE_CERTIFICATE_LAST = 0x40000, -} PurpleCertificateInvalidityFlags; static const gchar * invalidity_reason_to_string(PurpleCertificateInvalidityFlags flag) @@ -776,10 +732,11 @@ /** Used for lazy initialization purposes. */ static gboolean x509_ca_initialized = FALSE; -/** Adds a certificate to the in-memory cache, doing nothing else */ +/** Adds a certificate to the in-memory cache, and mark it as trusted */ static gboolean x509_ca_quiet_put_cert(PurpleCertificate *crt) { + gboolean ret; x509_ca_element *el; /* lazy_init calls this function, so calling lazy_init here is a @@ -791,12 +748,20 @@ /* TODO: Perhaps just check crt->scheme->name instead? */ g_return_val_if_fail(crt->scheme == purple_certificate_find_scheme(x509_ca.scheme_name), FALSE); - el = g_new0(x509_ca_element, 1); - el->dn = purple_certificate_get_unique_id(crt); - el->crt = purple_certificate_copy(crt); - x509_ca_certs = g_list_prepend(x509_ca_certs, el); + ret = TRUE; - return TRUE; + if (crt->scheme->register_trusted_tls_cert) { + ret = (crt->scheme->register_trusted_tls_cert)(crt, TRUE); + } + + if (ret) { + el = g_new0(x509_ca_element, 1); + el->dn = purple_certificate_get_unique_id(crt); + el->crt = purple_certificate_copy(crt); + x509_ca_certs = g_list_prepend(x509_ca_certs, el); + } + + return ret; } /* Since the libpurple CertificatePools get registered before plugins are @@ -927,6 +892,7 @@ g_list_free(x509_ca_certs); x509_ca_certs = NULL; x509_ca_initialized = FALSE; + /** TODO: the cert store in the SSL implementation wouldn't be cleared by this */ g_list_foreach(x509_ca_paths, (GFunc)g_free, NULL); g_list_free(x509_ca_paths); x509_ca_paths = NULL; @@ -1185,6 +1151,10 @@ keypath = purple_certificate_pool_mkpath(&x509_tls_peers, id); ret = purple_certificate_export(keypath, crt); + if (crt->scheme->register_trusted_tls_cert) { + ret = (crt->scheme->register_trusted_tls_cert)(crt, FALSE); + } + g_free(keypath); return ret; } @@ -1606,6 +1576,14 @@ peer_crt = (PurpleCertificate *) chain->data; + if (peer_crt->scheme->verify_cert) { + /** Make sure we've loaded the CA certs (which causes NSS to trust them) */ + g_return_if_fail(x509_ca_lazy_init()); + peer_crt->scheme->verify_cert(vrq, &flags); + x509_tls_cached_complete(vrq, flags); + return; + } + /* TODO: Figure out a way to check for a bad signature, as opposed to "not self-signed" */ if ( purple_certificate_signed_by(peer_crt, peer_crt) ) { Index: pidgin-2.10.9/libpurple/certificate.h =================================================================== --- pidgin-2.10.9.orig/libpurple/certificate.h 2014-10-27 11:28:05.247836306 -0400 +++ pidgin-2.10.9/libpurple/certificate.h 2014-10-27 11:28:05.239836227 -0400 @@ -46,6 +46,51 @@ PURPLE_CERTIFICATE_VALID = 1 } PurpleCertificateVerificationStatus; +/* + * TODO: Merge this with PurpleCertificateVerificationStatus for 3.0.0 */ +typedef enum { + PURPLE_CERTIFICATE_UNKNOWN_ERROR = -1, + + /* Not an error */ + PURPLE_CERTIFICATE_NO_PROBLEMS = 0, + + /* Non-fatal */ + PURPLE_CERTIFICATE_NON_FATALS_MASK = 0x0000FFFF, + + /* The certificate is self-signed. */ + PURPLE_CERTIFICATE_SELF_SIGNED = 0x01, + + /* The CA is not in libpurple's pool of certificates. */ + PURPLE_CERTIFICATE_CA_UNKNOWN = 0x02, + + /* The current time is before the certificate's specified + * activation time. + */ + PURPLE_CERTIFICATE_NOT_ACTIVATED = 0x04, + + /* The current time is after the certificate's specified expiration time */ + PURPLE_CERTIFICATE_EXPIRED = 0x08, + + /* The certificate's subject name doesn't match the expected */ + PURPLE_CERTIFICATE_NAME_MISMATCH = 0x10, + + /* No CA pool was found. This shouldn't happen... */ + PURPLE_CERTIFICATE_NO_CA_POOL = 0x20, + + /* Fatal */ + PURPLE_CERTIFICATE_FATALS_MASK = 0xFFFF0000, + + /* The signature chain could not be validated. Due to limitations in the + * the current API, this also indicates one of the CA certificates in the + * chain is expired (or not yet activated). FIXME 3.0.0 */ + PURPLE_CERTIFICATE_INVALID_CHAIN = 0x10000, + + /* The signature has been revoked. */ + PURPLE_CERTIFICATE_REVOKED = 0x20000, + + PURPLE_CERTIFICATE_LAST = 0x40000, +} PurpleCertificateInvalidityFlags; + typedef struct _PurpleCertificate PurpleCertificate; typedef struct _PurpleCertificatePool PurpleCertificatePool; typedef struct _PurpleCertificateScheme PurpleCertificateScheme; @@ -197,7 +242,8 @@ */ void (* destroy_certificate)(PurpleCertificate * crt); - /** Find whether "crt" has a valid signature from issuer "issuer" + /** Find whether "crt" has a valid signature from "issuer," including + * appropriate values for the CA flag in the basic constraints extension. * @see purple_certificate_signed_by() */ gboolean (*signed_by)(PurpleCertificate *crt, PurpleCertificate *issuer); /** @@ -258,8 +304,17 @@ */ GSList * (* import_certificates)(const gchar * filename); - void (*_purple_reserved1)(void); - void (*_purple_reserved2)(void); + /** + * Register a certificate as "trusted." + */ + gboolean (* register_trusted_tls_cert)(PurpleCertificate *crt, gboolean ca); + + /** + * Verify that a certificate is valid, performing all necessary checks + * including date range, valid cert chain, recognized and valid CAs, etc. + */ + void (* verify_cert)(PurpleCertificateVerificationRequest *vrq, PurpleCertificateInvalidityFlags *flags); + void (*_purple_reserved3)(void); }; Index: pidgin-2.10.9/libpurple/plugins/ssl/ssl-gnutls.c =================================================================== --- pidgin-2.10.9.orig/libpurple/plugins/ssl/ssl-gnutls.c 2014-10-27 11:28:05.247836306 -0400 +++ pidgin-2.10.9/libpurple/plugins/ssl/ssl-gnutls.c 2014-10-27 11:28:05.239836227 -0400 @@ -876,7 +876,7 @@ crt_dat = X509_GET_GNUTLS_DATA(crt); issuer_dat = X509_GET_GNUTLS_DATA(issuer); - /* First, let's check that crt.issuer is actually issuer */ + /* Ensure crt issuer matches the name on the issuer cert. */ ret = gnutls_x509_crt_check_issuer(crt_dat, issuer_dat); if (ret <= 0) { @@ -905,6 +905,41 @@ return FALSE; } + /* Check basic constraints extension (if it exists then the CA flag must + be set to true, and it must exist for certs with version 3 or higher. */ + ret = gnutls_x509_crt_get_basic_constraints(issuer_dat, NULL, NULL, NULL); + if (ret == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) { + if (gnutls_x509_crt_get_version(issuer_dat) >= 3) { + /* Reject cert (no basic constraints and cert version is >= 3). */ + gchar *issuer_id = purple_certificate_get_unique_id(issuer); + purple_debug_info("gnutls/x509", "Rejecting cert because the " + "basic constraints extension is missing from issuer cert " + "for %s. The basic constraints extension is required on " + "all version 3 or higher certs (this cert is version %d).", + issuer_id ? issuer_id : "(null)", + gnutls_x509_crt_get_version(issuer_dat)); + g_free(issuer_id); + return FALSE; + } else { + /* Allow cert (no basic constraints and cert version is < 3). */ + purple_debug_info("gnutls/x509", "Basic constraint extension is " + "missing from issuer cert for %s. Allowing this because " + "the cert is version %d and the basic constraints " + "extension is only required for version 3 or higher " + "certs.", issuer_id ? issuer_id : "(null)", + gnutls_x509_crt_get_version(issuer_dat)); + } + } else if (ret <= 0) { + /* Reject cert (CA flag is false in basic constraints). */ + gchar *issuer_id = purple_certificate_get_unique_id(issuer); + purple_debug_info("gnutls/x509", "Rejecting cert because the CA flag " + "is set to false in the basic constraints extension for " + "issuer cert %s. ret=%d\n", + issuer_id ? issuer_id : "(null)", ret); + g_free(issuer_id); + return FALSE; + } + /* Now, check the signature */ /* The second argument is a ptr to an array of "trusted" issuer certs, but we're only using one trusted one */ Index: pidgin-2.10.9/libpurple/plugins/ssl/ssl-nss.c =================================================================== --- pidgin-2.10.9.orig/libpurple/plugins/ssl/ssl-nss.c 2014-10-27 11:28:05.247836306 -0400 +++ pidgin-2.10.9/libpurple/plugins/ssl/ssl-nss.c 2014-10-27 11:28:05.243836267 -0400 @@ -42,6 +42,7 @@ #include #include #include +#include #include #include #include @@ -50,6 +51,11 @@ #include #include +/* There's a bug in some versions of this header that requires that some of + the headers above be included first. This is true for at least libnss + 3.15.4. */ +#include + /* This is defined in NSPR's , but to avoid including a * private header we duplicate the prototype here */ NSPR_API(PRFileDesc*) PR_ImportTCPSocket(PRInt32 osfd); @@ -150,6 +156,9 @@ SSL_CipherPrefSetDefault(SSL_DHE_RSA_WITH_DES_CBC_SHA, 1); SSL_CipherPrefSetDefault(SSL_DHE_DSS_WITH_DES_CBC_SHA, 1); + /** Disable OCSP Checking until we can make that use our HTTP & Proxy stuff */ + CERT_EnableOCSPChecking(PR_FALSE); + _identity = PR_GetUniqueIdentity("Purple"); _nss_methods = PR_GetDefaultIOMethods(); } @@ -878,7 +887,7 @@ Handling is different for signed vs unsigned 32-bit types. */ if (*activation != nss_activ) { - if (nss_activ < 0) { + if (nss_activ < 0) { purple_debug_warning("nss", "Setting Activation Date to epoch to handle pre-epoch value\n"); *activation = 0; @@ -916,6 +925,108 @@ return TRUE; } +static gboolean +x509_register_trusted_tls_cert(PurpleCertificate *crt, gboolean ca) +{ + CERTCertDBHandle *certdb = CERT_GetDefaultCertDB(); + CERTCertificate *crt_dat; + CERTCertTrust trust; + + g_return_val_if_fail(crt, FALSE); + g_return_val_if_fail(crt->scheme == &x509_nss, FALSE); + + crt_dat = X509_NSS_DATA(crt); + g_return_val_if_fail(crt_dat, FALSE); + + purple_debug_info("nss", "Trusting %s\n", crt_dat->subjectName); + + if (ca && !CERT_IsCACert(crt_dat, NULL)) { + purple_debug_error("nss", + "Refusing to set non-CA cert as trusted CA\n"); + return FALSE; + } + + if (crt_dat->isperm) { + purple_debug_info("nss", + "Skipping setting trust for cert in permanent DB\n"); + return TRUE; + } + + if (ca) { + trust.sslFlags = CERTDB_TRUSTED_CA | CERTDB_TRUSTED_CLIENT_CA; + } else { + trust.sslFlags = CERTDB_TRUSTED; + } + trust.emailFlags = 0; + trust.objectSigningFlags = 0; + + CERT_ChangeCertTrust(certdb, crt_dat, &trust); + + return TRUE; +} + +static void x509_verify_cert(PurpleCertificateVerificationRequest *vrq, PurpleCertificateInvalidityFlags *flags) +{ + CERTCertDBHandle *certdb = CERT_GetDefaultCertDB(); + CERTCertificate *crt_dat; + PRTime now = PR_Now(); + SECStatus rv; + PurpleCertificate *first_cert = vrq->cert_chain->data; + CERTVerifyLog log; + + crt_dat = X509_NSS_DATA(first_cert); + + log.arena = PORT_NewArena(512); + log.head = log.tail = NULL; + log.count = 0; + rv = CERT_VerifyCert(certdb, crt_dat, PR_TRUE, certUsageSSLServer, now, NULL, &log); + + if (rv != SECSuccess || log.count > 0) { + CERTVerifyLogNode *node = NULL; + unsigned int depth = (unsigned int)-1; + + for (node = log.head; node; node = node->next) { + if (depth != node->depth) { + depth = node->depth; + purple_debug_error("nss", "CERT %d. %s %s:\n", depth, + node->cert->subjectName, + depth ? "[Certificate Authority]": ""); + } + purple_debug_error("nss", " ERROR %ld: %s\n", node->error, + PR_ErrorToName(node->error)); + switch (node->error) { + case SEC_ERROR_EXPIRED_CERTIFICATE: + *flags |= PURPLE_CERTIFICATE_EXPIRED; + break; + case SEC_ERROR_REVOKED_CERTIFICATE: + *flags |= PURPLE_CERTIFICATE_REVOKED; + break; + case SEC_ERROR_UNTRUSTED_ISSUER: + if (crt_dat->isRoot) { + *flags |= PURPLE_CERTIFICATE_SELF_SIGNED; + } else { + *flags |= PURPLE_CERTIFICATE_CA_UNKNOWN; + } + break; + case SEC_ERROR_CERT_SIGNATURE_ALGORITHM_DISABLED: + case SEC_ERROR_BAD_SIGNATURE: + default: + *flags |= PURPLE_CERTIFICATE_INVALID_CHAIN; + } + if (node->cert) + CERT_DestroyCertificate(node->cert); + } + } else { + rv = CERT_VerifyCertName(crt_dat, vrq->subject_name); + if (rv != SECSuccess) { + purple_debug_error("nss", "Cert chain valid, but name not verified\n"); + *flags |= PURPLE_CERTIFICATE_NAME_MISMATCH; + } + } + + PORT_FreeArena(log.arena, PR_FALSE); +} + static PurpleCertificateScheme x509_nss = { "x509", /* Scheme name */ N_("X.509 Certificates"), /* User-visible scheme name */ @@ -931,9 +1042,8 @@ x509_check_name, /* Check subject name */ x509_times, /* Activation/Expiration time */ x509_importcerts_from_file, /* Multiple certificate import function */ - - NULL, - NULL, + x509_register_trusted_tls_cert, /* Register a certificate as trusted for TLS */ + x509_verify_cert, /* Verify that the specified cert chain is trusted */ NULL }; debian/patches/CVE-2016-2365.patch0000664000000000000000000000362612741157476013265 0ustar Backport of: # HG changeset patch # User Andrew Victor # Date 1464897231 18000 # Branch release-2.x.y # Node ID 1c4acc6977a8686ad980e5b820327c9c47dbeaca # Parent 5e5e84e8a79890e580158ac2eae073d7394e93b7 Fix TALOS-CAN-0133 Index: pidgin-2.10.12/libpurple/protocols/mxit/formcmds.c =================================================================== --- pidgin-2.10.12.orig/libpurple/protocols/mxit/formcmds.c 2016-07-12 08:14:22.406751366 -0400 +++ pidgin-2.10.12/libpurple/protocols/mxit/formcmds.c 2016-07-12 08:14:22.402751319 -0400 @@ -395,6 +395,9 @@ /* validator */ validator = g_hash_table_lookup(hash, "v"); + if (!name || !validator) + return; + /* image data */ tmp = g_hash_table_lookup(hash, "dat"); if (tmp) { @@ -430,13 +433,13 @@ } tmp = g_hash_table_lookup(hash, "fw"); - width = atoi(tmp); + width = (tmp ? atoi(tmp) : 0); tmp = g_hash_table_lookup(hash, "fh"); - height = atoi(tmp); + height = (tmp ? atoi(tmp) : 0); tmp = g_hash_table_lookup(hash, "layer"); - layer = atoi(tmp); + layer = (tmp ? atoi(tmp) : 0); purple_debug_info(MXIT_PLUGIN_ID, "ImageStrip %s from %s: [w=%i h=%i l=%i validator=%s]\n", name, from, width, height, layer, validator); } @@ -525,21 +528,26 @@ /* table name */ name = g_hash_table_lookup(hash, "nm"); + if (!name) + return; /* number of columns */ tmp = g_hash_table_lookup(hash, "col"); - nr_columns = atoi(tmp); + nr_columns = (tmp ? atoi(tmp) : 0); /* number of rows */ tmp = g_hash_table_lookup(hash, "row"); - nr_rows = atoi(tmp); + nr_rows = (tmp ? atoi(tmp) : 0); /* mode */ tmp = g_hash_table_lookup(hash, "mode"); - mode = atoi(tmp); + mode = (tmp ? atoi(tmp) : 0); /* table data */ tmp = g_hash_table_lookup(hash, "d"); + if (!tmp) + tmp = ""; + coldata = g_strsplit(tmp, "~", 0); /* split into entries for each row & column */ if (g_strv_length(coldata) != (nr_rows * nr_columns)) { debian/patches/CVE-2017-2640.patch0000664000000000000000000000303613061562531013241 0ustar Backport of: # HG changeset patch # User Eion Robb # Date 1487624732 0 # Branch EionRobb/fix-for-crash-when-sending-invalid-xml-e-1487474010880 # Node ID b2fc9e774cb9bf6bffcafa156c14a4c7b3640837 # Parent 6745ecd124da91d6711ebab8812247bcd785939a Use the more robust entity processing that @dequisdequis came up with Index: pidgin-2.10.12/libpurple/util.c =================================================================== --- pidgin-2.10.12.orig/libpurple/util.c 2017-03-13 14:25:27.443719520 -0400 +++ pidgin-2.10.12/libpurple/util.c 2017-03-13 14:27:49.513504534 -0400 @@ -977,18 +977,29 @@ pln = "\302\256"; /* or use g_unichar_to_utf8(0xae); */ else if(IS_ENTITY("'")) pln = "\'"; - else if(*(text+1) == '#' && - (sscanf(text, "&#%u%1[;]", £, temp) == 2 || - sscanf(text, "&#x%x%1[;]", £, temp) == 2) && - pound != 0) { + else if(text[1] == '#' && g_ascii_isxdigit(text[2])) { static char buf[7]; - int buflen = g_unichar_to_utf8((gunichar)pound, buf); + const char *start = text + 2; + char *end; + guint64 pound; + int base = 10; + int buflen; + + if (*start == 'x') { + base = 16; + start++; + } + + pound = g_ascii_strtoull(start, &end, base); + if (pound == 0 || pound > INT_MAX || *end != ';') { + return NULL; + } + + len = (end - text) + 1; + + buflen = g_unichar_to_utf8((gunichar)pound, buf); buf[buflen] = '\0'; pln = buf; - - len = (*(text+2) == 'x' ? 3 : 2); - while(isxdigit((gint) text[len])) len++; - if(text[len] == ';') len++; } else return NULL; debian/patches/series0000664000000000000000000000141213061562531012034 0ustar 04_let_crasher_for_apport.patch 05_default_to_irc_ubuntu_com.patch 10_docklet_default_off.patch 11_buddy_list_really_show.patch 13_sounds_and_timers.patch 60_1024x600_gtkpounce.c.patch 60_1024x600_gtkprefs.c.patch xmessagingmenu.patch pounce-webview.patch hg-remove-SIGCHLD-handler.patch CVE-2014-3775.patch CVE-2014-3694.patch CVE-2014-3695.patch CVE-2014-3696.patch CVE-2014-3698.patch CVE-2016-2373.patch CVE-2016-2366.patch CVE-2016-2365.patch CVE-2016-4323.patch CVE-2016-2376.patch CVE-2016-2380.patch CVE-2016-2374.patch CVE-2016-2369.patch CVE-2016-2371.patch CVE-2016-2375.patch CVE-2016-2378.patch CVE-2016-2367-1.patch CVE-2016-2367-2.patch CVE-2016-2367-3.patch CVE-2016-2368-2.patch CVE-2016-2368-1.patch CVE-2016-2377.patch CVE-2016-2370.patch CVE-2017-2640.patch debian/patches/CVE-2016-2368-1.patch0000664000000000000000000003456512741157652013430 0ustar # HG changeset patch # User Andrew Victor # Date 1464976637 18000 # Branch release-2.x.y # Node ID f6efc254e94741e3efa05faff081c157de987a55 # Parent 60f95045db42687aca293429a4bbafe2ef537270 Fix for TALOS-CAN-0136 part 2 Index: pidgin-2.10.12/libpurple/protocols/mxit/protocol.c =================================================================== --- pidgin-2.10.12.orig/libpurple/protocols/mxit/protocol.c 2016-07-12 08:16:39.720346872 -0400 +++ pidgin-2.10.12/libpurple/protocols/mxit/protocol.c 2016-07-12 08:16:39.716346826 -0400 @@ -149,6 +149,34 @@ } +/*------------------------------------------------------------------------ + * scnprintf + * + * @param string The destination buffer. + * @param size The maximum size of the destination buffer. + * @param format The format string + * @param ... The parameters to the format string. + * @return The number of characters actually stored in the buffer. + */ +static int scnprintf( gchar* string, size_t size, const char *format, ... ) +{ + va_list args; + guint i; + + va_start( args, format ); + i = g_vsnprintf( string, size, format, args ); + va_end( args ); + + if ( i < size ) + return i; + else if ( size > 0 ) /* destination buffer too short - return number of characters actually inserted */ + return size - 1; + else + return 0; +} + + + /*======================================================================================================================== * Low-level Packet transmission */ @@ -463,23 +491,23 @@ packet->headerlen = 0; /* create generic packet header */ - hlen = g_snprintf( header, sizeof( header ), "id=%s%c", purple_account_get_username( session->acc ), CP_REC_TERM ); /* client mxitid */ + hlen = scnprintf( header, sizeof( header ), "id=%s%c", purple_account_get_username( session->acc ), CP_REC_TERM ); /* client mxitid */ if ( session->http ) { /* http connection only */ - hlen += g_snprintf( header + hlen, sizeof( header ) - hlen, "s=" ); + hlen += scnprintf( header + hlen, sizeof( header ) - hlen, "s=" ); if ( session->http_sesid > 0 ) { - hlen += g_snprintf( header + hlen, sizeof( header ) - hlen, "%u%c", session->http_sesid, CP_FLD_TERM ); /* http session id */ + hlen += scnprintf( header + hlen, sizeof( header ) - hlen, "%u%c", session->http_sesid, CP_FLD_TERM ); /* http session id */ } session->http_seqno++; - hlen += g_snprintf( header + hlen, sizeof( header ) - hlen, "%u%c", session->http_seqno, CP_REC_TERM ); /* http request sequence id */ + hlen += scnprintf( header + hlen, sizeof( header ) - hlen, "%u%c", session->http_seqno, CP_REC_TERM ); /* http request sequence id */ } - hlen += g_snprintf( header + hlen, sizeof( header ) - hlen, "cm=%i%c", cmd, CP_REC_TERM ); /* packet command */ + hlen += scnprintf( header + hlen, sizeof( header ) - hlen, "cm=%i%c", cmd, CP_REC_TERM ); /* packet command */ if ( !session->http ) { /* socket connection only */ - packet->headerlen = g_snprintf( packet->header, sizeof( packet->header ), "ln=%i%c", ( datalen + hlen ), CP_REC_TERM ); /* packet length */ + packet->headerlen = scnprintf( packet->header, sizeof( packet->header ), "ln=%i%c", ( datalen + hlen ), CP_REC_TERM ); /* packet length */ } /* copy the header to packet */ @@ -716,7 +744,7 @@ clientVersion = g_strdup_printf( "%c-%i.%i.%i-%s-%s", MXIT_CP_DISTCODE, PURPLE_MAJOR_VERSION, PURPLE_MINOR_VERSION, PURPLE_MICRO_VERSION, MXIT_CP_ARCH, MXIT_CP_PLATFORM ); /* convert the packet to a byte stream */ - datalen = g_snprintf( data, sizeof( data ), + datalen = scnprintf( data, sizeof( data ), "ms=%s%c%s%c%i%c%s%c" /* "ms"=password\1version\1maxreplyLen\1name\1 */ "%s%c%i%c%s%c%s%c" /* dateOfBirth\1gender\1location\1capabilities\1 */ "%s%c%i%c%s%c%s" /* dc\1features\1dialingcode\1locale */ @@ -760,7 +788,7 @@ clientVersion = g_strdup_printf( "%c-%i.%i.%i-%s-%s", MXIT_CP_DISTCODE, PURPLE_MAJOR_VERSION, PURPLE_MINOR_VERSION, PURPLE_MICRO_VERSION, MXIT_CP_ARCH, MXIT_CP_PLATFORM ); /* convert the packet to a byte stream */ - datalen = g_snprintf( data, sizeof( data ), + datalen = scnprintf( data, sizeof( data ), "ms=%s%c%s%c%i%c" /* "ms"=password\1version\1getContacts\1 */ "%s%c%s%c%i%c" /* capabilities\1dc\1features\1 */ "%s%c%s%c" /* dialingcode\1locale\1 */ @@ -774,7 +802,7 @@ /* include "custom resource" information */ splashId = splash_current( session ); if ( splashId != NULL ) - datalen += g_snprintf( data + datalen, sizeof( data ) - datalen, "%ccr=%s", CP_REC_TERM, splashId ); + datalen += scnprintf( data + datalen, sizeof( data ) - datalen, "%ccr=%s", CP_REC_TERM, splashId ); /* queue packet for transmission */ mxit_queue_packet( session, data, datalen, CP_CMD_LOGIN ); @@ -804,7 +832,7 @@ markuped_msg = g_strdup( msg ); /* convert the packet to a byte stream */ - datalen = g_snprintf( data, sizeof( data ), + datalen = scnprintf( data, sizeof( data ), "ms=%s%c%s%c%i%c%i", /* "ms"=jid\1msg\1type\1flags */ to, CP_FLD_TERM, markuped_msg, CP_FLD_TERM, msgtype, CP_FLD_TERM, CP_MSG_MARKUP | CP_MSG_EMOTICON ); @@ -831,14 +859,14 @@ int datalen; unsigned int i; - datalen = g_snprintf( data, sizeof( data ), + datalen = scnprintf( data, sizeof( data ), "ms=%s%c%i", /* "ms="mxitid\1nr_attributes */ ( username ? username : "" ), CP_FLD_TERM, nr_attrib ); /* add attributes */ for ( i = 0; i < nr_attrib; i++ ) - datalen += g_snprintf( data + datalen, sizeof( data ) - datalen, "%c%s", CP_FLD_TERM, attribute[i] ); + datalen += scnprintf( data + datalen, sizeof( data ) - datalen, "%c%s", CP_FLD_TERM, attribute[i] ); /* queue packet for transmission */ mxit_queue_packet( session, data, datalen, CP_CMD_EXTPROFILE_GET ); @@ -864,7 +892,7 @@ parts = g_strsplit( attributes, "\01", 1 + ( nr_attrib * 3 ) ); /* convert the packet to a byte stream */ - datalen = g_snprintf( data, sizeof( data ), + datalen = scnprintf( data, sizeof( data ), "ms=%s%c%i", /* "ms"=password\1nr_attibutes */ ( password ) ? password : "", CP_FLD_TERM, nr_attrib ); @@ -876,7 +904,7 @@ g_strfreev( parts ); return; } - datalen += g_snprintf( data + datalen, sizeof( data ) - datalen, + datalen += scnprintf( data + datalen, sizeof( data ) - datalen, "%c%s%c%s%c%s", /* \1name\1type\1value */ CP_FLD_TERM, parts[i], CP_FLD_TERM, parts[i + 1], CP_FLD_TERM, parts[i + 2] ); } @@ -904,13 +932,13 @@ unsigned int i; /* convert the packet to a byte stream */ - datalen = g_snprintf( data, sizeof( data ), + datalen = scnprintf( data, sizeof( data ), "ms=%i%c%s%c%i%c%i%c%i", /* inputType \1 input \1 maxSuggestions \1 startIndex \1 numAttributes \1 name0 \1 name1 ... \1 nameN */ CP_SUGGEST_FRIENDS, CP_FLD_TERM, "", CP_FLD_TERM, max, CP_FLD_TERM, 0, CP_FLD_TERM, nr_attrib ); /* add attributes */ for ( i = 0; i < nr_attrib; i++ ) - datalen += g_snprintf( data + datalen, sizeof( data ) - datalen, "%c%s", CP_FLD_TERM, attribute[i] ); + datalen += scnprintf( data + datalen, sizeof( data ) - datalen, "%c%s", CP_FLD_TERM, attribute[i] ); /* queue packet for transmission */ mxit_queue_packet( session, data, datalen, CP_CMD_SUGGESTCONTACTS ); @@ -933,13 +961,13 @@ unsigned int i; /* convert the packet to a byte stream */ - datalen = g_snprintf( data, sizeof( data ), + datalen = scnprintf( data, sizeof( data ), "ms=%i%c%s%c%i%c%i%c%i", /* inputType \1 input \1 maxSuggestions \1 startIndex \1 numAttributes \1 name0 \1 name1 ... \1 nameN */ CP_SUGGEST_SEARCH, CP_FLD_TERM, text, CP_FLD_TERM, max, CP_FLD_TERM, 0, CP_FLD_TERM, nr_attrib ); /* add attributes */ for ( i = 0; i < nr_attrib; i++ ) - datalen += g_snprintf( data + datalen, sizeof( data ) - datalen, "%c%s", CP_FLD_TERM, attribute[i] ); + datalen += scnprintf( data + datalen, sizeof( data ) - datalen, "%c%s", CP_FLD_TERM, attribute[i] ); /* queue packet for transmission */ mxit_queue_packet( session, data, datalen, CP_CMD_SUGGESTCONTACTS ); @@ -959,14 +987,14 @@ int datalen; /* convert the packet to a byte stream */ - datalen = g_snprintf( data, sizeof( data ), + datalen = scnprintf( data, sizeof( data ), "ms=%i%c", /* "ms"=show\1status */ presence, CP_FLD_TERM ); /* append status message (if one is set) */ if ( statusmsg ) - datalen += g_snprintf( data + datalen, sizeof( data ) - datalen, "%s", statusmsg ); + datalen += scnprintf( data + datalen, sizeof( data ) - datalen, "%s", statusmsg ); /* queue packet for transmission */ mxit_queue_packet( session, data, datalen, CP_CMD_STATUS ); @@ -985,7 +1013,7 @@ int datalen; /* convert the packet to a byte stream */ - datalen = g_snprintf( data, sizeof( data ), + datalen = scnprintf( data, sizeof( data ), "ms=%i", /* "ms"=mood */ mood ); @@ -1011,7 +1039,7 @@ int datalen; /* convert the packet to a byte stream */ - datalen = g_snprintf( data, sizeof( data ), + datalen = scnprintf( data, sizeof( data ), "ms=%s%c%s%c%s%c%i%c%s%c%i", /* "ms"=group \1 username \1 alias \1 type \1 msg \1 isuserid */ groupname, CP_FLD_TERM, username, CP_FLD_TERM, alias, CP_FLD_TERM, MXIT_TYPE_MXIT, CP_FLD_TERM, @@ -1036,7 +1064,7 @@ int datalen; /* convert the packet to a byte stream */ - datalen = g_snprintf( data, sizeof( data ), + datalen = scnprintf( data, sizeof( data ), "ms=%s", /* "ms"=username */ username ); @@ -1059,7 +1087,7 @@ int datalen; /* convert the packet to a byte stream */ - datalen = g_snprintf( data, sizeof( data ), + datalen = scnprintf( data, sizeof( data ), "ms=%s%c%s%c%s", /* "ms"=username\1group\1alias */ username, CP_FLD_TERM, "", CP_FLD_TERM, alias ); @@ -1082,14 +1110,14 @@ int datalen; /* convert the packet to a byte stream */ - datalen = g_snprintf( data, sizeof( data ), + datalen = scnprintf( data, sizeof( data ), "ms=%s", /* "ms"=username */ username ); /* append reason (if one is set) */ if ( reason ) - datalen += g_snprintf( data + datalen, sizeof( data ) - datalen, "%c%s", CP_FLD_TERM, reason ); + datalen += scnprintf( data + datalen, sizeof( data ) - datalen, "%c%s", CP_FLD_TERM, reason ); /* queue packet for transmission */ mxit_queue_packet( session, data, datalen, CP_CMD_DENY ); @@ -1110,7 +1138,7 @@ int datalen; /* convert the packet to a byte stream */ - datalen = g_snprintf( data, sizeof( data ), + datalen = scnprintf( data, sizeof( data ), "ms=%s%c%s%c%s", /* "ms"=groupname\1username\1alias */ groupname, CP_FLD_TERM, username, CP_FLD_TERM, alias ); @@ -1132,7 +1160,7 @@ int datalen; /* convert the packet to a byte stream */ - datalen = g_snprintf( data, sizeof( data ), + datalen = scnprintf( data, sizeof( data ), "ms=%s", /* "ms"=splashId */ splashid ); @@ -1158,7 +1186,7 @@ purple_debug_info( MXIT_PLUGIN_ID, "mxit_send_msgevent: to=%s id=%s event=%i\n", to, id, event ); /* convert the packet to a byte stream */ - datalen = g_snprintf( data, sizeof( data ), + datalen = scnprintf( data, sizeof( data ), "ms=%s%c%s%c%i", /* "ms"=contactAddress \1 id \1 event */ to, CP_FLD_TERM, id, CP_FLD_TERM, event ); @@ -1183,14 +1211,14 @@ int i; /* convert the packet to a byte stream */ - datalen = g_snprintf( data, sizeof( data ), + datalen = scnprintf( data, sizeof( data ), "ms=%s%c%i", /* "ms"=roomname\1nr_jids\1jid0\1..\1jidN */ groupname, CP_FLD_TERM, nr_usernames ); /* add usernames */ for ( i = 0; i < nr_usernames; i++ ) - datalen += g_snprintf( data + datalen, sizeof( data ) - datalen, "%c%s", CP_FLD_TERM, usernames[i] ); + datalen += scnprintf( data + datalen, sizeof( data ) - datalen, "%c%s", CP_FLD_TERM, usernames[i] ); /* queue packet for transmission */ mxit_queue_packet( session, data, datalen, CP_CMD_GRPCHAT_CREATE ); @@ -1212,14 +1240,14 @@ int i; /* convert the packet to a byte stream */ - datalen = g_snprintf( data, sizeof( data ), + datalen = scnprintf( data, sizeof( data ), "ms=%s%c%i", /* "ms"=roomid\1nr_jids\1jid0\1..\1jidN */ roomid, CP_FLD_TERM, nr_usernames ); /* add usernames */ for ( i = 0; i < nr_usernames; i++ ) - datalen += g_snprintf( data + datalen, sizeof( data ) - datalen, "%c%s", CP_FLD_TERM, usernames[i] ); + datalen += scnprintf( data + datalen, sizeof( data ) - datalen, "%c%s", CP_FLD_TERM, usernames[i] ); /* queue packet for transmission */ mxit_queue_packet( session, data, datalen, CP_CMD_GRPCHAT_INVITE ); @@ -1245,7 +1273,7 @@ purple_debug_info( MXIT_PLUGIN_ID, "SENDING FILE '%s' of %zu bytes to user '%s'\n", filename, buflen, username ); /* convert the packet to a byte stream */ - datalen = g_snprintf( data, sizeof( data ), "ms=" ); + datalen = scnprintf( data, sizeof( data ), "ms=" ); /* map chunk header over data buffer */ chunk = &data[datalen]; @@ -1277,7 +1305,7 @@ purple_debug_info( MXIT_PLUGIN_ID, "mxit_send_file_reject\n" ); /* convert the packet to a byte stream */ - datalen = g_snprintf( data, sizeof( data ), "ms=" ); + datalen = scnprintf( data, sizeof( data ), "ms=" ); /* map chunk header over data buffer */ chunk = &data[datalen]; @@ -1311,7 +1339,7 @@ purple_debug_info( MXIT_PLUGIN_ID, "mxit_send_file_accept\n" ); /* convert the packet to a byte stream */ - datalen = g_snprintf( data, sizeof( data ), "ms=" ); + datalen = scnprintf( data, sizeof( data ), "ms=" ); /* map chunk header over data buffer */ chunk = &data[datalen]; @@ -1343,7 +1371,7 @@ purple_debug_info( MXIT_PLUGIN_ID, "mxit_send_file_received\n" ); /* convert the packet to a byte stream */ - datalen = g_snprintf( data, sizeof( data ), "ms=" ); + datalen = scnprintf( data, sizeof( data ), "ms=" ); /* map chunk header over data buffer */ chunk = &data[datalen]; @@ -1376,7 +1404,7 @@ purple_debug_info( MXIT_PLUGIN_ID, "mxit_set_avatar: %zu bytes\n", avatarlen ); /* convert the packet to a byte stream */ - datalen = g_snprintf( data, sizeof( data ), "ms=" ); + datalen = scnprintf( data, sizeof( data ), "ms=" ); /* map chunk header over data buffer */ chunk = &data[datalen]; @@ -1411,7 +1439,7 @@ purple_debug_info( MXIT_PLUGIN_ID, "mxit_get_avatar: %s\n", mxitId ); /* convert the packet to a byte stream */ - datalen = g_snprintf( data, sizeof( data ), "ms=" ); + datalen = scnprintf( data, sizeof( data ), "ms=" ); /* map chunk header over data buffer */ chunk = &data[datalen]; debian/patches/CVE-2016-2377.patch0000664000000000000000000000171212741164141013245 0ustar # HG changeset patch # User Andrew Victor # Date 1464976918 18000 # Branch release-2.x.y # Node ID 0f94ef13ab373f4da4a723377d792a296145efdb # Parent 5e5e84e8a79890e580158ac2eae073d7394e93b7 Fix for TALOS-CAN-0119 Index: pidgin-2.10.9/libpurple/protocols/mxit/http.c =================================================================== --- pidgin-2.10.9.orig/libpurple/protocols/mxit/http.c 2016-07-12 08:53:51.250909379 -0400 +++ pidgin-2.10.9/libpurple/protocols/mxit/http.c 2016-07-12 08:53:51.246909330 -0400 @@ -97,9 +97,9 @@ { struct MXitSession* session = (struct MXitSession*) user_data; char buf[256]; - int buflen; + unsigned int buflen; char* body; - int bodylen; + unsigned int bodylen; char* ch; int len; char* tmp; @@ -178,7 +178,7 @@ goto done; } tmp = g_strndup( ch, tmp - ch ); - bodylen = atoi( tmp ); + bodylen = strtoul( tmp, NULL, 10 ); g_free( tmp ); tmp = NULL; debian/patches/60_1024x600_gtkpounce.c.patch0000664000000000000000000000324012274732607015462 0ustar Index: pidgin-2.10.2/pidgin/gtkpounce.c =================================================================== --- pidgin-2.10.2.orig/pidgin/gtkpounce.c 2012-03-14 06:28:02.000000000 +0100 +++ pidgin-2.10.2/pidgin/gtkpounce.c 2012-03-16 12:33:59.276065914 +0100 @@ -495,6 +495,7 @@ GPtrArray *sound_widgets; GPtrArray *exec_widgets; GtkWidget *send_msg_imhtml; + GtkWidget *scrolledWindow1024x600 = NULL; g_return_if_fail((cur_pounce != NULL) || (account != NULL) || @@ -544,8 +545,14 @@ /* Create the vbox that will contain all the prefs stuff. */ vbox2 = gtk_vbox_new(FALSE, PIDGIN_HIG_BOX_SPACE); - gtk_box_pack_start(GTK_BOX(vbox1), vbox2, TRUE, TRUE, 0); - + if (gdk_screen_get_default() != NULL && gdk_screen_get_height(gdk_screen_get_default()) <= 600) { + scrolledWindow1024x600 = gtk_scrolled_window_new(NULL,NULL); + gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledWindow1024x600),GTK_POLICY_NEVER,GTK_POLICY_AUTOMATIC); + gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scrolledWindow1024x600),vbox2); + gtk_box_pack_start(GTK_BOX(vbox1), scrolledWindow1024x600, TRUE, TRUE, 0); + } else { + gtk_box_pack_start(GTK_BOX(vbox1), vbox2, TRUE, TRUE, 0); + } /* Create the "Pounce on Whom" frame. */ frame = pidgin_make_frame(vbox2, _("Pounce on Whom")); @@ -1012,6 +1019,12 @@ } gtk_widget_show(vbox2); + if (gdk_screen_get_default() != NULL && gdk_screen_get_height(gdk_screen_get_default()) <= 600) { + gint oldw,oldh; + gtk_widget_show(scrolledWindow1024x600); + gtk_window_get_size(GTK_WINDOW(window),&oldw,&oldh); + gtk_window_resize(GTK_WINDOW (window),oldw,448); + } gtk_widget_show(window); } debian/patches/pounce-webview.patch0000664000000000000000000000123512274732607014612 0ustar Description: Send message (webview) in buddy pounce is unusable Author: Ritesh Khadgaray Forwarded: https://developer.pidgin.im/ticket/15400 Index: b/pidgin/gtkpounce.c =================================================================== --- a/pidgin/gtkpounce.c +++ b/pidgin/gtkpounce.c @@ -687,6 +687,7 @@ = gtk_check_button_new_with_mnemonic(_("P_lay a sound")); send_msg_imhtml = pidgin_create_imhtml(TRUE, &dialog->send_msg_entry, NULL, NULL); + gtk_widget_set_size_request (send_msg_imhtml, -1, 150); reset_send_msg_entry(dialog, NULL); dialog->exec_cmd_entry = gtk_entry_new(); dialog->popup_entry = gtk_entry_new(); debian/patches/CVE-2016-2371.patch0000664000000000000000000000175112741157554013254 0ustar # HG changeset patch # User Andrew Victor # Date 1464972610 18000 # Branch release-2.x.y # Node ID f0287378203fbf496a9890bf273d96adefb93b74 # Parent 5e5e84e8a79890e580158ac2eae073d7394e93b7 Fix TALOS-CAN-0139 Index: pidgin-2.10.12/libpurple/protocols/mxit/protocol.c =================================================================== --- pidgin-2.10.12.orig/libpurple/protocols/mxit/protocol.c 2016-07-12 08:15:38.183631970 -0400 +++ pidgin-2.10.12/libpurple/protocols/mxit/protocol.c 2016-07-12 08:15:38.179631924 -0400 @@ -1854,6 +1854,12 @@ /* set the count for attributes */ count = atoi( records[0]->fields[1]->data ); + /* ensure the packet has the correct number of fields */ + if ( records[0]->fcount < ( 2 + ( count * 3 ) ) ) { + purple_debug_error( MXIT_PLUGIN_ID, "Insufficient number of fields in extprofile response. fields=%i records=%i", records[0]->fcount, count ); + return; + } + for ( i = 0; i < count; i++ ) { char* fname; char* fvalue; debian/patches/CVE-2016-2374.patch0000664000000000000000000000124112741157534013247 0ustar # HG changeset patch # User Andrew Victor # Date 1464901903 18000 # Branch release-2.x.y # Node ID f6c08d962618f0d097b840e116c1221625677bb0 # Parent 5e5e84e8a79890e580158ac2eae073d7394e93b7 Fix for TALOS-CAN-0142 diff --git a/libpurple/protocols/mxit/multimx.c b/libpurple/protocols/mxit/multimx.c --- a/libpurple/protocols/mxit/multimx.c +++ b/libpurple/protocols/mxit/multimx.c @@ -360,7 +360,7 @@ unsigned int i; for (i = 1; i < strlen(msg); i++) { /* search for end of nickname */ - if (msg[i] == '>') { + if ((msg[i] == '>') && (msg[i+1] == '\n')) { msg[i] = '\0'; g_free(mx->from); mx->from = g_strdup(&msg[1]); debian/patches/05_default_to_irc_ubuntu_com.patch0000664000000000000000000000100412274732607017374 0ustar Index: pidgin-2.10.2/libpurple/protocols/irc/irc.h =================================================================== --- pidgin-2.10.2.orig/libpurple/protocols/irc/irc.h 2012-03-14 06:28:00.000000000 +0100 +++ pidgin-2.10.2/libpurple/protocols/irc/irc.h 2012-03-16 12:33:51.680065624 +0100 @@ -30,7 +30,7 @@ #include "roomlist.h" #include "sslconn.h" -#define IRC_DEFAULT_SERVER "irc.freenode.net" +#define IRC_DEFAULT_SERVER "irc.ubuntu.com" #define IRC_DEFAULT_PORT 6667 #define IRC_DEFAULT_SSL_PORT 994 debian/patches/CVE-2016-2366.patch0000664000000000000000000000250212741157430013244 0ustar # HG changeset patch # User Andrew Victor # Date 1464891849 18000 # Branch release-2.x.y # Node ID abdc3025f6b8b0dabb36bc84e994d6735e4abb3c # Parent 5e5e84e8a79890e580158ac2eae073d7394e93b7 Fix TALOS-CAN-0134 diff --git a/libpurple/protocols/mxit/formcmds.c b/libpurple/protocols/mxit/formcmds.c --- a/libpurple/protocols/mxit/formcmds.c +++ b/libpurple/protocols/mxit/formcmds.c @@ -519,9 +519,9 @@ const char* tmp; const char* name; int mode; - int nr_columns = 0, nr_rows = 0; + unsigned int nr_columns = 0, nr_rows = 0; gchar** coldata; - int i, j; + unsigned int i, j; /* table name */ name = g_hash_table_lookup(hash, "nm"); @@ -542,6 +542,12 @@ tmp = g_hash_table_lookup(hash, "d"); coldata = g_strsplit(tmp, "~", 0); /* split into entries for each row & column */ + if (g_strv_length(coldata) != (nr_rows * nr_columns)) { + purple_debug_info(MXIT_PLUGIN_ID, "Invalid table data: cols=%i rows=%i\n", nr_columns, nr_rows); + g_strfreev(coldata); + return; + } + purple_debug_info(MXIT_PLUGIN_ID, "Table %s from %s: [cols=%i rows=%i mode=%i]\n", name, mx->from, nr_columns, nr_rows, mode); for (i = 0; i < nr_rows; i++) { @@ -549,6 +555,8 @@ purple_debug_info(MXIT_PLUGIN_ID, " Row %i Column %i = %s\n", i, j, coldata[i*nr_columns + j]); } } + + g_strfreev(coldata); } debian/patches/CVE-2014-3775.patch0000664000000000000000000000354612336670001013252 0ustar Description: fix memory corruption via crafted message from file relay server Origin: upstream, https://github.com/wojtekka/libgadu/commit/f45ff34dfe2edab54d6fa185e8b87246ab100bd4 Origin: upstream, https://github.com/wojtekka/libgadu/commit/0db17ad635b07566d4e53a773919c16472341966 Index: pidgin-2.10.9/libpurple/protocols/gg/lib/dcc7.c =================================================================== --- pidgin-2.10.9.orig/libpurple/protocols/gg/lib/dcc7.c 2014-05-20 11:05:51.421162211 -0400 +++ pidgin-2.10.9/libpurple/protocols/gg/lib/dcc7.c 2014-05-20 11:05:51.421162211 -0400 @@ -1426,6 +1426,7 @@ char buf[256]; struct gg_dcc7_relay_reply *pkt; struct gg_dcc7_relay_reply_server srv; + size_t max_relay_count = (sizeof(buf) - sizeof(*pkt)) / sizeof(srv); int res; int i; @@ -1442,7 +1443,7 @@ pkt = (struct gg_dcc7_relay_reply*) buf; - if (gg_fix32(pkt->magic) != GG_DCC7_RELAY_REPLY || gg_fix32(pkt->rcount) < 1 || gg_fix32(pkt->rcount > 256) || gg_fix32(pkt->len) < sizeof(*pkt) + gg_fix32(pkt->rcount) * sizeof(srv)) { + if (gg_fix32(pkt->magic) != GG_DCC7_RELAY_REPLY || gg_fix32(pkt->rcount) < 1 || gg_fix32(pkt->rcount) > 256 || gg_fix32(pkt->len) < sizeof(*pkt) + gg_fix32(pkt->rcount) * sizeof(srv)) { gg_debug_dcc(dcc, GG_DEBUG_MISC, "// gg_dcc7_wathc_fd() invalid reply\n"); errno = EINVAL; e->type = GG_EVENT_DCC7_ERROR; @@ -1457,6 +1458,18 @@ dcc->relay_index = 0; dcc->relay_count = gg_fix32(pkt->rcount); + + if (dcc->relay_count > 0xffff || + (size_t)dcc->relay_count > max_relay_count) + { + gg_debug_dcc(dcc, GG_DEBUG_MISC, + "// gg_dcc7_watch_fd() relay_count out " + "of bounds (%d)\n", dcc->relay_count); + dcc->relay_count = 0; + free(e); + return NULL; + } + dcc->relay_list = malloc(dcc->relay_count * sizeof(gg_dcc7_relay_t)); if (dcc->relay_list == NULL) { debian/patches/CVE-2016-2373.patch0000664000000000000000000000531712741157423013253 0ustar # HG changeset patch # User Andrew Victor # Date 1464889790 18000 # Branch release-2.x.y # Node ID e6159ad42c4c557adb8aaae8e08aff084ef8bb8e # Parent 5e5e84e8a79890e580158ac2eae073d7394e93b7 Fix TALOS-CAN-0141 Index: pidgin-2.10.12/libpurple/protocols/mxit/protocol.c =================================================================== --- pidgin-2.10.12.orig/libpurple/protocols/mxit/protocol.c 2016-07-12 08:14:09.750604259 -0400 +++ pidgin-2.10.12/libpurple/protocols/mxit/protocol.c 2016-07-12 08:14:09.746604212 -0400 @@ -1708,6 +1708,24 @@ /*------------------------------------------------------------------------ + * Parse the received mood value, and ensure that it is supported. + * + * @param value The received mood value. + * @return A valid mood value. + */ +static short mxit_parse_mood( const char* value ) +{ + short mood = atoi( value ); + + /* ensure that the mood value is valid */ + if ( ( mood >= MXIT_MOOD_NONE ) && ( mood <= MXIT_MOOD_STRESSED ) ) + return mood; + + return MXIT_MOOD_NONE; +} + + +/*------------------------------------------------------------------------ * Process a received contact update packet. * * @param session The MXit session object @@ -1740,7 +1758,7 @@ contact->presence = mxit_parse_presence( rec->fields[3]->data ); contact->type = atoi( rec->fields[4]->data ); - contact->mood = atoi( rec->fields[5]->data ); + contact->mood = mxit_parse_mood( rec->fields[5]->data ); if ( rec->fcount > 6 ) { /* added in protocol 5.9 - flags & subtype */ @@ -1797,7 +1815,7 @@ if ( rec->fcount >= 7 ) /* flags field is included */ flags = atoi( rec->fields[6]->data ); - mxit_update_buddy_presence( session, rec->fields[0]->data, mxit_parse_presence( rec->fields[1]->data ), atoi( rec->fields[2]->data ), + mxit_update_buddy_presence( session, rec->fields[0]->data, mxit_parse_presence( rec->fields[1]->data ), mxit_parse_mood( rec->fields[2]->data ), rec->fields[3]->data, rec->fields[4]->data, flags ); mxit_update_buddy_avatar( session, rec->fields[0]->data, rec->fields[5]->data ); } Index: pidgin-2.10.12/libpurple/protocols/mxit/roster.c =================================================================== --- pidgin-2.10.12.orig/libpurple/protocols/mxit/roster.c 2016-07-12 08:14:09.750604259 -0400 +++ pidgin-2.10.12/libpurple/protocols/mxit/roster.c 2016-07-12 08:14:09.746604212 -0400 @@ -473,10 +473,6 @@ contact->mood = mood; contact->capabilities = flags; - /* validate mood */ - if ( ( contact->mood < MXIT_MOOD_NONE ) || ( contact->mood > MXIT_MOOD_STRESSED ) ) - contact->mood = MXIT_MOOD_NONE; - g_strlcpy( contact->customMood, customMood, sizeof( contact->customMood ) ); // TODO: Download custom mood frame. debian/patches/CVE-2014-3698.patch0000664000000000000000000000276412423463157013270 0ustar Backport of: # HG changeset patch # User Mark Doliner # Date 1413269257 25200 # Node ID ea46ab68f0dc5286e8b3c5620fe31898c769caff # Parent c890736a8d5a70e3caf5c6205eadb70065db6cbb Fix a possible information leak when preping XMPP JIDs. Discovered and fixed by Thijs Alkemade and Paul Aurich and reported to us privately on our security@pidgin.im mailing list. #diff --git a/ChangeLog b/ChangeLog #--- a/ChangeLog #+++ b/ChangeLog #@@ -45,6 +45,11 @@ # (CVE-2014-NNNN) # # XMPP: #+ * Fix potential information leak where a malicious XMPP server and #+ possibly even a malicious remote user could create a carefully crafted #+ XMPP message that causes libpurple to send an XMPP message containing #+ arbitrary memory. (Discovered and fixed by Thijs Alkemade and Paul #+ Aurich) (CVE-2014-NNNN) # * Fix Facebook XMPP roster quirks. (#15041, #15957) # # Yahoo: diff --git a/libpurple/protocols/jabber/jutil.c b/libpurple/protocols/jabber/jutil.c --- a/libpurple/protocols/jabber/jutil.c +++ b/libpurple/protocols/jabber/jutil.c @@ -81,10 +81,10 @@ if (slash) { domain_len = slash - str; - resource = slash; + resource = slash + 1; resource_len = null - (slash + 1); } else { - domain_len = null - (str + 1); + domain_len = null - str; } } @@ -126,6 +126,8 @@ jid = NULL; goto out; } + + jid->domain = g_strndup(domain, domain_len); } else { /* Apply nameprep */ if (stringprep_nameprep(idn_buffer, sizeof(idn_buffer)) != STRINGPREP_OK) { debian/patches/CVE-2014-3695.patch0000664000000000000000000001351512423463147013260 0ustar Backport of: # HG changeset patch # User Mark Doliner # Date 1396939555 25200 # Node ID 6436e14bdb9d997dfd73cc7cea1b300c37fa401d # Parent 6c4d5b524296264ad20462a89ae02c4db0d965e5 Add bounds checking when parsing emoticon responses in MXit. This fixes a potential remote crash when parsing a malformed emoticon response. We'll need to get a CVE ID for this. Discovered by Yves Younan and Richard Johnson of Sourcefire VRT. Thanks to Sourcefire VRT for finding this and reporting it to us! #diff --git a/ChangeLog b/ChangeLog #--- a/ChangeLog #+++ b/ChangeLog #@@ -3,7 +3,7 @@ # version 2.10.10 (?/?/?): # Windows-Specific Changes: # * Don't allow overwriting arbitrary files on the file system when the #- user installs a smiley theme from a tar file. (Discovered by Yves #+ user installs a smiley theme via drag-and-drop. (Discovered by Yves # Younan of Sourcefire VRT) # # Finch: #@@ -12,6 +12,11 @@ # Gadu-Gadu: # * Updated internal libgadu to version 1.12.0-rc2. # #+ MXit: #+ * Fix potential remote crash parsing a malformed emoticon response. #+ (Discovered by Yves Younan and Richard Johnson of Sourcefire VRT) #+ (CVE-2014-NNNN) #+ # version 2.10.9 (2/2/2014): # XMPP: # * Fix problems logging into some servers including jabber.org and Index: pidgin-2.10.9/libpurple/protocols/mxit/markup.c =================================================================== --- pidgin-2.10.9.orig/libpurple/protocols/mxit/markup.c 2014-10-27 11:28:21.043990975 -0400 +++ pidgin-2.10.9/libpurple/protocols/mxit/markup.c 2014-10-27 11:29:00.076372732 -0400 @@ -163,16 +163,22 @@ * Extract an ASN.1 formatted length field from the data. * * @param data The source data + * @param data_len Length of data * @param size The extracted length * @return The number of bytes extracted */ -static unsigned int asn_getlength( const gchar* data, int* size ) +static unsigned int asn_getlength( const gchar* data, gsize data_len, int* size ) { unsigned int len = 0; unsigned char bytes; unsigned char byte; int i; + if ( data_len < 1 ) { + /* missing first byte! */ + return -1; + } + /* first byte specifies the number of bytes in the length */ bytes = ( data[0] & ~0x80 ); if ( bytes > sizeof( unsigned int ) ) { @@ -181,6 +187,11 @@ } data++; + if ( data_len - 1 < bytes ) { + /* missing length! */ + return -1; + } + /* parse out the actual length */ for ( i = 0; i < bytes; i++ ) { byte = data[i]; @@ -197,15 +208,21 @@ * Extract an ASN.1 formatted UTF-8 string field from the data. * * @param data The source data + * @param data_len Length of data * @param type Expected type of string * @param utf8 The extracted string. Must be deallocated by caller. * @return The number of bytes extracted */ -static int asn_getUtf8( const gchar* data, gchar type, char** utf8 ) +static int asn_getUtf8( const gchar* data, gsize data_len, gchar type, char** utf8 ) { unsigned int len; gchar *out_str; + if ( data_len < 2 ) { + /* missing type or length! */ + return -1; + } + /* validate the field type [1 byte] */ if ( data[0] != type ) { /* this is not a utf-8 string! */ @@ -214,6 +231,11 @@ } len = (uint8_t)data[1]; /* length field [1 byte] */ + if ( data_len - 2 < len ) { + /* not enough bytes left in data! */ + return -1; + } + out_str = g_malloc(len + 1); memcpy(out_str, &data[2], len); /* data field */ out_str[len] = '\0'; @@ -500,7 +522,7 @@ #endif /* validate that the returned data starts with the magic constant that indicates it is a custom emoticon */ - if ( memcmp( MXIT_FRAME_MAGIC, &data[pos], strlen( MXIT_FRAME_MAGIC ) ) != 0 ) { + if ( len - pos < strlen( MXIT_FRAME_MAGIC ) || memcmp( MXIT_FRAME_MAGIC, &data[pos], strlen( MXIT_FRAME_MAGIC ) ) != 0 ) { purple_debug_error( MXIT_PLUGIN_ID, "Invalid emoticon received from wapsite (bad magic)\n" ); goto done; } @@ -514,7 +536,7 @@ pos++; /* get the frame image data length */ - res = asn_getlength( &data[pos], &em_size ); + res = asn_getlength( &data[pos], len - pos, &em_size ); if ( res <= 0 ) { purple_debug_error( MXIT_PLUGIN_ID, "Invalid emoticon received from wapsite (bad frame length)\n" ); goto done; @@ -525,7 +547,7 @@ #endif /* utf-8 (emoticon name) */ - res = asn_getUtf8( &data[pos], 0x0C, &str ); + res = asn_getUtf8( &data[pos], len - pos, 0x0C, &str ); if ( res <= 0 ) { purple_debug_error( MXIT_PLUGIN_ID, "Invalid emoticon received from wapsite (bad name string)\n" ); goto done; @@ -538,7 +560,7 @@ str = NULL; /* utf-8 (emoticon shortcut) */ - res = asn_getUtf8( &data[pos], 0x81, &str ); + res = asn_getUtf8( &data[pos], len - pos, 0x81, &str ); if ( res <= 0 ) { purple_debug_error( MXIT_PLUGIN_ID, "Invalid emoticon received from wapsite (bad shortcut string)\n" ); goto done; @@ -550,7 +572,7 @@ em_id = str; /* validate the image data type */ - if ( data[pos] != '\x82' ) { + if ( len - pos < 1 || data[pos] != '\x82' ) { purple_debug_error( MXIT_PLUGIN_ID, "Invalid emoticon received from wapsite (bad data type)\n" ); g_free( em_id ); goto done; @@ -558,7 +580,7 @@ pos++; /* get the data length */ - res = asn_getlength( &data[pos], &em_size ); + res = asn_getlength( &data[pos], len - pos, &em_size ); if ( res <= 0 ) { /* bad frame length */ purple_debug_error( MXIT_PLUGIN_ID, "Invalid emoticon received from wapsite (bad data length)\n" ); @@ -570,6 +592,13 @@ purple_debug_info( MXIT_PLUGIN_ID, "read the length '%i'\n", em_size ); #endif + if ( len - pos < em_size ) { + /* not enough bytes left in data! */ + purple_debug_error( MXIT_PLUGIN_ID, "Invalid emoticon received from wapsite (data length too long)\n"); + g_free( em_id ); + goto done; + } + /* strip the mxit markup tags from the emoticon id (eg, .{XY} -> XY) */ if ( ( em_id[0] == '.' ) && ( em_id[1] == '{' ) ) { char emo[MXIT_MAX_EMO_ID + 1]; debian/patches/CVE-2016-2367-3.patch0000664000000000000000000000131412741157624013412 0ustar # HG changeset patch # User Andrew Victor # Date 1464975625 18000 # Branch release-2.x.y # Node ID 648f667a679cf13ba957e6481edafa7e210faaf3 # Parent 1c5197a66760396a28de87d566e0eb0d986175ea Add a check to make sure the file can have a chunk diff --git a/libpurple/protocols/mxit/chunk.c b/libpurple/protocols/mxit/chunk.c --- a/libpurple/protocols/mxit/chunk.c +++ b/libpurple/protocols/mxit/chunk.c @@ -507,6 +507,10 @@ memset( getfile, 0, sizeof( struct getfile_chunk ) ); + /* ensure that the chunk size is atleast the minimum size for a "get file" chunk */ + if ( datalen < 20 ) + return FALSE; + /* id [8 bytes] */ pos += get_data( &chunkdata[pos], getfile->fileid, 8 ); debian/patches/CVE-2016-2380.patch0000664000000000000000000000261412741157526013252 0ustar # HG changeset patch # User Andrew Victor # Date 1464901499 18000 # Branch release-2.x.y # Node ID 8172584fd6409f72f7799afad5c0cf55c43a5b08 # Parent 5e5e84e8a79890e580158ac2eae073d7394e93b7 Fix for TALOS-CAN-0123 diff --git a/libpurple/protocols/mxit/markup.c b/libpurple/protocols/mxit/markup.c --- a/libpurple/protocols/mxit/markup.c +++ b/libpurple/protocols/mxit/markup.c @@ -1083,7 +1083,6 @@ GList* entry; GList* tagstack = NULL; char* reply; - char color[8]; int len = strlen ( message ); int i; @@ -1145,12 +1144,18 @@ } else if ( purple_str_has_prefix( &message[i], " */ + if ( i + 20 < len ) { + tag = g_new0( struct tag, 1 ); + tag->type = MXIT_TAG_COLOR; + tagstack = g_list_append( tagstack, tag ); + + memset( color, 0x00, sizeof( color ) ); + memcpy( color, &message[i + 13], 7 ); + g_string_append( mx, color ); + } } else if ( purple_str_has_prefix( &message[i], "" ) ) { /* end of font tag */ debian/patches/hg-remove-SIGCHLD-handler.patch0000664000000000000000000000746512274732607016245 0ustar # HG changeset patch # User Elliott Sales de Andrade # Date 1346833606 14400 # Node ID 161320946afdd6bc331026fa774e1f7bc680f12c # Parent 6fd4e9f0884e18c3f8f56612f1356f51f24e9c4e Remove SIGCHLD signal handler. DNS processes are already reaped in libpurple. Sound processes are reaped after 15 seconds. Other processes are sent through GLib and reaped by it. Anyway, this means we can stop preventing GStreamer from forking, and maybe fix a D-Bus bug, or something. Fixes #5553. Fixes #7902. diff --git a/configure.ac b/configure.ac --- a/configure.ac +++ b/configure.ac @@ -838,9 +838,6 @@ dnl ####################################################################### dnl # Check for GStreamer dnl ####################################################################### -dnl -dnl TODO: Depend on gstreamer >= 0.10.10, and remove the conditional use of -dnl gst_registry_fork_set_enabled. AC_ARG_ENABLE(gstreamer, [AC_HELP_STRING([--disable-gstreamer], [compile without GStreamer audio support])], enable_gst="$enableval", enable_gst="yes") @@ -849,10 +846,6 @@ AC_DEFINE(USE_GSTREAMER, 1, [Use GStreamer for playing sounds]) AC_SUBST(GSTREAMER_CFLAGS) AC_SUBST(GSTREAMER_LIBS) - AC_CHECK_LIB(gstreamer-0.10, gst_registry_fork_set_enabled, - [ AC_DEFINE(GST_CAN_DISABLE_FORKING, [], - [Define if gst_registry_fork_set_enabled exists])], - [], [$GSTREAMER_LIBS]) ], [ AC_MSG_RESULT(no) enable_gst="no" diff --git a/pidgin/gtkmain.c b/pidgin/gtkmain.c --- a/pidgin/gtkmain.c +++ b/pidgin/gtkmain.c @@ -88,10 +88,6 @@ SIGINT, SIGTERM, SIGQUIT, - SIGCHLD, -#if defined(USE_GSTREAMER) && !defined(GST_CAN_DISABLE_FORKING) - SIGALRM, -#endif -1 }; @@ -136,29 +132,6 @@ static void sighandler(int sig); -/* - * This child process reaping stuff is currently only used for processes that - * were forked to play sounds. It's not needed for forked DNS child, which - * have their own waitpid() call. It might be wise to move this code into - * gtksound.c. - */ -static void -clean_pid(void) -{ - int status; - pid_t pid; - - do { - pid = waitpid(-1, &status, WNOHANG); - } while (pid != 0 && pid != (pid_t)-1); - - if ((pid == (pid_t) - 1) && (errno != ECHILD)) { - char errmsg[BUFSIZ]; - snprintf(errmsg, sizeof(errmsg), "Warning: waitpid() returned %d", pid); - perror(errmsg); - } -} - static void sighandler(int sig) { ssize_t written; @@ -209,33 +182,8 @@ return FALSE; } - switch (sig) { -#if defined(USE_GSTREAMER) && !defined(GST_CAN_DISABLE_FORKING) -/* By default, gstreamer forks when you initialize it, and waitpids for the - * child. But if libpurple reaps the child rather than leaving it to - * gstreamer, gstreamer's initialization fails. So, we wait a second before - * reaping child processes, to give gst a chance to reap it if it wants to. - * - * This is not needed in later gstreamers, which let us disable the forking. - * And, it breaks the world on some Real Unices. - */ - case SIGCHLD: - /* Restore signal catching */ - signal(SIGCHLD, sighandler); - alarm(1); - break; - case SIGALRM: -#else - case SIGCHLD: -#endif - clean_pid(); - /* Restore signal catching */ - signal(SIGCHLD, sighandler); - break; - default: - purple_debug_warning("sighandler", "Caught signal %d\n", sig); - purple_core_quit(); - } + purple_debug_warning("sighandler", "Caught signal %d\n", sig); + purple_core_quit(); return TRUE; } diff --git a/pidgin/gtksound.c b/pidgin/gtksound.c --- a/pidgin/gtksound.c +++ b/pidgin/gtksound.c @@ -319,9 +319,6 @@ #ifdef USE_GSTREAMER purple_debug_info("sound", "Initializing sound output drivers.\n"); -#ifdef GST_CAN_DISABLE_FORKING - gst_registry_fork_set_enabled (FALSE); -#endif if ((gst_init_failed = !gst_init_check(NULL, NULL, &error))) { purple_notify_error(NULL, _("GStreamer Failure"), _("GStreamer failed to initialize."), debian/patches/60_1024x600_gtkprefs.c.patch0000664000000000000000000000660412274732607015317 0ustar Index: pidgin-2.10.2/pidgin/gtkprefs.c =================================================================== --- pidgin-2.10.2.orig/pidgin/gtkprefs.c 2012-03-14 06:28:02.000000000 +0100 +++ pidgin-2.10.2/pidgin/gtkprefs.c 2012-03-16 12:34:01.108065984 +0100 @@ -1333,6 +1333,7 @@ GtkWidget *label; GtkSizeGroup *sg; GList *names = NULL; + GtkWidget *scrolledWindow1024x600; ret = gtk_vbox_new(FALSE, PIDGIN_HIG_CAT_SPACE); gtk_container_set_border_width(GTK_CONTAINER(ret), PIDGIN_HIG_BORDER); @@ -1408,6 +1409,15 @@ keyboard_shortcuts(ret); gtk_widget_show_all(ret); + + if (gdk_screen_get_default() != NULL && gdk_screen_get_height(gdk_screen_get_default()) <= 700) { + scrolledWindow1024x600 = gtk_scrolled_window_new(NULL,NULL); + gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledWindow1024x600),GTK_POLICY_NEVER,GTK_POLICY_AUTOMATIC); + gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scrolledWindow1024x600),ret); + ret = scrolledWindow1024x600; + gtk_widget_show(ret); + } + g_object_unref(sg); return ret; } @@ -1451,6 +1461,7 @@ GtkWidget *hbox; GtkWidget *checkbox; GtkWidget *spin_button; + GtkWidget *scrolledWindow1024x600; ret = gtk_vbox_new(FALSE, PIDGIN_HIG_CAT_SPACE); gtk_container_set_border_width(GTK_CONTAINER(ret), PIDGIN_HIG_BORDER); @@ -1564,6 +1575,14 @@ G_CALLBACK(formatting_clear_cb), NULL); sample_imhtml = imhtml; + if (gdk_screen_get_default() != NULL && gdk_screen_get_height(gdk_screen_get_default()) <= 700) { + scrolledWindow1024x600 = gtk_scrolled_window_new(NULL,NULL); + gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledWindow1024x600),GTK_POLICY_NEVER,GTK_POLICY_AUTOMATIC); + gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scrolledWindow1024x600),ret); + gtk_widget_show(ret); + ret = scrolledWindow1024x600; + } + gtk_widget_show(ret); return ret; @@ -1929,6 +1948,7 @@ GtkWidget *ret, *vbox, *hbox, *label, *entry, *browser_button; GtkSizeGroup *sg; GList *browsers = NULL; + GtkWidget *scrolledWindow1024x600; ret = gtk_vbox_new(FALSE, PIDGIN_HIG_CAT_SPACE); gtk_container_set_border_width (GTK_CONTAINER (ret), PIDGIN_HIG_BORDER); @@ -2014,6 +2034,14 @@ g_object_unref(sg); } + if (gdk_screen_get_default() != NULL && gdk_screen_get_height(gdk_screen_get_default()) <= 700) { + scrolledWindow1024x600 = gtk_scrolled_window_new(NULL,NULL); + gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledWindow1024x600),GTK_POLICY_NEVER,GTK_POLICY_AUTOMATIC); + gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scrolledWindow1024x600),ret); + ret = scrolledWindow1024x600; + gtk_widget_show(ret); + } + return ret; } #endif /*_WIN32*/ @@ -2460,6 +2488,7 @@ int j; const char *file; char *pref; + GtkWidget *scrolledWindow1024x600; #ifndef _WIN32 GtkWidget *dd; GtkWidget *entry; @@ -2631,6 +2660,15 @@ gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 1); gtk_widget_show_all(ret); + + if (gdk_screen_get_default() != NULL && gdk_screen_get_height(gdk_screen_get_default()) <= 700) { + scrolledWindow1024x600 = gtk_scrolled_window_new(NULL,NULL); + gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledWindow1024x600),GTK_POLICY_NEVER,GTK_POLICY_AUTOMATIC); + gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scrolledWindow1024x600),ret); + ret = scrolledWindow1024x600; + gtk_widget_show(ret); + } + g_object_unref(sg); return ret; debian/patches/04_let_crasher_for_apport.patch0000664000000000000000000000060712274732607016706 0ustar Index: pidgin-2.10.2/pidgin/gtkmain.c =================================================================== --- pidgin-2.10.2.orig/pidgin/gtkmain.c 2012-03-14 06:28:02.000000000 +0100 +++ pidgin-2.10.2/pidgin/gtkmain.c 2012-03-16 12:33:48.964065522 +0100 @@ -84,7 +84,6 @@ * Each list terminated with -1 */ static const int catch_sig_list[] = { - SIGSEGV, SIGINT, SIGTERM, SIGQUIT, debian/patches/CVE-2016-2369.patch0000664000000000000000000000171012741157545013256 0ustar # HG changeset patch # User Andrew Victor # Date 1464902518 18000 # Branch release-2.x.y # Node ID 7b52ca213832882c9f69b836560ba44c6e929a34 # Parent 5e5e84e8a79890e580158ac2eae073d7394e93b7 Fix for TALOS-CAN-0137 Index: pidgin-2.10.12/libpurple/protocols/mxit/protocol.c =================================================================== --- pidgin-2.10.12.orig/libpurple/protocols/mxit/protocol.c 2016-07-12 08:15:30.659544546 -0400 +++ pidgin-2.10.12/libpurple/protocols/mxit/protocol.c 2016-07-12 08:15:30.659544546 -0400 @@ -2701,7 +2701,8 @@ /* new record */ if ( packet.rcount == 1 ) { /* packet command */ - packet.cmd = atoi( packet.records[0]->fields[0]->data ); + if ( packet.records[0]->fcount > 0 ) + packet.cmd = atoi( packet.records[0]->fields[0]->data ); } else if ( packet.rcount == 2 ) { /* special case: binary multimedia packets should not be parsed here */ debian/patches/CVE-2016-4323.patch0000664000000000000000000000247612741157510013250 0ustar # HG changeset patch # User Andrew Victor # Date 1464897853 18000 # Branch release-2.x.y # Node ID 5fa3f2bc69d7918d1e537e780839df63d5df59aa # Parent 5e5e84e8a79890e580158ac2eae073d7394e93b7 Fix TALOS-CAN-0128 diff --git a/libpurple/protocols/mxit/splashscreen.c b/libpurple/protocols/mxit/splashscreen.c --- a/libpurple/protocols/mxit/splashscreen.c +++ b/libpurple/protocols/mxit/splashscreen.c @@ -93,7 +93,7 @@ purple_debug_info(MXIT_PLUGIN_ID, "Removing splashId: '%s'\n", splashId); /* Delete stored splash image */ - filename = g_strdup_printf("%s" G_DIR_SEPARATOR_S "mxit" G_DIR_SEPARATOR_S "%s.png", purple_user_dir(), splashId); + filename = g_strdup_printf("%s" G_DIR_SEPARATOR_S "mxit" G_DIR_SEPARATOR_S "%s.png", purple_user_dir(), purple_escape_filename(splashId)); g_unlink(filename); g_free(filename); @@ -179,7 +179,7 @@ purple_debug_info(MXIT_PLUGIN_ID, "Display Splash: '%s'\n", splashId); /* Load splash-screen image from file */ - filename = g_strdup_printf("%s" G_DIR_SEPARATOR_S "mxit" G_DIR_SEPARATOR_S "%s.png", purple_user_dir(), splashId); + filename = g_strdup_printf("%s" G_DIR_SEPARATOR_S "mxit" G_DIR_SEPARATOR_S "%s.png", purple_user_dir(), purple_escape_filename(splashId)); if (g_file_get_contents(filename, &imgdata, &imglen, NULL)) { char buf[128]; debian/patches/hg_no_cap_segfault.patch0000664000000000000000000000070312274732607015461 0ustar diff --git a/pidgin/plugins/cap/cap.c b/pidgin/plugins/cap/cap.c --- a/pidgin/plugins/cap/cap.c +++ b/pidgin/plugins/cap/cap.c @@ -43,7 +43,7 @@ int threshold = purple_prefs_get_int("/plugins/gtk/cap/threshold"); int min_minute = (current_minute - threshold) % 1440; int max_minute = (current_minute + threshold) % 1440; - char *sql, sta_id = NULL; + char *sql, *sta_id = NULL; sqlite3_stmt *stmt = NULL; const char *tail = NULL; int rc; debian/patches/CVE-2016-2368-2.patch0000664000000000000000000001123512741164121013403 0ustar # HG changeset patch # User Andrew Victor # Date 1464976622 18000 # Branch release-2.x.y # Node ID 60f95045db42687aca293429a4bbafe2ef537270 # Parent 5e5e84e8a79890e580158ac2eae073d7394e93b7 Fix for TALOS-CAN-0136 part 1 Index: pidgin-2.10.9/libpurple/protocols/mxit/http.c =================================================================== --- pidgin-2.10.9.orig/libpurple/protocols/mxit/http.c 2016-07-12 08:53:33.502695237 -0400 +++ pidgin-2.10.9/libpurple/protocols/mxit/http.c 2016-07-12 08:53:33.498695189 -0400 @@ -63,9 +63,9 @@ * @param pktlen The length of the packet data * @return Return -1 on error, otherwise 0 */ -static int mxit_http_raw_write( int fd, const char* pktdata, int pktlen ) +static int mxit_http_raw_write( int fd, const char* pktdata, size_t pktlen ) { - int written; + size_t written; int res; written = 0; @@ -309,22 +309,25 @@ * @param session The MXit session object * @param host The server name to connect to * @param port The port number to connect to - * @param data The HTTP request data (including HTTP headers etc.) + * @param header The HTTP header. + * @param data The HTTP request data. * @param datalen The HTTP request data length */ -void mxit_http_send_request( struct MXitSession* session, char* host, int port, const char* data, int datalen ) +void mxit_http_send_request( struct MXitSession* session, char* host, int port, gchar* header, const char* data, size_t datalen ) { PurpleProxyConnectData* con = NULL; struct http_request* req; + size_t headerlen = strlen( header ); /* build the http request */ req = g_new0( struct http_request, 1 ); req->session = session; req->host = host; req->port = port; - req->data = g_malloc0( datalen ); - memcpy( req->data, data, datalen ); - req->datalen = datalen; + req->data = g_malloc0( headerlen + datalen ); + memcpy( req->data, header, headerlen ); + memcpy( req->data + headerlen, data, datalen ); + req->datalen = headerlen + datalen; /* open connection to the HTTP server */ con = purple_proxy_connect( NULL, session->acc, host, port, mxit_cb_http_connect, req ); Index: pidgin-2.10.9/libpurple/protocols/mxit/http.h =================================================================== --- pidgin-2.10.9.orig/libpurple/protocols/mxit/http.h 2016-07-12 08:53:33.502695237 -0400 +++ pidgin-2.10.9/libpurple/protocols/mxit/http.h 2016-07-12 08:53:33.498695189 -0400 @@ -35,11 +35,11 @@ char* host; int port; char* data; - int datalen; + size_t datalen; }; -void mxit_http_send_request( struct MXitSession* session, char* host, int port, const char* data, int datalen ); +void mxit_http_send_request( struct MXitSession* session, char* host, int port, gchar* header, const char* data, size_t datalen ); Index: pidgin-2.10.9/libpurple/protocols/mxit/protocol.c =================================================================== --- pidgin-2.10.9.orig/libpurple/protocols/mxit/protocol.c 2016-07-12 08:53:33.502695237 -0400 +++ pidgin-2.10.9/libpurple/protocols/mxit/protocol.c 2016-07-12 08:53:33.502695237 -0400 @@ -335,11 +335,10 @@ */ static void mxit_write_http_post( struct MXitSession* session, struct tx_packet* packet ) { - char request[256 + packet->datalen]; - int reqlen; char* host_name; int host_port; gboolean ok; + gchar* httpheader; /* extract the HTTP host name and host port number to connect to */ ok = purple_url_parse( session->http_server, &host_name, &host_port, NULL, NULL, NULL ); @@ -351,8 +350,8 @@ packet->header[packet->headerlen - 1] = '\0'; packet->headerlen--; - /* build the HTTP request packet */ - reqlen = g_snprintf( request, 256, + /* build the HTTP request header */ + httpheader = g_strdup_printf( "POST %s?%s HTTP/1.1\r\n" "User-Agent: " MXIT_HTTP_USERAGENT "\r\n" "Content-Type: application/octet-stream\r\n" @@ -365,17 +364,17 @@ packet->datalen - MXIT_MS_OFFSET ); - /* copy over the packet body data (could be binary) */ - memcpy( request + reqlen, packet->data + MXIT_MS_OFFSET, packet->datalen - MXIT_MS_OFFSET ); - reqlen += packet->datalen; - #ifdef DEBUG_PROTOCOL purple_debug_info( MXIT_PLUGIN_ID, "HTTP POST:\n" ); - dump_bytes( session, request, reqlen ); + dump_bytes( session, httpheader, strlen( httpheader ) ); + dump_bytes( session, packet->data + MXIT_MS_OFFSET, packet->datalen - MXIT_MS_OFFSET ); #endif /* send the request to the HTTP server */ - mxit_http_send_request( session, host_name, host_port, request, reqlen ); + mxit_http_send_request( session, host_name, host_port, httpheader, packet->data + MXIT_MS_OFFSET, packet->datalen - MXIT_MS_OFFSET ); + + /* cleanup */ + g_free( httpheader ); } debian/patches/CVE-2016-2367-2.patch0000664000000000000000000001502012741157622013406 0ustar # HG changeset patch # User Andrew Victor # Date 1464975572 18000 # Branch release-2.x.y # Node ID 1c5197a66760396a28de87d566e0eb0d986175ea # Parent 5e3601f8bde493d648916b611c2f81d507fcc9da Check the chunk header Index: pidgin-2.10.12/libpurple/protocols/mxit/chunk.h =================================================================== --- pidgin-2.10.12.orig/libpurple/protocols/mxit/chunk.h 2016-07-12 08:16:15.576066400 -0400 +++ pidgin-2.10.12/libpurple/protocols/mxit/chunk.h 2016-07-12 08:16:15.572066353 -0400 @@ -85,7 +85,7 @@ static inline guint32 chunk_length( gchar* chunkheader ) { guint32 length = *( (const guint32*) &chunkheader[1] ); - return htonl( length ); + return ntohl( length ); } static inline void set_chunk_length( gchar* chunkheader, guint32 size ) Index: pidgin-2.10.12/libpurple/protocols/mxit/protocol.c =================================================================== --- pidgin-2.10.12.orig/libpurple/protocols/mxit/protocol.c 2016-07-12 08:16:15.576066400 -0400 +++ pidgin-2.10.12/libpurple/protocols/mxit/protocol.c 2016-07-12 08:16:15.572066353 -0400 @@ -2136,21 +2136,6 @@ /*------------------------------------------------------------------------ - * Return the length of a multimedia chunk - * - * @return The actual chunk data length in bytes - */ -static int get_chunk_len( const char* chunkdata ) -{ - int* sizeptr; - - sizeptr = (int*) &chunkdata[1]; /* we skip the first byte (type field) */ - - return ntohl( *sizeptr ); -} - - -/*------------------------------------------------------------------------ * Process a received multimedia packet. * * @param session The MXit session object @@ -2159,22 +2144,33 @@ */ static void mxit_parse_cmd_media( struct MXitSession* session, struct record** records, int rcount ) { - char type; - int size; + guint chunktype; + guint32 chunksize; + gchar* chunkdata; + + /* received packet is too short to even contain a chunk header */ + if ( records[0]->fields[0]->len < MXIT_CHUNK_HEADER_SIZE ) + return; + + /* decode the chunk header */ + chunktype = chunk_type( records[0]->fields[0]->data ); + chunksize = chunk_length( records[0]->fields[0]->data ); + chunkdata = chunk_data( records[0]->fields[0]->data ); + + /* check chunk size against length of received data */ + if ( MXIT_CHUNK_HEADER_SIZE + chunksize > records[0]->fields[0]->len ) + return; - type = records[0]->fields[0]->data[0]; - size = get_chunk_len( records[0]->fields[0]->data ); - - purple_debug_info( MXIT_PLUGIN_ID, "mxit_parse_cmd_media (%i records) (%i bytes)\n", rcount, size ); + purple_debug_info( MXIT_PLUGIN_ID, "mxit_parse_cmd_media (%i records) (%i type) (%i bytes)\n", rcount, chunktype, chunksize ); /* supported chunked data types */ - switch ( type ) { + switch ( chunktype ) { case CP_CHUNK_CUSTOM : /* custom resource */ { struct cr_chunk chunk; /* decode the chunked data */ - if ( mxit_chunk_parse_cr( &records[0]->fields[0]->data[sizeof( char ) + sizeof( int )], records[0]->fields[0]->len, &chunk ) ) { + if ( mxit_chunk_parse_cr( chunkdata, chunksize, &chunk ) ) { purple_debug_info( MXIT_PLUGIN_ID, "chunk info id=%s handle=%s op=%i\n", chunk.id, chunk.handle, chunk.operation ); @@ -2202,7 +2198,7 @@ struct offerfile_chunk chunk; /* decode the chunked data */ - if ( mxit_chunk_parse_offer( &records[0]->fields[0]->data[sizeof( char ) + sizeof( int )], records[0]->fields[0]->len, &chunk ) ) { + if ( mxit_chunk_parse_offer( chunkdata, chunksize, &chunk ) ) { /* process the offer */ mxit_xfer_rx_offer( session, chunk.username, chunk.filename, chunk.filesize, chunk.fileid ); } @@ -2214,7 +2210,7 @@ struct getfile_chunk chunk; /* decode the chunked data */ - if ( mxit_chunk_parse_get( &records[0]->fields[0]->data[sizeof( char ) + sizeof( int )], records[0]->fields[0]->len, &chunk ) ) { + if ( mxit_chunk_parse_get( chunkdata, chunksize, &chunk ) ) { /* process the getfile */ mxit_xfer_rx_file( session, chunk.fileid, chunk.data, chunk.length ); } @@ -2227,7 +2223,7 @@ struct contact* contact = NULL; /* decode the chunked data */ - if ( mxit_chunk_parse_get_avatar( &records[0]->fields[0]->data[sizeof( char ) + sizeof( int )], records[0]->fields[0]->len, &chunk ) ) { + if ( mxit_chunk_parse_get_avatar( chunkdata, chunksize, &chunk ) ) { /* update avatar image */ purple_debug_info( MXIT_PLUGIN_ID, "updating avatar for contact '%s'\n", chunk.mxitid ); @@ -2250,12 +2246,16 @@ /* this is a reply packet to a set avatar request. no action is required */ break; + case CP_CHUNK_REJECT : + /* this is a reply packet to a reject file request. no action is required */ + break; + case CP_CHUNK_DIRECT_SND : /* this is a ack for a file send. */ { struct sendfile_chunk chunk; - if ( mxit_chunk_parse_sendfile( &records[0]->fields[0]->data[sizeof( char ) + sizeof( int )], records[0]->fields[0]->len, &chunk ) ) { + if ( mxit_chunk_parse_sendfile( chunkdata, chunksize, &chunk ) ) { purple_debug_info( MXIT_PLUGIN_ID, "file-send send to '%s' [status=%i message='%s']\n", chunk.username, chunk.status, chunk.statusmsg ); if ( chunk.status != 0 ) /* not success */ @@ -2269,7 +2269,7 @@ break; default : - purple_debug_error( MXIT_PLUGIN_ID, "Unsupported chunked data packet type received (%i)\n", type ); + purple_debug_error( MXIT_PLUGIN_ID, "Unsupported chunked data packet type received (%i)\n", chunktype ); break; } } @@ -2585,7 +2585,7 @@ for ( j = 0; j < r->fcount; j++ ) { f = r->fields[j]; - purple_debug_info( MXIT_PLUGIN_ID, "\tFIELD: (len=%i) '%s' \n", f->len, f->data ); + purple_debug_info( MXIT_PLUGIN_ID, "\tFIELD: (len=%zu) '%s' \n", f->len, f->data ); } } } @@ -2707,7 +2707,7 @@ field->data = &session->rx_dbuf[i + 1]; field->len = session->rx_i - i; /* now skip the binary data */ - res = get_chunk_len( field->data ); + res = chunk_length( field->data ); /* determine if we have more packets */ if ( res + 6 + i < session->rx_i ) { /* we have more than one packet in this stream */ Index: pidgin-2.10.12/libpurple/protocols/mxit/protocol.h =================================================================== --- pidgin-2.10.12.orig/libpurple/protocols/mxit/protocol.h 2016-07-12 08:16:15.576066400 -0400 +++ pidgin-2.10.12/libpurple/protocols/mxit/protocol.h 2016-07-12 08:16:15.572066353 -0400 @@ -241,7 +241,7 @@ struct field { char* data; - int len; + size_t len; }; struct record { debian/patches/CVE-2016-2367-1.patch0000664000000000000000000003216712741157612013417 0ustar # HG changeset patch # User Andrew Victor # Date 1464975230 18000 # Branch release-2.x.y # Node ID 5e3601f8bde493d648916b611c2f81d507fcc9da # Parent ae243a809727b89e75be02a4e4b371089feac546 Fix chunk decoding errors Index: pidgin-2.10.12/libpurple/protocols/mxit/chunk.c =================================================================== --- pidgin-2.10.12.orig/libpurple/protocols/mxit/chunk.c 2016-07-12 08:16:07.455972065 -0400 +++ pidgin-2.10.12/libpurple/protocols/mxit/chunk.c 2016-07-12 08:16:07.455972065 -0400 @@ -449,13 +449,16 @@ * @param chunkdata Chunked data buffer * @param datalen The length of the chunked data * @param offer Decoded offerfile information + * @return TRUE if successfully parsed, otherwise FALSE */ -void mxit_chunk_parse_offer( char* chunkdata, size_t datalen, struct offerfile_chunk* offer ) +gboolean mxit_chunk_parse_offer( char* chunkdata, size_t datalen, struct offerfile_chunk* offer ) { int pos = 0; purple_debug_info( MXIT_PLUGIN_ID, "mxit_chunk_parse_offer (%zu bytes)\n", datalen ); + memset( offer, 0, sizeof( struct offerfile_chunk ) ); + /* id [8 bytes] */ pos += get_data( &chunkdata[pos], offer->fileid, 8); @@ -483,6 +486,8 @@ /* flags [4 bytes] */ /* not used by libPurple */ + + return TRUE; } @@ -492,13 +497,16 @@ * @param chunkdata Chunked data buffer * @param datalen The length of the chunked data * @param offer Decoded getfile information + * @return TRUE if successfully parsed, otherwise FALSE */ -void mxit_chunk_parse_get( char* chunkdata, size_t datalen, struct getfile_chunk* getfile ) +gboolean mxit_chunk_parse_get( char* chunkdata, size_t datalen, struct getfile_chunk* getfile ) { int pos = 0; purple_debug_info( MXIT_PLUGIN_ID, "mxit_chunk_parse_file (%zu bytes)\n", datalen ); + memset( getfile, 0, sizeof( struct getfile_chunk ) ); + /* id [8 bytes] */ pos += get_data( &chunkdata[pos], getfile->fileid, 8 ); @@ -513,6 +521,8 @@ /* file data */ getfile->data = &chunkdata[pos]; + + return TRUE; } @@ -522,13 +532,16 @@ * @param chunkdata Chunked data buffer * @param datalen The length of the chunked data * @param splash Decoded splash image information + * @return TRUE if successfully parsed, otherwise FALSE */ -static void mxit_chunk_parse_splash( char* chunkdata, size_t datalen, struct splash_chunk* splash ) +gboolean mxit_chunk_parse_splash( char* chunkdata, size_t datalen, struct splash_chunk* splash ) { int pos = 0; purple_debug_info( MXIT_PLUGIN_ID, "mxit_chunk_parse_splash (%zu bytes)\n", datalen ); + memset( splash, 0, sizeof( struct splash_chunk ) ); + /* anchor [1 byte] */ pos += get_int8( &chunkdata[pos], &(splash->anchor) ); @@ -543,6 +556,8 @@ /* data length */ splash->datalen = datalen - pos; + + return TRUE; } @@ -552,14 +567,17 @@ * @param chunkdata Chunked data buffer * @param datalen The length of the chunked data * @param offer Decoded custom resource + * @return TRUE if successfully parsed, otherwise FALSE */ -void mxit_chunk_parse_cr( char* chunkdata, size_t datalen, struct cr_chunk* cr ) +gboolean mxit_chunk_parse_cr( char* chunkdata, size_t datalen, struct cr_chunk* cr ) { int pos = 0; unsigned int chunklen = 0; purple_debug_info( MXIT_PLUGIN_ID, "mxit_chunk_parse_cr (%zu bytes)\n", datalen ); + memset( cr, 0, sizeof( struct cr_chunk ) ); + /* id [UTF-8] */ pos += get_utf8_string( &chunkdata[pos], cr->id, sizeof( cr->id ) ); @@ -584,9 +602,10 @@ { struct splash_chunk* splash = g_new0( struct splash_chunk, 1 ); - mxit_chunk_parse_splash( &chunkdata[pos], chunk_length( chunk ), splash ); - - cr->resources = g_list_append( cr->resources, splash ); + if ( mxit_chunk_parse_splash( &chunkdata[pos], chunk_length( chunk ), splash ) ) + cr->resources = g_list_append( cr->resources, splash ); + else + g_free( splash ); break; } case CP_CHUNK_CLICK : /* splash click */ @@ -604,6 +623,8 @@ pos += chunk_length( chunk ); chunklen -= ( MXIT_CHUNK_HEADER_SIZE + chunk_length( chunk ) ); } + + return TRUE; } @@ -613,19 +634,22 @@ * @param chunkdata Chunked data buffer * @param datalen The length of the chunked data * @param sendfile Decoded sendfile information + * @return TRUE if successfully parsed, otherwise FALSE */ -void mxit_chunk_parse_sendfile( char* chunkdata, size_t datalen, struct sendfile_chunk* sendfile ) +gboolean mxit_chunk_parse_sendfile( char* chunkdata, size_t datalen, struct sendfile_chunk* sendfile ) { int pos = 0; unsigned short entries = 0; purple_debug_info( MXIT_PLUGIN_ID, "mxit_chunk_parse_sendfile (%zu bytes)\n", datalen ); + memset( sendfile, 0, sizeof( struct sendfile_chunk ) ); + /* number of entries [2 bytes] */ pos += get_int16( &chunkdata[pos], &entries ); if ( entries < 1 ) /* no data */ - return; + return FALSE; /* contactAddress [UTF-8 string] */ pos += get_utf8_string( &chunkdata[pos], sendfile->username, sizeof( sendfile->username ) ); @@ -635,6 +659,8 @@ /* status message [UTF-8 string] */ pos += get_utf8_string( &chunkdata[pos], sendfile->statusmsg, sizeof( sendfile->statusmsg ) ); + + return TRUE; } @@ -644,19 +670,22 @@ * @param chunkdata Chunked data buffer * @param datalen The length of the chunked data * @param avatar Decoded avatar information + * @return TRUE if successfully parsed, otherwise FALSE */ -void mxit_chunk_parse_get_avatar( char* chunkdata, size_t datalen, struct getavatar_chunk* avatar ) +gboolean mxit_chunk_parse_get_avatar( char* chunkdata, size_t datalen, struct getavatar_chunk* avatar ) { int pos = 0; unsigned int numfiles = 0; purple_debug_info( MXIT_PLUGIN_ID, "mxit_chunk_parse_get_avatar (%zu bytes)\n", datalen ); + memset( avatar, 0, sizeof( struct getavatar_chunk ) ); + /* number of files [4 bytes] */ pos += get_int32( &chunkdata[pos], &numfiles ); if ( numfiles < 1 ) /* no data */ - return; + return FALSE; /* mxitId [UTF-8 string] */ pos += get_utf8_string( &chunkdata[pos], avatar->mxitid, sizeof( avatar->mxitid ) ); @@ -684,4 +713,6 @@ /* file data */ avatar->data = &chunkdata[pos]; + + return TRUE; } Index: pidgin-2.10.12/libpurple/protocols/mxit/chunk.h =================================================================== --- pidgin-2.10.12.orig/libpurple/protocols/mxit/chunk.h 2016-07-12 08:16:07.455972065 -0400 +++ pidgin-2.10.12/libpurple/protocols/mxit/chunk.h 2016-07-12 08:16:07.455972065 -0400 @@ -182,11 +182,12 @@ size_t mxit_chunk_create_get_avatar( char* chunkdata, const char* mxitId, const char* avatarId ); /* Decode chunk */ -void mxit_chunk_parse_offer( char* chunkdata, size_t datalen, struct offerfile_chunk* offer ); -void mxit_chunk_parse_get( char* chunkdata, size_t datalen, struct getfile_chunk* getfile ); -void mxit_chunk_parse_cr( char* chunkdata, size_t datalen, struct cr_chunk* cr ); -void mxit_chunk_parse_sendfile( char* chunkdata, size_t datalen, struct sendfile_chunk* sendfile ); -void mxit_chunk_parse_get_avatar( char* chunkdata, size_t datalen, struct getavatar_chunk* avatar ); +gboolean mxit_chunk_parse_offer( char* chunkdata, size_t datalen, struct offerfile_chunk* offer ); +gboolean mxit_chunk_parse_get( char* chunkdata, size_t datalen, struct getfile_chunk* getfile ); +gboolean mxit_chunk_parse_cr( char* chunkdata, size_t datalen, struct cr_chunk* cr ); +gboolean mxit_chunk_parse_sendfile( char* chunkdata, size_t datalen, struct sendfile_chunk* sendfile ); +gboolean mxit_chunk_parse_get_avatar( char* chunkdata, size_t datalen, struct getavatar_chunk* avatar ); +gboolean mxit_chunk_parse_splash( char* chunkdata, size_t datalen, struct splash_chunk* splash ); #endif /* _MXIT_CHUNK_H_ */ Index: pidgin-2.10.12/libpurple/protocols/mxit/protocol.c =================================================================== --- pidgin-2.10.12.orig/libpurple/protocols/mxit/protocol.c 2016-07-12 08:16:07.455972065 -0400 +++ pidgin-2.10.12/libpurple/protocols/mxit/protocol.c 2016-07-12 08:16:07.455972065 -0400 @@ -2174,27 +2174,26 @@ struct cr_chunk chunk; /* decode the chunked data */ - memset( &chunk, 0, sizeof( struct cr_chunk ) ); - mxit_chunk_parse_cr( &records[0]->fields[0]->data[sizeof( char ) + sizeof( int )], records[0]->fields[0]->len, &chunk ); + if ( mxit_chunk_parse_cr( &records[0]->fields[0]->data[sizeof( char ) + sizeof( int )], records[0]->fields[0]->len, &chunk ) ) { - purple_debug_info( MXIT_PLUGIN_ID, "chunk info id=%s handle=%s op=%i\n", chunk.id, chunk.handle, chunk.operation ); + purple_debug_info( MXIT_PLUGIN_ID, "chunk info id=%s handle=%s op=%i\n", chunk.id, chunk.handle, chunk.operation ); - /* this is a splash-screen operation */ - if ( strcmp( chunk.handle, HANDLE_SPLASH2 ) == 0 ) { - if ( chunk.operation == CR_OP_UPDATE ) { /* update the splash-screen */ - struct splash_chunk *splash = chunk.resources->data; // TODO: Fix - assuming 1st resource is splash - gboolean clickable = ( g_list_length( chunk.resources ) > 1 ); // TODO: Fix - if 2 resources, then is clickable - - if ( splash != NULL ) - splash_update( session, chunk.id, splash->data, splash->datalen, clickable ); + /* this is a splash-screen operation */ + if ( strcmp( chunk.handle, HANDLE_SPLASH2 ) == 0 ) { + if ( chunk.operation == CR_OP_UPDATE ) { /* update the splash-screen */ + struct splash_chunk *splash = chunk.resources->data; // TODO: Fix - assuming 1st resource is splash + gboolean clickable = ( g_list_length( chunk.resources ) > 1 ); // TODO: Fix - if 2 resources, then is clickable + + if ( splash != NULL ) + splash_update( session, chunk.id, splash->data, splash->datalen, clickable ); + } + else if ( chunk.operation == CR_OP_REMOVE ) /* remove the splash-screen */ + splash_remove( session ); } - else if ( chunk.operation == CR_OP_REMOVE ) /* remove the splash-screen */ - splash_remove( session ); - } - - /* cleanup custom resources */ - g_list_foreach( chunk.resources, (GFunc)g_free, NULL ); + /* cleanup custom resources */ + g_list_foreach( chunk.resources, (GFunc)g_free, NULL ); + } } break; @@ -2203,11 +2202,10 @@ struct offerfile_chunk chunk; /* decode the chunked data */ - memset( &chunk, 0, sizeof( struct offerfile_chunk ) ); - mxit_chunk_parse_offer( &records[0]->fields[0]->data[sizeof( char ) + sizeof( int )], records[0]->fields[0]->len, &chunk ); - - /* process the offer */ - mxit_xfer_rx_offer( session, chunk.username, chunk.filename, chunk.filesize, chunk.fileid ); + if ( mxit_chunk_parse_offer( &records[0]->fields[0]->data[sizeof( char ) + sizeof( int )], records[0]->fields[0]->len, &chunk ) ) { + /* process the offer */ + mxit_xfer_rx_offer( session, chunk.username, chunk.filename, chunk.filesize, chunk.fileid ); + } } break; @@ -2216,11 +2214,10 @@ struct getfile_chunk chunk; /* decode the chunked data */ - memset( &chunk, 0, sizeof( struct getfile_chunk ) ); - mxit_chunk_parse_get( &records[0]->fields[0]->data[sizeof( char ) + sizeof( int )], records[0]->fields[0]->len, &chunk ); - - /* process the getfile */ - mxit_xfer_rx_file( session, chunk.fileid, chunk.data, chunk.length ); + if ( mxit_chunk_parse_get( &records[0]->fields[0]->data[sizeof( char ) + sizeof( int )], records[0]->fields[0]->len, &chunk ) ) { + /* process the getfile */ + mxit_xfer_rx_file( session, chunk.fileid, chunk.data, chunk.length ); + } } break; @@ -2230,11 +2227,8 @@ struct contact* contact = NULL; /* decode the chunked data */ - memset( &chunk, 0, sizeof( struct getavatar_chunk ) ); - mxit_chunk_parse_get_avatar( &records[0]->fields[0]->data[sizeof( char ) + sizeof( int )], records[0]->fields[0]->len, &chunk ); - - /* update avatar image */ - if ( chunk.data ) { + if ( mxit_chunk_parse_get_avatar( &records[0]->fields[0]->data[sizeof( char ) + sizeof( int )], records[0]->fields[0]->len, &chunk ) ) { + /* update avatar image */ purple_debug_info( MXIT_PLUGIN_ID, "updating avatar for contact '%s'\n", chunk.mxitid ); contact = get_mxit_invite_contact( session, chunk.mxitid ); @@ -2261,13 +2255,12 @@ { struct sendfile_chunk chunk; - memset( &chunk, 0, sizeof( struct sendfile_chunk ) ); - mxit_chunk_parse_sendfile( &records[0]->fields[0]->data[sizeof( char ) + sizeof( int )], records[0]->fields[0]->len, &chunk ); + if ( mxit_chunk_parse_sendfile( &records[0]->fields[0]->data[sizeof( char ) + sizeof( int )], records[0]->fields[0]->len, &chunk ) ) { + purple_debug_info( MXIT_PLUGIN_ID, "file-send send to '%s' [status=%i message='%s']\n", chunk.username, chunk.status, chunk.statusmsg ); - purple_debug_info( MXIT_PLUGIN_ID, "file-send send to '%s' [status=%i message='%s']\n", chunk.username, chunk.status, chunk.statusmsg ); - - if ( chunk.status != 0 ) /* not success */ - mxit_popup( PURPLE_NOTIFY_MSG_ERROR, _( "File Send Failed" ), chunk.statusmsg ); + if ( chunk.status != 0 ) /* not success */ + mxit_popup( PURPLE_NOTIFY_MSG_ERROR, _( "File Send Failed" ), chunk.statusmsg ); + } } break; debian/shlibs.local0000664000000000000000000000002712274732607011501 0ustar liboscar 0 libjabber 0 debian/pidgin.menu0000664000000000000000000000033512274732607011343 0ustar ?package(pidgin):needs="X11" section="Applications/Network/Communication" \ title="Pidgin" command="/usr/bin/pidgin" \ longtitle="Multi-protocol Instant Messaging Client" \ icon="/usr/share/pixmaps/pidgin-menu.xpm" debian/watch0000664000000000000000000000007112274732607010231 0ustar version=3 http://sf.net/pidgin/pidgin-([\d.]+)\.tar\.bz2 debian/libpurple0.symbols0000664000000000000000000033340112274732607012676 0ustar libpurple-client.so.0 libpurple0 #MINVER# * Build-Depends-Package: libpurple-dev PURPLE_BLIST_NODE_HAS_FLAG@Base 1:2.2.0 PURPLE_BLIST_NODE_IS_BUDDY@Base 1:2.2.0 PURPLE_BLIST_NODE_IS_CHAT@Base 1:2.2.0 PURPLE_BLIST_NODE_IS_CONTACT@Base 1:2.2.0 PURPLE_BLIST_NODE_IS_GROUP@Base 1:2.2.0 PURPLE_BLIST_NODE_SHOULD_SAVE@Base 1:2.2.0 PURPLE_BUDDY_IS_ONLINE@Base 1:2.2.0 PURPLE_CONNECTION_IS_CONNECTED@Base 1:2.2.0 PURPLE_CONNECTION_IS_VALID@Base 1:2.2.0 PURPLE_CONV_CHAT@Base 1:2.2.0 PURPLE_CONV_IM@Base 1:2.2.0 _purple_oscar_convert@Base 1:2.6.0 purple_account_add_buddies@Base 1:2.2.0 purple_account_add_buddies_with_invite@Base 1:2.8.0 purple_account_add_buddy@Base 1:2.2.0 purple_account_add_buddy_with_invite@Base 1:2.8.0 purple_account_change_password@Base 1:2.2.0 purple_account_clear_current_error@Base 1:2.3.0 purple_account_clear_settings@Base 1:2.2.0 purple_account_connect@Base 1:2.2.0 purple_account_destroy@Base 1:2.2.0 purple_account_destroy_log@Base 1:2.2.0 purple_account_disconnect@Base 1:2.2.0 purple_account_get_active_status@Base 1:2.2.0 purple_account_get_alias@Base 1:2.2.0 purple_account_get_bool@Base 1:2.2.0 purple_account_get_buddy_icon_path@Base 1:2.2.0 purple_account_get_check_mail@Base 1:2.2.0 purple_account_get_connection@Base 1:2.2.0 purple_account_get_current_error@Base 1:2.3.0 purple_account_get_enabled@Base 1:2.2.0 purple_account_get_int@Base 1:2.2.0 purple_account_get_log@Base 1:2.2.0 purple_account_get_name_for_display@Base 1:2.7.0 purple_account_get_password@Base 1:2.2.0 purple_account_get_presence@Base 1:2.2.0 purple_account_get_privacy_type@Base 1:2.7.0 purple_account_get_protocol_id@Base 1:2.2.0 purple_account_get_protocol_name@Base 1:2.2.0 purple_account_get_proxy_info@Base 1:2.2.0 purple_account_get_remember_password@Base 1:2.2.0 purple_account_get_silence_suppression@Base 1:2.8.0 purple_account_get_status@Base 1:2.2.0 purple_account_get_status_type@Base 1:2.2.0 purple_account_get_status_type_with_primitive@Base 1:2.2.0 purple_account_get_status_types@Base 1:2.2.0 purple_account_get_string@Base 1:2.2.0 purple_account_get_ui_bool@Base 1:2.2.0 purple_account_get_ui_int@Base 1:2.2.0 purple_account_get_ui_string@Base 1:2.2.0 purple_account_get_user_info@Base 1:2.2.0 purple_account_get_username@Base 1:2.2.0 purple_account_is_connected@Base 1:2.2.0 purple_account_is_connecting@Base 1:2.2.0 purple_account_is_disconnected@Base 1:2.2.0 purple_account_is_status_active@Base 1:2.2.0 purple_account_new@Base 1:2.2.0 purple_account_notify_added@Base 1:2.2.0 purple_account_register@Base 1:2.2.0 purple_account_remove_buddies@Base 1:2.2.0 purple_account_remove_buddy@Base 1:2.2.0 purple_account_remove_group@Base 1:2.2.0 purple_account_remove_setting@Base 1:2.6.0 purple_account_request_add@Base 1:2.2.0 purple_account_request_change_password@Base 1:2.2.0 purple_account_request_change_user_info@Base 1:2.2.0 purple_account_request_close@Base 1:2.2.0 purple_account_request_close_with_account@Base 1:2.2.0 purple_account_set_alias@Base 1:2.2.0 purple_account_set_bool@Base 1:2.2.0 purple_account_set_buddy_icon_path@Base 1:2.2.0 purple_account_set_check_mail@Base 1:2.2.0 purple_account_set_connection@Base 1:2.2.0 purple_account_set_enabled@Base 1:2.2.0 purple_account_set_int@Base 1:2.2.0 purple_account_set_password@Base 1:2.2.0 purple_account_set_privacy_type@Base 1:2.7.0 purple_account_set_protocol_id@Base 1:2.2.0 purple_account_set_proxy_info@Base 1:2.2.0 purple_account_set_remember_password@Base 1:2.2.0 purple_account_set_silence_suppression@Base 1:2.8.0 purple_account_set_status_list@Base 1:2.2.0 purple_account_set_status_types@Base 1:2.2.0 purple_account_set_string@Base 1:2.2.0 purple_account_set_ui_bool@Base 1:2.2.0 purple_account_set_ui_int@Base 1:2.2.0 purple_account_set_ui_string@Base 1:2.2.0 purple_account_set_user_info@Base 1:2.2.0 purple_account_set_username@Base 1:2.2.0 purple_account_supports_offline_message@Base 1:2.2.0 purple_accounts_add@Base 1:2.2.0 purple_accounts_delete@Base 1:2.2.0 purple_accounts_find@Base 1:2.2.0 purple_accounts_find_any@Base 1:2.2.0 purple_accounts_find_connected@Base 1:2.2.0 purple_accounts_get_all@Base 1:2.2.0 purple_accounts_get_all_active@Base 1:2.2.0 purple_accounts_get_ui_ops@Base 1:2.2.0 purple_accounts_init@Base 1:2.2.0 purple_accounts_remove@Base 1:2.2.0 purple_accounts_reorder@Base 1:2.2.0 purple_accounts_restore_current_statuses@Base 1:2.2.0 purple_accounts_set_ui_ops@Base 1:2.2.0 purple_accounts_uninit@Base 1:2.2.0 purple_attention_type_get_icon_name@Base 1:2.4.0 purple_attention_type_get_incoming_desc@Base 1:2.4.0 purple_attention_type_get_name@Base 1:2.4.0 purple_attention_type_get_outgoing_desc@Base 1:2.4.0 purple_attention_type_get_unlocalized_name@Base 1:2.4.0 purple_attention_type_new@Base 1:2.4.0 purple_attention_type_set_icon_name@Base 1:2.4.0 purple_attention_type_set_incoming_desc@Base 1:2.4.0 purple_attention_type_set_name@Base 1:2.4.0 purple_attention_type_set_outgoing_desc@Base 1:2.4.0 purple_attention_type_set_unlocalized_name@Base 1:2.4.0 purple_blist_add_account@Base 1:2.2.0 purple_blist_add_buddy@Base 1:2.2.0 purple_blist_add_chat@Base 1:2.2.0 purple_blist_add_contact@Base 1:2.2.0 purple_blist_add_group@Base 1:2.2.0 purple_blist_alias_buddy@Base 1:2.2.0 purple_blist_alias_chat@Base 1:2.2.0 purple_blist_alias_contact@Base 1:2.2.0 purple_blist_destroy@Base 1:2.2.0 purple_blist_find_chat@Base 1:2.2.0 purple_blist_get_buddies@Base 1:2.6.0 purple_blist_get_group_online_count@Base 1:2.2.0 purple_blist_get_group_size@Base 1:2.2.0 purple_blist_get_root@Base 1:2.2.0 purple_blist_get_ui_ops@Base 1:2.2.0 purple_blist_init@Base 1:2.2.0 purple_blist_load@Base 1:2.2.0 purple_blist_merge_contact@Base 1:2.2.0 purple_blist_new@Base 1:2.2.0 purple_blist_node_get_bool@Base 1:2.2.0 purple_blist_node_get_extended_menu@Base 1:2.2.0 purple_blist_node_get_first_child@Base 1:2.4.0 purple_blist_node_get_flags@Base 1:2.2.0 purple_blist_node_get_int@Base 1:2.2.0 purple_blist_node_get_parent@Base 1:2.4.0 purple_blist_node_get_sibling_next@Base 1:2.4.0 purple_blist_node_get_sibling_prev@Base 1:2.4.0 purple_blist_node_get_string@Base 1:2.2.0 purple_blist_node_get_type@Base 1:2.2.0 purple_blist_node_next@Base 1:2.2.0 purple_blist_node_remove_setting@Base 1:2.2.0 purple_blist_node_set_bool@Base 1:2.2.0 purple_blist_node_set_flags@Base 1:2.2.0 purple_blist_node_set_int@Base 1:2.2.0 purple_blist_node_set_string@Base 1:2.2.0 purple_blist_remove_account@Base 1:2.2.0 purple_blist_remove_buddy@Base 1:2.2.0 purple_blist_remove_chat@Base 1:2.2.0 purple_blist_remove_contact@Base 1:2.2.0 purple_blist_remove_group@Base 1:2.2.0 purple_blist_rename_buddy@Base 1:2.2.0 purple_blist_rename_group@Base 1:2.2.0 purple_blist_request_add_buddy@Base 1:2.2.0 purple_blist_request_add_chat@Base 1:2.2.0 purple_blist_request_add_group@Base 1:2.2.0 purple_blist_schedule_save@Base 1:2.2.0 purple_blist_server_alias_buddy@Base 1:2.2.0 purple_blist_set_ui_ops@Base 1:2.2.0 purple_blist_set_visible@Base 1:2.2.0 purple_blist_show@Base 1:2.2.0 purple_blist_uninit@Base 1:2.2.0 purple_blist_update_buddy_icon@Base 1:2.2.0 purple_blist_update_buddy_status@Base 1:2.2.0 purple_blist_update_node_icon@Base 1:2.5.0 purple_buddy_destroy@Base 1:2.6.0 purple_buddy_get_account@Base 1:2.2.0 purple_buddy_get_alias@Base 1:2.2.0 purple_buddy_get_alias_only@Base 1:2.2.0 purple_buddy_get_contact@Base 1:2.2.0 purple_buddy_get_contact_alias@Base 1:2.2.0 purple_buddy_get_group@Base 1:2.2.0 purple_buddy_get_icon@Base 1:2.2.0 purple_buddy_get_local_alias@Base 1:2.2.0 purple_buddy_get_local_buddy_alias@Base 1:2.6.0 purple_buddy_get_media_caps@Base 1:2.7.0 purple_buddy_get_name@Base 1:2.2.0 purple_buddy_get_presence@Base 1:2.2.0 purple_buddy_get_server_alias@Base 1:2.2.0 purple_buddy_icon_get_account@Base 1:2.2.0 purple_buddy_icon_get_checksum@Base 1:2.2.0 purple_buddy_icon_get_extension@Base 1:2.2.0 purple_buddy_icon_get_full_path@Base 1:2.2.0 purple_buddy_icon_get_scale_size@Base 1:2.2.0 purple_buddy_icon_get_username@Base 1:2.2.0 purple_buddy_icon_new@Base 1:2.2.0 purple_buddy_icon_ref@Base 1:2.2.0 purple_buddy_icon_set_data@Base 1:2.5.0 purple_buddy_icon_unref@Base 1:2.2.0 purple_buddy_icon_update@Base 1:2.2.0 purple_buddy_icons_find@Base 1:2.5.0 purple_buddy_icons_find_account_icon@Base 1:2.5.0 purple_buddy_icons_find_custom_icon@Base 1:2.5.0 purple_buddy_icons_get_account_icon_timestamp@Base 1:2.5.0 purple_buddy_icons_get_cache_dir@Base 1:2.2.0 purple_buddy_icons_has_custom_icon@Base 1:2.5.0 purple_buddy_icons_init@Base 1:2.2.0 purple_buddy_icons_is_caching@Base 1:2.2.0 purple_buddy_icons_node_find_custom_icon@Base 1:2.5.0 purple_buddy_icons_node_has_custom_icon@Base 1:2.5.0 purple_buddy_icons_node_set_custom_icon@Base 1:2.5.0 purple_buddy_icons_node_set_custom_icon_from_file@Base 1:2.5.0 purple_buddy_icons_set_account_icon@Base 1:2.5.0 purple_buddy_icons_set_cache_dir@Base 1:2.2.0 purple_buddy_icons_set_caching@Base 1:2.2.0 purple_buddy_icons_set_custom_icon@Base 1:2.5.0 purple_buddy_icons_set_for_user@Base 1:2.5.0 purple_buddy_icons_uninit@Base 1:2.2.0 purple_buddy_new@Base 1:2.2.0 purple_buddy_set_icon@Base 1:2.2.0 purple_buddy_set_media_caps@Base 1:2.7.0 purple_build_dir@Base 1:2.2.0 purple_chat_destroy@Base 1:2.6.0 purple_chat_get_account@Base 1:2.4.0 purple_chat_get_group@Base 1:2.2.0 purple_chat_get_name@Base 1:2.2.0 purple_chat_new@Base 1:2.2.0 purple_connection_destroy@Base 1:2.2.0 purple_connection_error@Base 1:2.2.0 purple_connection_error_is_fatal@Base 1:2.5.0 purple_connection_error_reason@Base 1:2.5.0 purple_connection_get_account@Base 1:2.2.0 purple_connection_get_display_name@Base 1:2.2.0 purple_connection_get_password@Base 1:2.2.0 purple_connection_get_prpl@Base 1:2.4.0 purple_connection_get_state@Base 1:2.2.0 purple_connection_new@Base 1:2.2.0 purple_connection_notice@Base 1:2.2.0 purple_connection_set_account@Base 1:2.2.0 purple_connection_set_display_name@Base 1:2.2.0 purple_connection_set_protocol_data@Base 1:2.6.0 purple_connection_set_state@Base 1:2.2.0 purple_connection_ssl_error@Base 1:2.5.0 purple_connection_update_progress@Base 1:2.2.0 purple_connections_disconnect_all@Base 1:2.2.0 purple_connections_get_all@Base 1:2.2.0 purple_connections_get_connecting@Base 1:2.2.0 purple_connections_get_ui_ops@Base 1:2.2.0 purple_connections_init@Base 1:2.2.0 purple_connections_set_ui_ops@Base 1:2.2.0 purple_connections_uninit@Base 1:2.2.0 purple_contact_destroy@Base 1:2.6.0 purple_contact_get_alias@Base 1:2.2.0 purple_contact_get_group@Base 1:2.7.0 purple_contact_get_priority_buddy@Base 1:2.2.0 purple_contact_invalidate_priority_buddy@Base 1:2.2.0 purple_contact_new@Base 1:2.2.0 purple_contact_on_account@Base 1:2.2.0 purple_contact_set_alias@Base 1:2.2.0 purple_conv_chat_add_user@Base 1:2.2.0 purple_conv_chat_add_users@Base 1:2.2.0 purple_conv_chat_cb_destroy@Base 1:2.2.0 purple_conv_chat_cb_find@Base 1:2.2.0 purple_conv_chat_cb_get_attribute@Base 1:2.8.0 purple_conv_chat_cb_get_attribute_keys@Base 1:2.8.0 purple_conv_chat_cb_get_name@Base 1:2.2.0 purple_conv_chat_cb_new@Base 1:2.2.0 purple_conv_chat_cb_set_attribute@Base 1:2.8.0 purple_conv_chat_cb_set_attributes@Base 1:2.8.0 purple_conv_chat_clear_users@Base 1:2.2.0 purple_conv_chat_find_user@Base 1:2.2.0 purple_conv_chat_get_conversation@Base 1:2.2.0 purple_conv_chat_get_id@Base 1:2.2.0 purple_conv_chat_get_ignored@Base 1:2.2.0 purple_conv_chat_get_ignored_user@Base 1:2.2.0 purple_conv_chat_get_nick@Base 1:2.2.0 purple_conv_chat_get_topic@Base 1:2.2.0 purple_conv_chat_get_users@Base 1:2.2.0 purple_conv_chat_has_left@Base 1:2.2.0 purple_conv_chat_ignore@Base 1:2.2.0 purple_conv_chat_invite_user@Base 1:2.6.0 purple_conv_chat_is_user_ignored@Base 1:2.2.0 purple_conv_chat_left@Base 1:2.2.0 purple_conv_chat_remove_user@Base 1:2.2.0 purple_conv_chat_remove_users@Base 1:2.2.0 purple_conv_chat_rename_user@Base 1:2.2.0 purple_conv_chat_send@Base 1:2.2.0 purple_conv_chat_send_with_flags@Base 1:2.2.0 purple_conv_chat_set_id@Base 1:2.2.0 purple_conv_chat_set_ignored@Base 1:2.2.0 purple_conv_chat_set_nick@Base 1:2.2.0 purple_conv_chat_set_topic@Base 1:2.2.0 purple_conv_chat_set_users@Base 1:2.2.0 purple_conv_chat_unignore@Base 1:2.2.0 purple_conv_chat_user_get_flags@Base 1:2.2.0 purple_conv_chat_user_set_flags@Base 1:2.2.0 purple_conv_chat_write@Base 1:2.2.0 purple_conv_custom_smiley_add@Base 1:2.2.0 purple_conv_custom_smiley_close@Base 1:2.2.0 purple_conv_im_get_conversation@Base 1:2.2.0 purple_conv_im_get_icon@Base 1:2.2.0 purple_conv_im_get_send_typed_timeout@Base 1:2.2.0 purple_conv_im_get_type_again@Base 1:2.2.0 purple_conv_im_get_typing_state@Base 1:2.2.0 purple_conv_im_get_typing_timeout@Base 1:2.2.0 purple_conv_im_send@Base 1:2.2.0 purple_conv_im_send_with_flags@Base 1:2.2.0 purple_conv_im_set_icon@Base 1:2.2.0 purple_conv_im_set_type_again@Base 1:2.2.0 purple_conv_im_set_typing_state@Base 1:2.2.0 purple_conv_im_start_send_typed_timeout@Base 1:2.2.0 purple_conv_im_start_typing_timeout@Base 1:2.2.0 purple_conv_im_stop_send_typed_timeout@Base 1:2.2.0 purple_conv_im_stop_typing_timeout@Base 1:2.2.0 purple_conv_im_update_typing@Base 1:2.2.0 purple_conv_im_write@Base 1:2.2.0 purple_conv_present_error@Base 1:2.2.0 purple_conv_send_confirm@Base 1:2.2.0 purple_conversation_autoset_title@Base 1:2.2.0 purple_conversation_clear_message_history@Base 1:2.2.0 purple_conversation_destroy@Base 1:2.2.0 purple_conversation_get_account@Base 1:2.2.0 purple_conversation_get_chat_data@Base 1:2.2.0 purple_conversation_get_extended_menu@Base 1:2.2.0 purple_conversation_get_features@Base 1:2.2.0 purple_conversation_get_gc@Base 1:2.2.0 purple_conversation_get_im_data@Base 1:2.2.0 purple_conversation_get_message_history@Base 1:2.2.0 purple_conversation_get_name@Base 1:2.2.0 purple_conversation_get_title@Base 1:2.2.0 purple_conversation_get_type@Base 1:2.2.0 purple_conversation_get_ui_ops@Base 1:2.2.0 purple_conversation_has_focus@Base 1:2.2.0 purple_conversation_is_logging@Base 1:2.2.0 purple_conversation_message_get_flags@Base 1:2.2.0 purple_conversation_message_get_message@Base 1:2.2.0 purple_conversation_message_get_sender@Base 1:2.2.0 purple_conversation_message_get_timestamp@Base 1:2.2.0 purple_conversation_new@Base 1:2.2.0 purple_conversation_present@Base 1:2.2.0 purple_conversation_set_account@Base 1:2.2.0 purple_conversation_set_features@Base 1:2.2.0 purple_conversation_set_logging@Base 1:2.2.0 purple_conversation_set_name@Base 1:2.2.0 purple_conversation_set_title@Base 1:2.2.0 purple_conversation_set_ui_ops@Base 1:2.2.0 purple_conversation_update@Base 1:2.2.0 purple_conversation_write@Base 1:2.2.0 purple_conversations_init@Base 1:2.2.0 purple_conversations_set_ui_ops@Base 1:2.2.0 purple_conversations_uninit@Base 1:2.2.0 purple_core_ensure_single_instance@Base 1:2.2.0 purple_core_get_ui@Base 1:2.2.0 purple_core_get_ui_ops@Base 1:2.2.0 purple_core_get_version@Base 1:2.2.0 purple_core_init@Base 1:2.2.0 purple_core_migrate@Base 1:2.2.0 purple_core_quit@Base 1:2.2.0 purple_core_set_ui_ops@Base 1:2.2.0 purple_email_is_valid@Base 1:2.2.0 purple_escape_filename@Base 1:2.2.0 purple_fd_get_ip@Base 1:2.2.0 purple_find_buddies@Base 1:2.2.0 purple_find_buddy@Base 1:2.2.0 purple_find_buddy_in_group@Base 1:2.2.0 purple_find_chat@Base 1:2.2.0 purple_find_conversation_with_account@Base 1:2.2.0 purple_find_group@Base 1:2.2.0 purple_find_prpl@Base 1:2.3.0 purple_get_attention_type_from_code@Base 1:2.2.0 purple_get_blist@Base 1:2.2.0 purple_get_chats@Base 1:2.2.0 purple_get_conversations@Base 1:2.2.0 purple_get_core@Base 1:2.2.0 purple_get_host_name@Base 1:2.5.0 purple_get_ims@Base 1:2.2.0 purple_got_protocol_handler_uri@Base 1:2.2.0 purple_group_destroy@Base 1:2.6.0 purple_group_get_accounts@Base 1:2.2.0 purple_group_get_name@Base 1:2.2.0 purple_group_new@Base 1:2.2.0 purple_group_on_account@Base 1:2.2.0 purple_home_dir@Base 1:2.2.0 purple_init@Base 1:2.2.0 purple_ip_address_is_valid@Base 1:2.4.0 purple_ipv4_address_is_valid@Base 1:2.6.0 purple_ipv6_address_is_valid@Base 1:2.6.0 purple_log_common_deleter@Base 1:2.2.0 purple_log_common_is_deletable@Base 1:2.2.0 purple_log_common_lister@Base 1:2.2.0 purple_log_common_sizer@Base 1:2.2.0 purple_log_common_total_sizer@Base 1:2.2.0 purple_log_common_writer@Base 1:2.2.0 purple_log_delete@Base 1:2.2.0 purple_log_free@Base 1:2.2.0 purple_log_get_activity_score@Base 1:2.6.0 purple_log_get_log_dir@Base 1:2.2.0 purple_log_get_logs@Base 1:2.2.0 purple_log_get_size@Base 1:2.2.0 purple_log_get_system_logs@Base 1:2.2.0 purple_log_get_total_size@Base 1:2.2.0 purple_log_init@Base 1:2.2.0 purple_log_is_deletable@Base 1:2.2.0 purple_log_logger_add@Base 1:2.2.0 purple_log_logger_free@Base 1:2.2.0 purple_log_logger_get@Base 1:2.2.0 purple_log_logger_get_options@Base 1:2.2.0 purple_log_logger_remove@Base 1:2.2.0 purple_log_logger_set@Base 1:2.2.0 purple_log_set_free@Base 1:2.2.0 purple_log_uninit@Base 1:2.2.0 purple_log_write@Base 1:2.2.0 purple_markup_escape_text@Base 1:2.6.0 purple_markup_get_css_property@Base 1:2.2.0 purple_markup_get_tag_name@Base 1:2.2.0 purple_markup_is_rtl@Base 1:2.6.0 purple_markup_linkify@Base 1:2.2.0 purple_markup_slice@Base 1:2.2.0 purple_markup_strip_html@Base 1:2.2.0 purple_markup_unescape_entity@Base 1:2.2.0 purple_menu_action_free@Base 1:2.2.0 purple_mime_decode_field@Base 1:2.2.0 purple_normalize@Base 1:2.2.0 purple_normalize_nocase@Base 1:2.2.0 purple_notify_close@Base 1:2.2.0 purple_notify_close_with_handle@Base 1:2.2.0 purple_notify_get_ui_ops@Base 1:2.2.0 purple_notify_init@Base 1:2.2.0 purple_notify_searchresults_column_add@Base 1:2.2.0 purple_notify_searchresults_column_get_title@Base 1:2.2.0 purple_notify_searchresults_column_new@Base 1:2.2.0 purple_notify_searchresults_free@Base 1:2.2.0 purple_notify_searchresults_get_columns_count@Base 1:2.2.0 purple_notify_searchresults_get_rows_count@Base 1:2.2.0 purple_notify_searchresults_new@Base 1:2.2.0 purple_notify_searchresults_new_rows@Base 1:2.2.0 purple_notify_searchresults_row_add@Base 1:2.2.0 purple_notify_searchresults_row_get@Base 1:2.2.0 purple_notify_set_ui_ops@Base 1:2.2.0 purple_notify_uninit@Base 1:2.2.0 purple_notify_user_info_add_pair@Base 1:2.2.0 purple_notify_user_info_add_pair_plaintext@Base 1:2.8.0 purple_notify_user_info_add_section_break@Base 1:2.2.0 purple_notify_user_info_add_section_header@Base 1:2.2.0 purple_notify_user_info_destroy@Base 1:2.2.0 purple_notify_user_info_entry_get_label@Base 1:2.2.0 purple_notify_user_info_entry_get_type@Base 1:2.2.0 purple_notify_user_info_entry_get_value@Base 1:2.2.0 purple_notify_user_info_entry_new@Base 1:2.2.0 purple_notify_user_info_entry_set_label@Base 1:2.2.0 purple_notify_user_info_entry_set_type@Base 1:2.2.0 purple_notify_user_info_entry_set_value@Base 1:2.2.0 purple_notify_user_info_get_entries@Base 1:2.2.0 purple_notify_user_info_get_text_with_newline@Base 1:2.2.0 purple_notify_user_info_new@Base 1:2.2.0 purple_notify_user_info_prepend_pair@Base 1:2.2.0 purple_notify_user_info_prepend_section_break@Base 1:2.5.0 purple_notify_user_info_prepend_section_header@Base 1:2.5.0 purple_notify_user_info_remove_entry@Base 1:2.2.0 purple_notify_user_info_remove_last_item@Base 1:2.2.0 purple_prefs_add_bool@Base 1:2.2.0 purple_prefs_add_int@Base 1:2.2.0 purple_prefs_add_none@Base 1:2.2.0 purple_prefs_add_path@Base 1:2.2.0 purple_prefs_add_path_list@Base 1:2.2.0 purple_prefs_add_string@Base 1:2.2.0 purple_prefs_add_string_list@Base 1:2.2.0 purple_prefs_destroy@Base 1:2.2.0 purple_prefs_disconnect_by_handle@Base 1:2.2.0 purple_prefs_disconnect_callback@Base 1:2.2.0 purple_prefs_exists@Base 1:2.2.0 purple_prefs_get_bool@Base 1:2.2.0 purple_prefs_get_children_names@Base 1:2.2.0 purple_prefs_get_int@Base 1:2.2.0 purple_prefs_get_path@Base 1:2.2.0 purple_prefs_get_path_list@Base 1:2.2.0 purple_prefs_get_string@Base 1:2.2.0 purple_prefs_get_string_list@Base 1:2.2.0 purple_prefs_get_type@Base 1:2.2.0 purple_prefs_init@Base 1:2.2.0 purple_prefs_load@Base 1:2.2.0 purple_prefs_remove@Base 1:2.2.0 purple_prefs_rename@Base 1:2.2.0 purple_prefs_rename_boolean_toggle@Base 1:2.2.0 purple_prefs_set_bool@Base 1:2.2.0 purple_prefs_set_int@Base 1:2.2.0 purple_prefs_set_path@Base 1:2.2.0 purple_prefs_set_path_list@Base 1:2.2.0 purple_prefs_set_string@Base 1:2.2.0 purple_prefs_set_string_list@Base 1:2.2.0 purple_prefs_trigger_callback@Base 1:2.2.0 purple_prefs_uninit@Base 1:2.2.0 purple_prefs_update_old@Base 1:2.2.0 purple_presence_add_status@Base 1:2.2.0 purple_presence_compare@Base 1:2.2.0 purple_presence_destroy@Base 1:2.2.0 purple_presence_get_account@Base 1:2.2.0 purple_presence_get_active_status@Base 1:2.2.0 purple_presence_get_buddy@Base 1:2.2.0 purple_presence_get_chat_user@Base 1:2.2.0 purple_presence_get_context@Base 1:2.2.0 purple_presence_get_conversation@Base 1:2.2.0 purple_presence_get_idle_time@Base 1:2.2.0 purple_presence_get_login_time@Base 1:2.2.0 purple_presence_get_status@Base 1:2.2.0 purple_presence_get_statuses@Base 1:2.2.0 purple_presence_is_available@Base 1:2.2.0 purple_presence_is_idle@Base 1:2.2.0 purple_presence_is_online@Base 1:2.2.0 purple_presence_is_status_active@Base 1:2.2.0 purple_presence_is_status_primitive_active@Base 1:2.2.0 purple_presence_new@Base 1:2.2.0 purple_presence_new_for_account@Base 1:2.2.0 purple_presence_new_for_buddy@Base 1:2.2.0 purple_presence_new_for_conv@Base 1:2.2.0 purple_presence_set_idle@Base 1:2.2.0 purple_presence_set_login_time@Base 1:2.2.0 purple_presence_set_status_active@Base 1:2.2.0 purple_presence_switch_status@Base 1:2.2.0 purple_primitive_get_id_from_type@Base 1:2.2.0 purple_primitive_get_name_from_type@Base 1:2.2.0 purple_primitive_get_type_from_id@Base 1:2.2.0 purple_program_is_valid@Base 1:2.2.0 purple_prpl_change_account_status@Base 1:2.3.0 purple_prpl_get_media_caps@Base 1:2.6.0 purple_prpl_get_statuses@Base 1:2.3.0 purple_prpl_got_account_actions@Base 1:2.6.0 purple_prpl_got_account_idle@Base 1:2.3.0 purple_prpl_got_account_login_time@Base 1:2.3.0 purple_prpl_got_attention@Base 1:2.5.0 purple_prpl_got_attention_in_chat@Base 1:2.5.0 purple_prpl_got_media_caps@Base 1:2.7.0 purple_prpl_got_user_idle@Base 1:2.3.0 purple_prpl_got_user_login_time@Base 1:2.3.0 purple_prpl_got_user_status_deactive@Base 1:2.3.0 purple_prpl_initiate_media@Base 1:2.6.0 purple_prpl_send_attention@Base 1:2.5.0 purple_restore_default_signal_handlers@Base 1:2.2.0 purple_roomlist_cancel_get_list@Base 1:2.2.0 purple_roomlist_expand_category@Base 1:2.2.0 purple_roomlist_field_get_hidden@Base 1:2.4.0 purple_roomlist_field_get_label@Base 1:2.4.0 purple_roomlist_field_get_type@Base 1:2.4.0 purple_roomlist_field_new@Base 1:2.2.0 purple_roomlist_get_fields@Base 1:2.4.0 purple_roomlist_get_in_progress@Base 1:2.2.0 purple_roomlist_get_list@Base 1:2.2.0 purple_roomlist_get_ui_ops@Base 1:2.2.0 purple_roomlist_new@Base 1:2.2.0 purple_roomlist_ref@Base 1:2.2.0 purple_roomlist_room_add@Base 1:2.2.0 purple_roomlist_room_get_fields@Base 1:2.4.0 purple_roomlist_room_get_name@Base 1:2.4.0 purple_roomlist_room_get_parent@Base 1:2.4.0 purple_roomlist_room_get_type@Base 1:2.4.0 purple_roomlist_room_join@Base 1:2.2.0 purple_roomlist_room_new@Base 1:2.2.0 purple_roomlist_set_fields@Base 1:2.2.0 purple_roomlist_set_in_progress@Base 1:2.2.0 purple_roomlist_set_ui_ops@Base 1:2.2.0 purple_roomlist_show_with_account@Base 1:2.2.0 purple_roomlist_unref@Base 1:2.2.0 purple_running_gnome@Base 1:2.2.0 purple_running_kde@Base 1:2.2.0 purple_running_osx@Base 1:2.2.0 purple_savedstatus_activate@Base 1:2.2.0 purple_savedstatus_activate_for_account@Base 1:2.2.0 purple_savedstatus_delete@Base 1:2.2.0 purple_savedstatus_delete_by_status@Base 1:2.2.0 purple_savedstatus_find@Base 1:2.2.0 purple_savedstatus_find_by_creation_time@Base 1:2.2.0 purple_savedstatus_find_transient_by_type_and_message@Base 1:2.2.0 purple_savedstatus_get_creation_time@Base 1:2.2.0 purple_savedstatus_get_current@Base 1:2.2.0 purple_savedstatus_get_default@Base 1:2.2.0 purple_savedstatus_get_idleaway@Base 1:2.2.0 purple_savedstatus_get_message@Base 1:2.2.0 purple_savedstatus_get_startup@Base 1:2.2.0 purple_savedstatus_get_substatus@Base 1:2.2.0 purple_savedstatus_get_title@Base 1:2.2.0 purple_savedstatus_get_type@Base 1:2.2.0 purple_savedstatus_has_substatuses@Base 1:2.2.0 purple_savedstatus_is_idleaway@Base 1:2.2.0 purple_savedstatus_is_transient@Base 1:2.2.0 purple_savedstatus_new@Base 1:2.2.0 purple_savedstatus_set_idleaway@Base 1:2.2.0 purple_savedstatus_set_message@Base 1:2.2.0 purple_savedstatus_set_substatus@Base 1:2.2.0 purple_savedstatus_set_title@Base 1:2.2.0 purple_savedstatus_set_type@Base 1:2.2.0 purple_savedstatus_substatus_get_message@Base 1:2.2.0 purple_savedstatus_substatus_get_type@Base 1:2.2.0 purple_savedstatus_unset_substatus@Base 1:2.2.0 purple_savedstatuses_get_all@Base 1:2.2.0 purple_savedstatuses_get_popular@Base 1:2.2.0 purple_savedstatuses_init@Base 1:2.2.0 purple_savedstatuses_uninit@Base 1:2.2.0 purple_serv_got_join_chat_failed@Base 1:2.5.0 purple_serv_got_private_alias@Base 1:2.4.0 purple_set_blist@Base 1:2.2.0 purple_smiley_delete@Base 1:2.5.0 purple_smiley_get_checksum@Base 1:2.5.0 purple_smiley_get_extension@Base 1:2.5.0 purple_smiley_get_full_path@Base 1:2.5.0 purple_smiley_get_shortcut@Base 1:2.5.0 purple_smiley_get_stored_image@Base 1:2.5.0 purple_smiley_new@Base 1:2.5.0 purple_smiley_new_from_file@Base 1:2.5.0 purple_smiley_set_data@Base 1:2.5.0 purple_smiley_set_shortcut@Base 1:2.5.0 purple_smileys_find_by_checksum@Base 1:2.5.0 purple_smileys_find_by_shortcut@Base 1:2.5.0 purple_smileys_get_all@Base 1:2.5.0 purple_smileys_get_storing_dir@Base 1:2.5.0 purple_smileys_init@Base 1:2.5.0 purple_smileys_uninit@Base 1:2.5.0 purple_socket_get_family@Base 1:2.7.0 purple_socket_speaks_ipv4@Base 1:2.7.0 purple_status_attr_destroy@Base 1:2.2.0 purple_status_attr_get_id@Base 1:2.2.0 purple_status_attr_get_name@Base 1:2.2.0 purple_status_attr_get_value@Base 1:2.2.0 purple_status_attr_new@Base 1:2.2.0 purple_status_compare@Base 1:2.2.0 purple_status_destroy@Base 1:2.2.0 purple_status_get_attr_boolean@Base 1:2.2.0 purple_status_get_attr_int@Base 1:2.2.0 purple_status_get_attr_string@Base 1:2.2.0 purple_status_get_attr_value@Base 1:2.2.0 purple_status_get_id@Base 1:2.2.0 purple_status_get_name@Base 1:2.2.0 purple_status_get_presence@Base 1:2.2.0 purple_status_get_type@Base 1:2.2.0 purple_status_init@Base 1:2.2.0 purple_status_is_active@Base 1:2.2.0 purple_status_is_available@Base 1:2.2.0 purple_status_is_exclusive@Base 1:2.2.0 purple_status_is_independent@Base 1:2.2.0 purple_status_is_online@Base 1:2.2.0 purple_status_new@Base 1:2.2.0 purple_status_set_active@Base 1:2.2.0 purple_status_set_active_with_attrs_list@Base 1:2.2.0 purple_status_set_attr_boolean@Base 1:2.2.0 purple_status_set_attr_int@Base 1:2.2.0 purple_status_set_attr_string@Base 1:2.2.0 purple_status_type_add_attr@Base 1:2.2.0 purple_status_type_destroy@Base 1:2.2.0 purple_status_type_find_with_id@Base 1:2.2.0 purple_status_type_get_attr@Base 1:2.2.0 purple_status_type_get_attrs@Base 1:2.2.0 purple_status_type_get_id@Base 1:2.2.0 purple_status_type_get_name@Base 1:2.2.0 purple_status_type_get_primary_attr@Base 1:2.2.0 purple_status_type_get_primitive@Base 1:2.2.0 purple_status_type_is_available@Base 1:2.2.0 purple_status_type_is_exclusive@Base 1:2.2.0 purple_status_type_is_independent@Base 1:2.2.0 purple_status_type_is_saveable@Base 1:2.2.0 purple_status_type_is_user_settable@Base 1:2.2.0 purple_status_type_new@Base 1:2.2.0 purple_status_type_new_full@Base 1:2.2.0 purple_status_type_set_primary_attr@Base 1:2.2.0 purple_status_uninit@Base 1:2.2.0 purple_str_add_cr@Base 1:2.2.0 purple_str_binary_to_ascii@Base 1:2.2.0 purple_str_has_prefix@Base 1:2.2.0 purple_str_has_suffix@Base 1:2.2.0 purple_str_seconds_to_string@Base 1:2.2.0 purple_str_size_to_units@Base 1:2.2.0 purple_strcasereplace@Base 1:2.2.0 purple_strcasestr@Base 1:2.2.0 purple_strdup_withhtml@Base 1:2.2.0 purple_strequal@Base 1:2.6.0 purple_strreplace@Base 1:2.2.0 purple_text_strip_mnemonic@Base 1:2.2.0 purple_time_build@Base 1:2.2.0 purple_unescape_filename@Base 1:2.2.0 purple_unescape_html@Base 1:2.2.0 purple_unescape_text@Base 1:2.7.0 purple_uri_list_extract_filenames@Base 1:2.2.0 purple_uri_list_extract_uris@Base 1:2.2.0 purple_url_decode@Base 1:2.2.0 purple_url_encode@Base 1:2.2.0 purple_user_dir@Base 1:2.2.0 purple_utf8_has_word@Base 1:2.2.0 purple_utf8_ncr_decode@Base 1:2.2.0 purple_utf8_ncr_encode@Base 1:2.2.0 purple_utf8_salvage@Base 1:2.2.0 purple_utf8_strcasecmp@Base 1:2.2.0 purple_utf8_strip_unprintables@Base 1:2.6.0 purple_utf8_try_convert@Base 1:2.2.0 purple_util_fetch_url_cancel@Base 1:2.2.0 purple_util_init@Base 1:2.3.0 purple_util_set_current_song@Base 1:2.4.0 purple_util_set_user_dir@Base 1:2.2.0 purple_util_uninit@Base 1:2.3.0 purple_util_write_data_to_file@Base 1:2.2.0 purple_util_write_data_to_file_absolute@Base 1:2.5.0 purple_uuid_random@Base 1:2.7.0 purple_xfer_add@Base 1:2.2.0 purple_xfer_cancel_local@Base 1:2.2.0 purple_xfer_cancel_remote@Base 1:2.2.0 purple_xfer_end@Base 1:2.2.0 purple_xfer_error@Base 1:2.2.0 purple_xfer_get_account@Base 1:2.2.0 purple_xfer_get_bytes_remaining@Base 1:2.2.0 purple_xfer_get_bytes_sent@Base 1:2.2.0 purple_xfer_get_end_time@Base 1:2.4.0 purple_xfer_get_filename@Base 1:2.2.0 purple_xfer_get_local_filename@Base 1:2.2.0 purple_xfer_get_local_port@Base 1:2.6.0 purple_xfer_get_remote_ip@Base 1:2.2.0 purple_xfer_get_remote_port@Base 1:2.6.0 purple_xfer_get_remote_user@Base 1:2.2.0 purple_xfer_get_size@Base 1:2.2.0 purple_xfer_get_start_time@Base 1:2.4.0 purple_xfer_get_status@Base 1:2.2.0 purple_xfer_get_thumbnail_mimetype@Base 1:2.7.0 purple_xfer_get_type@Base 1:2.2.0 purple_xfer_get_ui_ops@Base 1:2.2.0 purple_xfer_is_canceled@Base 1:2.2.0 purple_xfer_is_completed@Base 1:2.2.0 purple_xfer_new@Base 1:2.2.0 purple_xfer_prepare_thumbnail@Base 1:2.7.0 purple_xfer_ref@Base 1:2.2.0 purple_xfer_request@Base 1:2.2.0 purple_xfer_request_accepted@Base 1:2.2.0 purple_xfer_request_denied@Base 1:2.2.0 purple_xfer_set_bytes_sent@Base 1:2.2.0 purple_xfer_set_completed@Base 1:2.2.0 purple_xfer_set_filename@Base 1:2.2.0 purple_xfer_set_local_filename@Base 1:2.2.0 purple_xfer_set_message@Base 1:2.2.0 purple_xfer_set_size@Base 1:2.2.0 purple_xfer_start@Base 1:2.2.0 purple_xfer_unref@Base 1:2.2.0 purple_xfer_update_progress@Base 1:2.2.0 purple_xfers_get_all@Base 1:2.2.0 purple_xfers_get_ui_ops@Base 1:2.2.0 purple_xfers_init@Base 1:2.2.0 purple_xfers_set_ui_ops@Base 1:2.2.0 purple_xfers_uninit@Base 1:2.2.0 serv_add_deny@Base 1:2.2.0 serv_add_permit@Base 1:2.2.0 serv_alias_buddy@Base 1:2.2.0 serv_chat_invite@Base 1:2.2.0 serv_chat_leave@Base 1:2.2.0 serv_chat_send@Base 1:2.2.0 serv_chat_whisper@Base 1:2.2.0 serv_get_info@Base 1:2.2.0 serv_got_alias@Base 1:2.2.0 serv_got_attention@Base 1:2.2.0 serv_got_chat_in@Base 1:2.2.0 serv_got_chat_invite@Base 1:2.2.0 serv_got_chat_left@Base 1:2.2.0 serv_got_im@Base 1:2.2.0 serv_got_joined_chat@Base 1:2.2.0 serv_got_typing@Base 1:2.2.0 serv_got_typing_stopped@Base 1:2.2.0 serv_join_chat@Base 1:2.2.0 serv_move_buddy@Base 1:2.2.0 serv_reject_chat@Base 1:2.2.0 serv_rem_deny@Base 1:2.2.0 serv_rem_permit@Base 1:2.2.0 serv_send_attention@Base 1:2.2.0 serv_send_file@Base 1:2.2.0 serv_send_im@Base 1:2.2.0 serv_send_typing@Base 1:2.6.0 serv_set_info@Base 1:2.2.0 serv_set_permit_deny@Base 1:2.2.0 xmlnode_free@Base 1:2.2.0 xmlnode_get_attrib@Base 1:2.2.0 xmlnode_get_attrib_with_namespace@Base 1:2.2.0 xmlnode_get_data@Base 1:2.2.0 xmlnode_get_data_unescaped@Base 1:2.2.0 xmlnode_get_namespace@Base 1:2.2.0 xmlnode_get_prefix@Base 1:2.3.0 xmlnode_insert_child@Base 1:2.2.0 xmlnode_insert_data@Base 1:2.2.0 xmlnode_remove_attrib@Base 1:2.2.0 xmlnode_remove_attrib_with_namespace@Base 1:2.2.0 xmlnode_set_attrib@Base 1:2.2.0 xmlnode_set_attrib_full@Base 1:2.6.0 xmlnode_set_attrib_with_namespace@Base 1:2.2.0 xmlnode_set_attrib_with_prefix@Base 1:2.3.0 xmlnode_set_namespace@Base 1:2.2.0 xmlnode_set_prefix@Base 1:2.3.0 xmlnode_to_formatted_str@Base 1:2.2.0 xmlnode_to_str@Base 1:2.2.0 libpurple.so.0 libpurple0 #MINVER# * Build-Depends-Package: libpurple-dev PURPLE_DBUS_TYPE_PurpleAccount@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleAccountOption@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleAccountUiOps@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleAccountUserSplit@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleAttentionType@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleBlistNode@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleBlistUiOps@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleBuddy@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleBuddyIcon@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleBuddyIconSpec@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleBuddyList@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleCertificate@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleCertificatePool@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleCertificateScheme@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleCertificateVerificationRequest@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleCertificateVerifier@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleChat@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleCipher@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleCipherContext@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleCipherOps@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleCircBuffer@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleConnection@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleConnectionErrorInfo@Base 1:2.3.0 PURPLE_DBUS_TYPE_PurpleConnectionUiOps@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleContact@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleConvChat@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleConvChatBuddy@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleConvIm@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleConvMessage@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleConversation@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleConversationUiOps@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleCore@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleCoreUiOps@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleDebugUiOps@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleDesktopItem@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleDnsQueryData@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleDnsQueryUiOps@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleEventLoopUiOps@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleGroup@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleIdleUiOps@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleKeyValuePair@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleLog@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleLogCommonLoggerData@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleLogLogger@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleLogSet@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleMedia@Base 1:2.6.0 PURPLE_DBUS_TYPE_PurpleMediaBackend@Base 1:2.7.0 PURPLE_DBUS_TYPE_PurpleMediaBackendIface@Base 1:2.7.0 PURPLE_DBUS_TYPE_PurpleMediaCandidate@Base 1:2.6.0 PURPLE_DBUS_TYPE_PurpleMediaCodec@Base 1:2.6.0 PURPLE_DBUS_TYPE_PurpleMediaElementInfo@Base 1:2.6.0 PURPLE_DBUS_TYPE_PurpleMediaElementInfoClass@Base 1:2.6.0 PURPLE_DBUS_TYPE_PurpleMediaManager@Base 1:2.6.0 PURPLE_DBUS_TYPE_PurpleMediaManagerClass@Base 1:2.6.0 PURPLE_DBUS_TYPE_PurpleMenuAction@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleMimeDocument@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleMimePart@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleMood@Base 1:2.7.0 PURPLE_DBUS_TYPE_PurpleNetworkListenData@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleNotifySearchButton@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleNotifySearchColumn@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleNotifySearchResults@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleNotifyUiOps@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleNotifyUserInfo@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleNotifyUserInfoEntry@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurplePlugin@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurplePluginAction@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurplePluginInfo@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurplePluginLoaderInfo@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurplePluginPref@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurplePluginPrefFrame@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurplePluginProtocolInfo@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurplePluginUiInfo@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurplePounce@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurplePresence@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurplePrivacyUiOps@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleProxyConnectData@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleProxyInfo@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleRequestField@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleRequestFieldGroup@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleRequestFields@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleRequestUiOps@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleRoomlist@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleRoomlistField@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleRoomlistRoom@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleRoomlistUiOps@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleSavedStatus@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleSavedStatusSub@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleSmiley@Base 1:2.5.0 PURPLE_DBUS_TYPE_PurpleSmileyClass@Base 1:2.5.0 PURPLE_DBUS_TYPE_PurpleSoundTheme@Base 1:2.6.0 PURPLE_DBUS_TYPE_PurpleSoundThemeClass@Base 1:2.6.0 PURPLE_DBUS_TYPE_PurpleSoundThemeLoader@Base 1:2.6.0 PURPLE_DBUS_TYPE_PurpleSoundThemeLoaderClass@Base 1:2.6.0 PURPLE_DBUS_TYPE_PurpleSoundUiOps@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleSrvQueryData@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleSrvResponse@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleSrvTxtQueryData@Base 1:2.8.0 PURPLE_DBUS_TYPE_PurpleSrvTxtQueryUiOps@Base 1:2.8.0 PURPLE_DBUS_TYPE_PurpleSslConnection@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleSslOps@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleStatus@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleStatusAttr@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleStatusType@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleStoredImage@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleStringref@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleStunNatDiscovery@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleTheme@Base 1:2.6.0 PURPLE_DBUS_TYPE_PurpleThemeClass@Base 1:2.6.0 PURPLE_DBUS_TYPE_PurpleThemeLoader@Base 1:2.6.0 PURPLE_DBUS_TYPE_PurpleThemeLoaderClass@Base 1:2.6.0 PURPLE_DBUS_TYPE_PurpleThemeManager@Base 1:2.6.0 PURPLE_DBUS_TYPE_PurpleThemeManagerClass@Base 1:2.6.0 PURPLE_DBUS_TYPE_PurpleThumbnailSpec@Base 1:2.7.0 PURPLE_DBUS_TYPE_PurpleTxtResponse@Base 1:2.6.0 PURPLE_DBUS_TYPE_PurpleUtilFetchUrlData@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleValue@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleWhiteboard@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleWhiteboardPrplOps@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleWhiteboardUiOps@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleXfer@Base 1:2.2.0 PURPLE_DBUS_TYPE_PurpleXferUiOps@Base 1:2.2.0 PURPLE_DBUS_TYPE_UPnPMappingAddRemove@Base 1:2.2.0 PURPLE_DBUS_TYPE_xmlnode@Base 1:2.2.0 _purple_buddy_icon_set_old_icons_dir@Base 1:2.6.0 _purple_buddy_icons_account_loaded_cb@Base 1:2.6.0 _purple_buddy_icons_blist_loaded_cb@Base 1:2.6.0 _purple_connection_destroy@Base 1:2.6.0 _purple_connection_new@Base 1:2.6.0 _purple_connection_new_unregister@Base 1:2.6.0 _purple_oscar_convert@Base 1:2.6.0 dbus_signals@Base 1:2.6.0 empty_to_null@Base 1:2.6.0 null_to_empty@Base 1:2.6.0 purple_GList_to_array@Base 1:2.2.0 purple_GSList_to_array@Base 1:2.2.0 purple_account_add_buddies@Base 1:2.2.0 purple_account_add_buddies_with_invite@Base 1:2.8.0 purple_account_add_buddy@Base 1:2.2.0 purple_account_add_buddy_with_invite@Base 1:2.8.0 purple_account_change_password@Base 1:2.2.0 purple_account_clear_current_error@Base 1:2.3.0 purple_account_clear_settings@Base 1:2.2.0 purple_account_connect@Base 1:2.2.0 purple_account_destroy@Base 1:2.2.0 purple_account_destroy_log@Base 1:2.2.0 purple_account_disconnect@Base 1:2.2.0 purple_account_get_active_status@Base 1:2.2.0 purple_account_get_alias@Base 1:2.2.0 purple_account_get_bool@Base 1:2.2.0 purple_account_get_buddy_icon_path@Base 1:2.2.0 purple_account_get_check_mail@Base 1:2.2.0 purple_account_get_connection@Base 1:2.2.0 purple_account_get_current_error@Base 1:2.3.0 purple_account_get_enabled@Base 1:2.2.0 purple_account_get_int@Base 1:2.2.0 purple_account_get_log@Base 1:2.2.0 purple_account_get_name_for_display@Base 1:2.7.0 purple_account_get_password@Base 1:2.2.0 purple_account_get_presence@Base 1:2.2.0 purple_account_get_privacy_type@Base 1:2.7.0 purple_account_get_protocol_id@Base 1:2.2.0 purple_account_get_protocol_name@Base 1:2.2.0 purple_account_get_proxy_info@Base 1:2.2.0 purple_account_get_public_alias@Base 1:2.7.0 purple_account_get_remember_password@Base 1:2.2.0 purple_account_get_silence_suppression@Base 1:2.8.0 purple_account_get_status@Base 1:2.2.0 purple_account_get_status_type@Base 1:2.2.0 purple_account_get_status_type_with_primitive@Base 1:2.2.0 purple_account_get_status_types@Base 1:2.2.0 purple_account_get_string@Base 1:2.2.0 purple_account_get_ui_bool@Base 1:2.2.0 purple_account_get_ui_int@Base 1:2.2.0 purple_account_get_ui_string@Base 1:2.2.0 purple_account_get_user_info@Base 1:2.2.0 purple_account_get_username@Base 1:2.2.0 purple_account_is_connected@Base 1:2.2.0 purple_account_is_connecting@Base 1:2.2.0 purple_account_is_disconnected@Base 1:2.2.0 purple_account_is_status_active@Base 1:2.2.0 purple_account_new@Base 1:2.2.0 purple_account_notify_added@Base 1:2.2.0 purple_account_option_add_list_item@Base 1:2.2.0 purple_account_option_bool_new@Base 1:2.2.0 purple_account_option_destroy@Base 1:2.2.0 purple_account_option_get_default_bool@Base 1:2.2.0 purple_account_option_get_default_int@Base 1:2.2.0 purple_account_option_get_default_list_value@Base 1:2.2.0 purple_account_option_get_default_string@Base 1:2.2.0 purple_account_option_get_list@Base 1:2.2.0 purple_account_option_get_masked@Base 1:2.2.0 purple_account_option_get_setting@Base 1:2.2.0 purple_account_option_get_text@Base 1:2.2.0 purple_account_option_get_type@Base 1:2.2.0 purple_account_option_int_new@Base 1:2.2.0 purple_account_option_list_new@Base 1:2.2.0 purple_account_option_new@Base 1:2.2.0 purple_account_option_set_default_bool@Base 1:2.2.0 purple_account_option_set_default_int@Base 1:2.2.0 purple_account_option_set_default_string@Base 1:2.2.0 purple_account_option_set_list@Base 1:2.2.0 purple_account_option_set_masked@Base 1:2.2.0 purple_account_option_string_new@Base 1:2.2.0 purple_account_register@Base 1:2.2.0 purple_account_remove_buddies@Base 1:2.2.0 purple_account_remove_buddy@Base 1:2.2.0 purple_account_remove_group@Base 1:2.2.0 purple_account_remove_setting@Base 1:2.6.0 purple_account_request_add@Base 1:2.2.0 purple_account_request_authorization@Base 1:2.2.0 purple_account_request_change_password@Base 1:2.2.0 purple_account_request_change_user_info@Base 1:2.2.0 purple_account_request_close@Base 1:2.2.0 purple_account_request_close_with_account@Base 1:2.2.0 purple_account_request_password@Base 1:2.2.0 purple_account_set_alias@Base 1:2.2.0 purple_account_set_bool@Base 1:2.2.0 purple_account_set_buddy_icon_path@Base 1:2.2.0 purple_account_set_check_mail@Base 1:2.2.0 purple_account_set_connection@Base 1:2.2.0 purple_account_set_enabled@Base 1:2.2.0 purple_account_set_int@Base 1:2.2.0 purple_account_set_password@Base 1:2.2.0 purple_account_set_privacy_type@Base 1:2.7.0 purple_account_set_protocol_id@Base 1:2.2.0 purple_account_set_proxy_info@Base 1:2.2.0 purple_account_set_public_alias@Base 1:2.7.0 purple_account_set_register_callback@Base 1:2.2.0 purple_account_set_remember_password@Base 1:2.2.0 purple_account_set_silence_suppression@Base 1:2.8.0 purple_account_set_status@Base 1:2.2.0 purple_account_set_status_list@Base 1:2.2.0 purple_account_set_status_types@Base 1:2.2.0 purple_account_set_string@Base 1:2.2.0 purple_account_set_ui_bool@Base 1:2.2.0 purple_account_set_ui_int@Base 1:2.2.0 purple_account_set_ui_string@Base 1:2.2.0 purple_account_set_user_info@Base 1:2.2.0 purple_account_set_username@Base 1:2.2.0 purple_account_supports_offline_message@Base 1:2.2.0 purple_account_unregister@Base 1:2.2.0 purple_account_user_split_destroy@Base 1:2.2.0 purple_account_user_split_get_default_value@Base 1:2.2.0 purple_account_user_split_get_reverse@Base 1:2.2.0 purple_account_user_split_get_separator@Base 1:2.2.0 purple_account_user_split_get_text@Base 1:2.2.0 purple_account_user_split_new@Base 1:2.2.0 purple_account_user_split_set_reverse@Base 1:2.2.0 purple_accounts_add@Base 1:2.2.0 purple_accounts_delete@Base 1:2.2.0 purple_accounts_find@Base 1:2.2.0 purple_accounts_find_any@Base 1:2.2.0 purple_accounts_find_connected@Base 1:2.2.0 purple_accounts_find_ext@Base 1:2.2.0 purple_accounts_get_all@Base 1:2.2.0 purple_accounts_get_all_active@Base 1:2.2.0 purple_accounts_get_handle@Base 1:2.2.0 purple_accounts_get_ui_ops@Base 1:2.2.0 purple_accounts_init@Base 1:2.2.0 purple_accounts_remove@Base 1:2.2.0 purple_accounts_reorder@Base 1:2.2.0 purple_accounts_restore_current_statuses@Base 1:2.2.0 purple_accounts_set_ui_ops@Base 1:2.2.0 purple_accounts_uninit@Base 1:2.2.0 purple_attention_type_get_icon_name@Base 1:2.4.0 purple_attention_type_get_incoming_desc@Base 1:2.4.0 purple_attention_type_get_name@Base 1:2.4.0 purple_attention_type_get_outgoing_desc@Base 1:2.4.0 purple_attention_type_get_unlocalized_name@Base 1:2.4.0 purple_attention_type_new@Base 1:2.4.0 purple_attention_type_set_icon_name@Base 1:2.4.0 purple_attention_type_set_incoming_desc@Base 1:2.4.0 purple_attention_type_set_name@Base 1:2.4.0 purple_attention_type_set_outgoing_desc@Base 1:2.4.0 purple_attention_type_set_unlocalized_name@Base 1:2.4.0 purple_base16_decode@Base 1:2.2.0 purple_base16_encode@Base 1:2.2.0 purple_base16_encode_chunked@Base 1:2.2.0 purple_base64_decode@Base 1:2.2.0 purple_base64_encode@Base 1:2.2.0 purple_blist_add_account@Base 1:2.2.0 purple_blist_add_buddy@Base 1:2.2.0 purple_blist_add_chat@Base 1:2.2.0 purple_blist_add_contact@Base 1:2.2.0 purple_blist_add_group@Base 1:2.2.0 purple_blist_alias_buddy@Base 1:2.2.0 purple_blist_alias_chat@Base 1:2.2.0 purple_blist_alias_contact@Base 1:2.2.0 purple_blist_destroy@Base 1:2.2.0 purple_blist_find_chat@Base 1:2.2.0 purple_blist_get_buddies@Base 1:2.6.0 purple_blist_get_group_online_count@Base 1:2.2.0 purple_blist_get_group_size@Base 1:2.2.0 purple_blist_get_handle@Base 1:2.2.0 purple_blist_get_root@Base 1:2.2.0 purple_blist_get_ui_data@Base 1:2.6.0 purple_blist_get_ui_ops@Base 1:2.2.0 purple_blist_init@Base 1:2.2.0 purple_blist_load@Base 1:2.2.0 purple_blist_merge_contact@Base 1:2.2.0 purple_blist_new@Base 1:2.2.0 purple_blist_node_get_bool@Base 1:2.2.0 purple_blist_node_get_extended_menu@Base 1:2.2.0 purple_blist_node_get_first_child@Base 1:2.4.0 purple_blist_node_get_flags@Base 1:2.2.0 purple_blist_node_get_int@Base 1:2.2.0 purple_blist_node_get_parent@Base 1:2.4.0 purple_blist_node_get_sibling_next@Base 1:2.4.0 purple_blist_node_get_sibling_prev@Base 1:2.4.0 purple_blist_node_get_string@Base 1:2.2.0 purple_blist_node_get_type@Base 1:2.2.0 purple_blist_node_get_ui_data@Base 1:2.6.0 purple_blist_node_next@Base 1:2.2.0 purple_blist_node_remove_setting@Base 1:2.2.0 purple_blist_node_set_bool@Base 1:2.2.0 purple_blist_node_set_flags@Base 1:2.2.0 purple_blist_node_set_int@Base 1:2.2.0 purple_blist_node_set_string@Base 1:2.2.0 purple_blist_node_set_ui_data@Base 1:2.6.0 purple_blist_remove_account@Base 1:2.2.0 purple_blist_remove_buddy@Base 1:2.2.0 purple_blist_remove_chat@Base 1:2.2.0 purple_blist_remove_contact@Base 1:2.2.0 purple_blist_remove_group@Base 1:2.2.0 purple_blist_rename_buddy@Base 1:2.2.0 purple_blist_rename_group@Base 1:2.2.0 purple_blist_request_add_buddy@Base 1:2.2.0 purple_blist_request_add_chat@Base 1:2.2.0 purple_blist_request_add_group@Base 1:2.2.0 purple_blist_schedule_save@Base 1:2.2.0 purple_blist_server_alias_buddy@Base 1:2.2.0 purple_blist_set_ui_data@Base 1:2.6.0 purple_blist_set_ui_ops@Base 1:2.2.0 purple_blist_set_visible@Base 1:2.2.0 purple_blist_show@Base 1:2.2.0 purple_blist_uninit@Base 1:2.2.0 purple_blist_update_buddy_icon@Base 1:2.2.0 purple_blist_update_buddy_status@Base 1:2.2.0 purple_blist_update_node_icon@Base 1:2.5.0 purple_buddy_destroy@Base 1:2.6.0 purple_buddy_get_account@Base 1:2.2.0 purple_buddy_get_alias@Base 1:2.2.0 purple_buddy_get_alias_only@Base 1:2.2.0 purple_buddy_get_contact@Base 1:2.2.0 purple_buddy_get_contact_alias@Base 1:2.2.0 purple_buddy_get_group@Base 1:2.2.0 purple_buddy_get_icon@Base 1:2.2.0 purple_buddy_get_local_alias@Base 1:2.2.0 purple_buddy_get_local_buddy_alias@Base 1:2.6.0 purple_buddy_get_media_caps@Base 1:2.7.0 purple_buddy_get_name@Base 1:2.2.0 purple_buddy_get_presence@Base 1:2.2.0 purple_buddy_get_protocol_data@Base 1:2.6.0 purple_buddy_get_server_alias@Base 1:2.2.0 purple_buddy_icon_get_account@Base 1:2.2.0 purple_buddy_icon_get_checksum@Base 1:2.2.0 purple_buddy_icon_get_data@Base 1:2.2.0 purple_buddy_icon_get_extension@Base 1:2.2.0 purple_buddy_icon_get_full_path@Base 1:2.2.0 purple_buddy_icon_get_scale_size@Base 1:2.2.0 purple_buddy_icon_get_username@Base 1:2.2.0 purple_buddy_icon_new@Base 1:2.2.0 purple_buddy_icon_ref@Base 1:2.2.0 purple_buddy_icon_set_data@Base 1:2.2.0 purple_buddy_icon_unref@Base 1:2.2.0 purple_buddy_icon_update@Base 1:2.2.0 purple_buddy_icons_find@Base 1:2.2.0 purple_buddy_icons_find_account_icon@Base 1:2.2.0 purple_buddy_icons_find_custom_icon@Base 1:2.2.0 purple_buddy_icons_get_account_icon_timestamp@Base 1:2.2.0 purple_buddy_icons_get_cache_dir@Base 1:2.2.0 purple_buddy_icons_get_checksum_for_user@Base 1:2.2.0 purple_buddy_icons_get_handle@Base 1:2.2.0 purple_buddy_icons_has_custom_icon@Base 1:2.2.0 purple_buddy_icons_init@Base 1:2.2.0 purple_buddy_icons_is_caching@Base 1:2.2.0 purple_buddy_icons_node_find_custom_icon@Base 1:2.5.0 purple_buddy_icons_node_has_custom_icon@Base 1:2.5.0 purple_buddy_icons_node_set_custom_icon@Base 1:2.5.0 purple_buddy_icons_node_set_custom_icon_from_file@Base 1:2.5.0 purple_buddy_icons_set_account_icon@Base 1:2.2.0 purple_buddy_icons_set_cache_dir@Base 1:2.2.0 purple_buddy_icons_set_caching@Base 1:2.2.0 purple_buddy_icons_set_custom_icon@Base 1:2.2.0 purple_buddy_icons_set_for_user@Base 1:2.2.0 purple_buddy_icons_uninit@Base 1:2.2.0 purple_buddy_new@Base 1:2.2.0 purple_buddy_set_icon@Base 1:2.2.0 purple_buddy_set_media_caps@Base 1:2.7.0 purple_buddy_set_protocol_data@Base 1:2.6.0 purple_build_dir@Base 1:2.2.0 purple_certificate_add_ca_search_path@Base 1:2.4.0 purple_certificate_check_signature_chain@Base 1:2.2.0 purple_certificate_check_signature_chain_with_failing@Base 1:2.6.0 purple_certificate_check_subject_name@Base 1:2.2.0 purple_certificate_copy@Base 1:2.2.0 purple_certificate_copy_list@Base 1:2.2.0 purple_certificate_destroy@Base 1:2.2.0 purple_certificate_destroy_list@Base 1:2.2.0 purple_certificate_display_x509@Base 1:2.2.0 purple_certificate_export@Base 1:2.2.0 purple_certificate_find_pool@Base 1:2.2.0 purple_certificate_find_scheme@Base 1:2.2.0 purple_certificate_find_verifier@Base 1:2.2.0 purple_certificate_get_fingerprint_sha1@Base 1:2.2.0 purple_certificate_get_handle@Base 1:2.2.0 purple_certificate_get_issuer_unique_id@Base 1:2.2.0 purple_certificate_get_pools@Base 1:2.2.0 purple_certificate_get_schemes@Base 1:2.2.0 purple_certificate_get_subject_name@Base 1:2.2.0 purple_certificate_get_times@Base 1:2.2.0 purple_certificate_get_unique_id@Base 1:2.2.0 purple_certificate_get_verifiers@Base 1:2.2.0 purple_certificate_import@Base 1:2.2.0 purple_certificate_init@Base 1:2.2.0 purple_certificate_pool_contains@Base 1:2.2.0 purple_certificate_pool_delete@Base 1:2.2.0 purple_certificate_pool_destroy_idlist@Base 1:2.2.0 purple_certificate_pool_get_idlist@Base 1:2.2.0 purple_certificate_pool_get_scheme@Base 1:2.2.0 purple_certificate_pool_mkpath@Base 1:2.2.0 purple_certificate_pool_retrieve@Base 1:2.2.0 purple_certificate_pool_store@Base 1:2.2.0 purple_certificate_pool_usable@Base 1:2.2.0 purple_certificate_register_pool@Base 1:2.2.0 purple_certificate_register_scheme@Base 1:2.2.0 purple_certificate_register_verifier@Base 1:2.2.0 purple_certificate_signed_by@Base 1:2.2.0 purple_certificate_uninit@Base 1:2.2.0 purple_certificate_unregister_pool@Base 1:2.2.0 purple_certificate_unregister_scheme@Base 1:2.2.0 purple_certificate_unregister_verifier@Base 1:2.2.0 purple_certificate_verify@Base 1:2.2.0 purple_certificate_verify_complete@Base 1:2.2.0 purple_certificates_import@Base 1:2.7.0 purple_chat_destroy@Base 1:2.6.0 purple_chat_get_account@Base 1:2.4.0 purple_chat_get_components@Base 1:2.4.0 purple_chat_get_group@Base 1:2.2.0 purple_chat_get_name@Base 1:2.2.0 purple_chat_new@Base 1:2.2.0 purple_des3_cipher_get_ops@Base 1:2.7.11 purple_des_cipher_get_ops@Base 1:2.7.11 purple_hmac_cipher_get_ops@Base 1:2.7.11 purple_md4_cipher_get_ops@Base 1:2.7.11 purple_md5_cipher_get_ops@Base 1:2.7.11 purple_rc4_cipher_get_ops@Base 1:2.7.11 purple_sha1_cipher_get_ops@Base 1:2.7.11 purple_sha256_cipher_get_ops@Base 1:2.7.11 purple_cipher_context_append@Base 1:2.2.0 purple_cipher_context_decrypt@Base 1:2.2.0 purple_cipher_context_destroy@Base 1:2.2.0 purple_cipher_context_digest@Base 1:2.2.0 purple_cipher_context_digest_to_str@Base 1:2.2.0 purple_cipher_context_encrypt@Base 1:2.2.0 purple_cipher_context_get_batch_mode@Base 1:2.4.0 purple_cipher_context_get_block_size@Base 1:2.4.0 purple_cipher_context_get_data@Base 1:2.2.0 purple_cipher_context_get_key_size@Base 1:2.2.0 purple_cipher_context_get_option@Base 1:2.2.0 purple_cipher_context_get_salt_size@Base 1:2.2.0 purple_cipher_context_new@Base 1:2.2.0 purple_cipher_context_new_by_name@Base 1:2.2.0 purple_cipher_context_reset@Base 1:2.2.0 purple_cipher_context_set_batch_mode@Base 1:2.4.0 purple_cipher_context_set_data@Base 1:2.2.0 purple_cipher_context_set_iv@Base 1:2.2.0 purple_cipher_context_set_key@Base 1:2.2.0 purple_cipher_context_set_key_with_len@Base 1:2.4.0 purple_cipher_context_set_option@Base 1:2.2.0 purple_cipher_context_set_salt@Base 1:2.2.0 purple_cipher_digest_region@Base 1:2.2.0 purple_cipher_get_capabilities@Base 1:2.2.0 purple_cipher_get_name@Base 1:2.2.0 purple_cipher_http_digest_calculate_response@Base 1:2.2.0 purple_cipher_http_digest_calculate_session_key@Base 1:2.2.0 purple_ciphers_find_cipher@Base 1:2.2.0 purple_ciphers_get_ciphers@Base 1:2.2.0 purple_ciphers_get_handle@Base 1:2.2.0 purple_ciphers_init@Base 1:2.2.0 purple_ciphers_register_cipher@Base 1:2.2.0 purple_ciphers_uninit@Base 1:2.2.0 purple_ciphers_unregister_cipher@Base 1:2.2.0 purple_circ_buffer_append@Base 1:2.2.0 purple_circ_buffer_destroy@Base 1:2.2.0 purple_circ_buffer_get_max_read@Base 1:2.2.0 purple_circ_buffer_mark_read@Base 1:2.2.0 purple_circ_buffer_new@Base 1:2.2.0 purple_cmd_do_command@Base 1:2.2.0 purple_cmd_help@Base 1:2.2.0 purple_cmd_list@Base 1:2.2.0 purple_cmd_register@Base 1:2.2.0 purple_cmd_unregister@Base 1:2.2.0 purple_cmds_get_handle@Base 1:2.5.0 purple_cmds_init@Base 1:2.5.0 purple_cmds_uninit@Base 1:2.5.0 purple_connection_destroy@Base 1:2.2.0 purple_connection_error@Base 1:2.2.0 purple_connection_error_is_fatal@Base 1:2.3.0 purple_connection_error_reason@Base 1:2.3.0 purple_connection_get_account@Base 1:2.2.0 purple_connection_get_display_name@Base 1:2.2.0 purple_connection_get_password@Base 1:2.2.0 purple_connection_get_protocol_data@Base 1:2.6.0 purple_connection_get_prpl@Base 1:2.4.0 purple_connection_get_state@Base 1:2.2.0 purple_connection_new@Base 1:2.2.0 purple_connection_new_unregister@Base 1:2.2.0 purple_connection_notice@Base 1:2.2.0 purple_connection_set_account@Base 1:2.2.0 purple_connection_set_display_name@Base 1:2.2.0 purple_connection_set_protocol_data@Base 1:2.6.0 purple_connection_set_state@Base 1:2.2.0 purple_connection_ssl_error@Base 1:2.3.0 purple_connection_update_progress@Base 1:2.2.0 purple_connections_disconnect_all@Base 1:2.2.0 purple_connections_get_all@Base 1:2.2.0 purple_connections_get_connecting@Base 1:2.2.0 purple_connections_get_handle@Base 1:2.2.0 purple_connections_get_ui_ops@Base 1:2.2.0 purple_connections_init@Base 1:2.2.0 purple_connections_set_ui_ops@Base 1:2.2.0 purple_connections_uninit@Base 1:2.2.0 purple_contact_destroy@Base 1:2.6.0 purple_contact_get_alias@Base 1:2.2.0 purple_contact_get_group@Base 1:2.7.0 purple_contact_get_priority_buddy@Base 1:2.2.0 purple_contact_invalidate_priority_buddy@Base 1:2.2.0 purple_contact_new@Base 1:2.2.0 purple_contact_on_account@Base 1:2.2.0 purple_contact_set_alias@Base 1:2.2.0 purple_conv_chat_add_user@Base 1:2.2.0 purple_conv_chat_add_users@Base 1:2.2.0 purple_conv_chat_cb_destroy@Base 1:2.2.0 purple_conv_chat_cb_find@Base 1:2.2.0 purple_conv_chat_cb_get_attribute@Base 1:2.8.0 purple_conv_chat_cb_get_attribute_keys@Base 1:2.8.0 purple_conv_chat_cb_get_name@Base 1:2.2.0 purple_conv_chat_cb_new@Base 1:2.2.0 purple_conv_chat_cb_set_attribute@Base 1:2.8.0 purple_conv_chat_cb_set_attributes@Base 1:2.8.0 purple_conv_chat_clear_users@Base 1:2.2.0 purple_conv_chat_find_user@Base 1:2.2.0 purple_conv_chat_get_conversation@Base 1:2.2.0 purple_conv_chat_get_id@Base 1:2.2.0 purple_conv_chat_get_ignored@Base 1:2.2.0 purple_conv_chat_get_ignored_user@Base 1:2.2.0 purple_conv_chat_get_nick@Base 1:2.2.0 purple_conv_chat_get_topic@Base 1:2.2.0 purple_conv_chat_get_users@Base 1:2.2.0 purple_conv_chat_has_left@Base 1:2.2.0 purple_conv_chat_ignore@Base 1:2.2.0 purple_conv_chat_invite_user@Base 1:2.6.0 purple_conv_chat_is_user_ignored@Base 1:2.2.0 purple_conv_chat_left@Base 1:2.2.0 purple_conv_chat_remove_user@Base 1:2.2.0 purple_conv_chat_remove_users@Base 1:2.2.0 purple_conv_chat_rename_user@Base 1:2.2.0 purple_conv_chat_send@Base 1:2.2.0 purple_conv_chat_send_with_flags@Base 1:2.2.0 purple_conv_chat_set_id@Base 1:2.2.0 purple_conv_chat_set_ignored@Base 1:2.2.0 purple_conv_chat_set_nick@Base 1:2.2.0 purple_conv_chat_set_topic@Base 1:2.2.0 purple_conv_chat_set_users@Base 1:2.2.0 purple_conv_chat_unignore@Base 1:2.2.0 purple_conv_chat_user_get_flags@Base 1:2.2.0 purple_conv_chat_user_set_flags@Base 1:2.2.0 purple_conv_chat_write@Base 1:2.2.0 purple_conv_custom_smiley_add@Base 1:2.2.0 purple_conv_custom_smiley_close@Base 1:2.2.0 purple_conv_custom_smiley_write@Base 1:2.2.0 purple_conv_im_get_conversation@Base 1:2.2.0 purple_conv_im_get_icon@Base 1:2.2.0 purple_conv_im_get_send_typed_timeout@Base 1:2.2.0 purple_conv_im_get_type_again@Base 1:2.2.0 purple_conv_im_get_typing_state@Base 1:2.2.0 purple_conv_im_get_typing_timeout@Base 1:2.2.0 purple_conv_im_send@Base 1:2.2.0 purple_conv_im_send_with_flags@Base 1:2.2.0 purple_conv_im_set_icon@Base 1:2.2.0 purple_conv_im_set_type_again@Base 1:2.2.0 purple_conv_im_set_typing_state@Base 1:2.2.0 purple_conv_im_start_send_typed_timeout@Base 1:2.2.0 purple_conv_im_start_typing_timeout@Base 1:2.2.0 purple_conv_im_stop_send_typed_timeout@Base 1:2.2.0 purple_conv_im_stop_typing_timeout@Base 1:2.2.0 purple_conv_im_update_typing@Base 1:2.2.0 purple_conv_im_write@Base 1:2.2.0 purple_conv_present_error@Base 1:2.2.0 purple_conv_send_confirm@Base 1:2.2.0 purple_conversation_autoset_title@Base 1:2.2.0 purple_conversation_clear_message_history@Base 1:2.2.0 purple_conversation_close_logs@Base 1:2.2.0 purple_conversation_destroy@Base 1:2.2.0 purple_conversation_do_command@Base 1:2.2.0 purple_conversation_foreach@Base 1:2.2.0 purple_conversation_get_account@Base 1:2.2.0 purple_conversation_get_chat_data@Base 1:2.2.0 purple_conversation_get_data@Base 1:2.2.0 purple_conversation_get_extended_menu@Base 1:2.2.0 purple_conversation_get_features@Base 1:2.2.0 purple_conversation_get_gc@Base 1:2.2.0 purple_conversation_get_im_data@Base 1:2.2.0 purple_conversation_get_message_history@Base 1:2.2.0 purple_conversation_get_name@Base 1:2.2.0 purple_conversation_get_title@Base 1:2.2.0 purple_conversation_get_type@Base 1:2.2.0 purple_conversation_get_ui_ops@Base 1:2.2.0 purple_conversation_has_focus@Base 1:2.2.0 purple_conversation_is_logging@Base 1:2.2.0 purple_conversation_message_get_flags@Base 1:2.2.0 purple_conversation_message_get_message@Base 1:2.2.0 purple_conversation_message_get_sender@Base 1:2.2.0 purple_conversation_message_get_timestamp@Base 1:2.2.0 purple_conversation_new@Base 1:2.2.0 purple_conversation_present@Base 1:2.2.0 purple_conversation_set_account@Base 1:2.2.0 purple_conversation_set_data@Base 1:2.2.0 purple_conversation_set_features@Base 1:2.2.0 purple_conversation_set_logging@Base 1:2.2.0 purple_conversation_set_name@Base 1:2.2.0 purple_conversation_set_title@Base 1:2.2.0 purple_conversation_set_ui_ops@Base 1:2.2.0 purple_conversation_update@Base 1:2.2.0 purple_conversation_write@Base 1:2.2.0 purple_conversations_get_handle@Base 1:2.2.0 purple_conversations_init@Base 1:2.2.0 purple_conversations_set_ui_ops@Base 1:2.2.0 purple_conversations_uninit@Base 1:2.2.0 purple_core_ensure_single_instance@Base 1:2.2.0 purple_core_get_ui@Base 1:2.2.0 purple_core_get_ui_info@Base 1:2.2.0 purple_core_get_ui_ops@Base 1:2.2.0 purple_core_get_version@Base 1:2.2.0 purple_core_init@Base 1:2.2.0 purple_core_migrate@Base 1:2.2.0 purple_core_quit@Base 1:2.2.0 purple_core_quit_cb@Base 1:2.2.0 purple_core_set_ui_ops@Base 1:2.2.0 purple_date_format_full@Base 1:2.2.0 purple_date_format_long@Base 1:2.2.0 purple_date_format_short@Base 1:2.2.0 purple_dbus_get_connection@Base 1:2.2.0 purple_dbus_get_handle@Base 1:2.2.0 purple_dbus_get_init_error@Base 1:2.2.0 purple_dbus_id_to_pointer@Base 1:2.2.0 purple_dbus_id_to_pointer_error@Base 1:2.2.0 purple_dbus_init@Base 1:2.2.0 purple_dbus_init_ids@Base 1:2.2.0 purple_dbus_is_owner@Base 1:2.2.0 purple_dbus_iter_hash_table@Base 1:2.2.0 purple_dbus_message_get_args@Base 1:2.2.0 purple_dbus_message_get_args_valist@Base 1:2.2.0 purple_dbus_message_iter_get_args@Base 1:2.2.0 purple_dbus_message_iter_get_args_valist@Base 1:2.2.0 purple_dbus_pointer_to_id@Base 1:2.2.0 purple_dbus_pointer_to_id_error@Base 1:2.2.0 purple_dbus_register_bindings@Base 1:2.2.0 purple_dbus_register_pointer@Base 1:2.2.0 purple_dbus_signal_emit_purple@Base 1:2.2.0 purple_dbus_uninit@Base 1:2.2.0 purple_dbus_unregister_pointer@Base 1:2.2.0 purple_dbusify_GList@Base 1:2.2.0 purple_dbusify_GSList@Base 1:2.2.0 purple_debug@Base 1:2.2.0 purple_debug_error@Base 1:2.2.0 purple_debug_fatal@Base 1:2.2.0 purple_debug_get_ui_ops@Base 1:2.2.0 purple_debug_info@Base 1:2.2.0 purple_debug_init@Base 1:2.2.0 purple_debug_is_enabled@Base 1:2.2.0 purple_debug_is_unsafe@Base 1:2.6.0 purple_debug_is_verbose@Base 1:2.6.0 purple_debug_misc@Base 1:2.2.0 purple_debug_set_enabled@Base 1:2.2.0 purple_debug_set_ui_ops@Base 1:2.2.0 purple_debug_set_unsafe@Base 1:2.6.0 purple_debug_set_verbose@Base 1:2.6.0 purple_debug_warning@Base 1:2.2.0 purple_desktop_item_copy@Base 1:2.2.0 purple_desktop_item_get_entry_type@Base 1:2.2.0 purple_desktop_item_get_string@Base 1:2.2.0 purple_desktop_item_get_type@Base 1:2.2.0 purple_desktop_item_new_from_file@Base 1:2.2.0 purple_desktop_item_unref@Base 1:2.2.0 purple_dnsquery_a@Base 1:2.2.0 purple_dnsquery_a_account@Base 1:2.8.0 purple_dnsquery_destroy@Base 1:2.2.0 purple_dnsquery_get_host@Base 1:2.2.0 purple_dnsquery_get_port@Base 1:2.2.0 purple_dnsquery_get_ui_ops@Base 1:2.2.0 purple_dnsquery_init@Base 1:2.2.0 purple_dnsquery_set_ui_ops@Base 1:2.2.0 purple_dnsquery_uninit@Base 1:2.2.0 purple_email_is_valid@Base 1:2.2.0 purple_escape_filename@Base 1:2.2.0 purple_eventloop_get_ui_ops@Base 1:2.2.0 purple_eventloop_set_ui_ops@Base 1:2.2.0 purple_fd_get_ip@Base 1:2.2.0 purple_find_buddies@Base 1:2.2.0 purple_find_buddy@Base 1:2.2.0 purple_find_buddy_in_group@Base 1:2.2.0 purple_find_chat@Base 1:2.2.0 purple_find_conversation_with_account@Base 1:2.2.0 purple_find_group@Base 1:2.2.0 purple_find_pounce@Base 1:2.2.0 purple_find_prpl@Base 1:2.2.0 purple_gai_strerror@Base 1:2.4.0 purple_get_attention_type_from_code@Base 1:2.2.0 purple_get_blist@Base 1:2.2.0 purple_get_chats@Base 1:2.2.0 purple_get_conversations@Base 1:2.2.0 purple_get_core@Base 1:2.2.0 purple_get_host_name@Base 1:2.5.0 purple_get_ims@Base 1:2.2.0 purple_get_tzoff_str@Base 1:2.2.0 purple_global_proxy_get_info@Base 1:2.2.0 purple_global_proxy_set_info@Base 1:2.6.0 purple_got_protocol_handler_uri@Base 1:2.2.0 purple_group_destroy@Base 1:2.6.0 purple_group_get_accounts@Base 1:2.2.0 purple_group_get_name@Base 1:2.2.0 purple_group_new@Base 1:2.2.0 purple_group_on_account@Base 1:2.2.0 purple_home_dir@Base 1:2.2.0 purple_idle_get_ui_ops@Base 1:2.2.0 purple_idle_init@Base 1:2.2.0 purple_idle_set@Base 1:2.2.0 purple_idle_set_ui_ops@Base 1:2.2.0 purple_idle_touch@Base 1:2.2.0 purple_idle_uninit@Base 1:2.2.0 purple_imgstore_add@Base 1:2.2.0 purple_imgstore_add_with_id@Base 1:2.2.0 purple_imgstore_find_by_id@Base 1:2.2.0 purple_imgstore_get_data@Base 1:2.2.0 purple_imgstore_get_extension@Base 1:2.2.0 purple_imgstore_get_filename@Base 1:2.2.0 purple_imgstore_get_handle@Base 1:2.2.0 purple_imgstore_get_size@Base 1:2.2.0 purple_imgstore_init@Base 1:2.2.0 purple_imgstore_new_from_file@Base 1:2.5.0 purple_imgstore_ref@Base 1:2.2.0 purple_imgstore_ref_by_id@Base 1:2.2.0 purple_imgstore_uninit@Base 1:2.2.0 purple_imgstore_unref@Base 1:2.2.0 purple_imgstore_unref_by_id@Base 1:2.2.0 purple_input_add@Base 1:2.2.0 purple_input_get_error@Base 1:2.2.0 purple_input_remove@Base 1:2.2.0 purple_ip_address_is_valid@Base 1:2.4.0 purple_ipv4_address_is_valid@Base 1:2.6.0 purple_ipv6_address_is_valid@Base 1:2.6.0 purple_log_common_deleter@Base 1:2.2.0 purple_log_common_is_deletable@Base 1:2.2.0 purple_log_common_lister@Base 1:2.2.0 purple_log_common_sizer@Base 1:2.2.0 purple_log_common_total_sizer@Base 1:2.2.0 purple_log_common_writer@Base 1:2.2.0 purple_log_compare@Base 1:2.2.0 purple_log_delete@Base 1:2.2.0 purple_log_free@Base 1:2.2.0 purple_log_get_activity_score@Base 1:2.6.0 purple_log_get_handle@Base 1:2.2.0 purple_log_get_log_dir@Base 1:2.2.0 purple_log_get_log_sets@Base 1:2.2.0 purple_log_get_logs@Base 1:2.2.0 purple_log_get_size@Base 1:2.2.0 purple_log_get_system_logs@Base 1:2.2.0 purple_log_get_total_size@Base 1:2.2.0 purple_log_init@Base 1:2.2.0 purple_log_is_deletable@Base 1:2.2.0 purple_log_logger_add@Base 1:2.2.0 purple_log_logger_free@Base 1:2.2.0 purple_log_logger_get@Base 1:2.2.0 purple_log_logger_get_options@Base 1:2.2.0 purple_log_logger_new@Base 1:2.2.0 purple_log_logger_remove@Base 1:2.2.0 purple_log_logger_set@Base 1:2.2.0 purple_log_new@Base 1:2.2.0 purple_log_read@Base 1:2.2.0 purple_log_set_compare@Base 1:2.2.0 purple_log_set_free@Base 1:2.2.0 purple_log_uninit@Base 1:2.2.0 purple_log_write@Base 1:2.2.0 purple_major_version@Base 1:2.2.0 purple_markup_escape_text@Base 1:2.6.0 purple_markup_extract_info_field@Base 1:2.2.0 purple_markup_find_tag@Base 1:2.2.0 purple_markup_get_css_property@Base 1:2.2.0 purple_markup_get_tag_name@Base 1:2.2.0 purple_markup_html_to_xhtml@Base 1:2.2.0 purple_markup_is_rtl@Base 1:2.6.0 purple_markup_linkify@Base 1:2.2.0 purple_markup_slice@Base 1:2.2.0 purple_markup_strip_html@Base 1:2.2.0 purple_markup_unescape_entity@Base 1:2.2.0 purple_marshal_BOOLEAN__INT_POINTER@Base 1:2.2.0 purple_marshal_BOOLEAN__POINTER@Base 1:2.2.0 purple_marshal_BOOLEAN__POINTER_BOOLEAN@Base 1:2.8.0 purple_marshal_BOOLEAN__POINTER_POINTER@Base 1:2.2.0 purple_marshal_BOOLEAN__POINTER_POINTER_POINTER@Base 1:2.2.0 purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER@Base 1:2.2.0 purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_POINTER@Base 1:2.2.0 purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_POINTER_POINTER@Base 1:2.6.0 purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_UINT@Base 1:2.2.0 purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_UINT@Base 1:2.2.0 purple_marshal_BOOLEAN__POINTER_POINTER_UINT@Base 1:2.2.0 purple_marshal_INT__INT@Base 1:2.2.0 purple_marshal_INT__INT_INT@Base 1:2.2.0 purple_marshal_INT__POINTER_POINTER@Base 1:2.3.0 purple_marshal_INT__POINTER_POINTER_POINTER@Base 1:2.8.0 purple_marshal_INT__POINTER_POINTER_POINTER_POINTER_POINTER@Base 1:2.2.0 purple_marshal_POINTER__POINTER@Base 1:2.7.0 purple_marshal_POINTER__POINTER_INT64@Base 1:2.2.0 purple_marshal_POINTER__POINTER_INT64_BOOLEAN@Base 1:2.2.0 purple_marshal_POINTER__POINTER_INT@Base 1:2.2.0 purple_marshal_POINTER__POINTER_INT_BOOLEAN@Base 1:2.2.0 purple_marshal_POINTER__POINTER_POINTER@Base 1:2.2.0 purple_marshal_VOID@Base 1:2.2.0 purple_marshal_VOID__INT@Base 1:2.2.0 purple_marshal_VOID__INT_INT@Base 1:2.2.0 purple_marshal_VOID__POINTER@Base 1:2.2.0 purple_marshal_VOID__POINTER_INT_INT@Base 1:2.2.0 purple_marshal_VOID__POINTER_INT_POINTER@Base 1:2.3.0 purple_marshal_VOID__POINTER_POINTER@Base 1:2.2.0 purple_marshal_VOID__POINTER_POINTER_POINTER@Base 1:2.2.0 purple_marshal_VOID__POINTER_POINTER_POINTER_POINTER@Base 1:2.2.0 purple_marshal_VOID__POINTER_POINTER_POINTER_POINTER_POINTER@Base 1:2.2.0 purple_marshal_VOID__POINTER_POINTER_POINTER_POINTER_UINT@Base 1:2.2.0 purple_marshal_VOID__POINTER_POINTER_POINTER_UINT@Base 1:2.2.0 purple_marshal_VOID__POINTER_POINTER_POINTER_UINT_UINT@Base 1:2.2.0 purple_marshal_VOID__POINTER_POINTER_UINT@Base 1:2.2.0 purple_marshal_VOID__POINTER_POINTER_UINT_UINT@Base 1:2.2.0 purple_marshal_VOID__POINTER_UINT@Base 1:2.2.0 purple_media_accepted@Base 1:2.6.0 purple_media_add_remote_candidates@Base 1:2.6.0 purple_media_add_stream@Base 1:2.6.0 purple_media_backend_add_remote_candidates@Base 1:2.7.0 purple_media_backend_add_stream@Base 1:2.7.0 purple_media_backend_codecs_ready@Base 1:2.7.0 purple_media_backend_fs2_get_src@Base 1:2.7.0 purple_media_backend_fs2_get_tee@Base 1:2.7.0 purple_media_backend_fs2_get_type@Base 1:2.7.0 purple_media_backend_fs2_set_input_volume@Base 1:2.7.0 purple_media_backend_fs2_set_output_volume@Base 1:2.7.0 purple_media_backend_get_available_params@Base 1:2.8.0 purple_media_backend_get_codecs@Base 1:2.7.0 purple_media_backend_get_local_candidates@Base 1:2.7.0 purple_media_backend_get_type@Base 1:2.7.0 purple_media_backend_set_params@Base 1:2.8.0 purple_media_backend_set_remote_codecs@Base 1:2.7.0 purple_media_backend_set_send_codec@Base 1:2.7.0 purple_media_candidate_copy@Base 1:2.7.0 purple_media_candidate_get_base_ip@Base 1:2.6.0 purple_media_candidate_get_base_port@Base 1:2.6.0 purple_media_candidate_get_candidate_type@Base 1:2.6.0 purple_media_candidate_get_component_id@Base 1:2.6.0 purple_media_candidate_get_foundation@Base 1:2.6.0 purple_media_candidate_get_ip@Base 1:2.6.0 purple_media_candidate_get_password@Base 1:2.6.0 purple_media_candidate_get_port@Base 1:2.6.0 purple_media_candidate_get_priority@Base 1:2.6.0 purple_media_candidate_get_protocol@Base 1:2.6.0 purple_media_candidate_get_ttl@Base 1:2.6.0 purple_media_candidate_get_type@Base 1:2.6.0 purple_media_candidate_get_username@Base 1:2.6.0 purple_media_candidate_list_copy@Base 1:2.6.0 purple_media_candidate_list_free@Base 1:2.6.0 purple_media_candidate_new@Base 1:2.6.0 purple_media_candidate_type_get_type@Base 1:2.6.0 purple_media_candidates_prepared@Base 1:2.6.0 purple_media_caps_get_type@Base 1:2.7.0 purple_media_codec_add_optional_parameter@Base 1:2.6.0 purple_media_codec_copy@Base 1:2.7.0 purple_media_codec_get_channels@Base 1:2.6.0 purple_media_codec_get_clock_rate@Base 1:2.6.0 purple_media_codec_get_encoding_name@Base 1:2.6.0 purple_media_codec_get_id@Base 1:2.6.0 purple_media_codec_get_optional_parameter@Base 1:2.6.0 purple_media_codec_get_optional_parameters@Base 1:2.6.0 purple_media_codec_get_type@Base 1:2.6.0 purple_media_codec_list_copy@Base 1:2.6.0 purple_media_codec_list_free@Base 1:2.6.0 purple_media_codec_new@Base 1:2.6.0 purple_media_codec_remove_optional_parameter@Base 1:2.6.0 purple_media_codec_to_string@Base 1:2.6.0 purple_media_codecs_ready@Base 1:2.6.0 purple_media_element_info_call_create@Base 1:2.6.0 purple_media_element_info_get_element_type@Base 1:2.6.0 purple_media_element_info_get_id@Base 1:2.6.0 purple_media_element_info_get_name@Base 1:2.6.0 purple_media_element_info_get_type@Base 1:2.6.0 purple_media_element_type_get_type@Base 1:2.6.0 purple_media_end@Base 1:2.6.0 purple_media_error@Base 1:2.6.0 purple_media_get_account@Base 1:2.6.0 purple_media_get_active_local_candidates@Base 1:2.8.0 purple_media_get_active_remote_candidates@Base 1:2.8.0 purple_media_get_available_params@Base 1:2.8.0 purple_media_get_codecs@Base 1:2.6.0 purple_media_get_local_candidates@Base 1:2.6.0 purple_media_get_manager@Base 1:2.6.0 purple_media_get_prpl_data@Base 1:2.6.0 purple_media_get_session_ids@Base 1:2.6.0 purple_media_get_session_type@Base 1:2.6.0 purple_media_get_src@Base 1:2.6.0 purple_media_get_tee@Base 1:2.6.0 purple_media_get_type@Base 1:2.6.0 purple_media_info_type_get_type@Base 1:2.6.0 purple_media_is_initiator@Base 1:2.6.0 purple_media_manager_create_media@Base 1:2.6.0 purple_media_manager_create_output_window@Base 1:2.6.0 purple_media_manager_get@Base 1:2.6.0 purple_media_manager_get_active_element@Base 1:2.6.0 purple_media_manager_get_backend_type@Base 1:2.7.0 purple_media_manager_get_element@Base 1:2.6.0 purple_media_manager_get_element_info@Base 1:2.6.0 purple_media_manager_get_media@Base 1:2.6.0 purple_media_manager_get_media_by_account@Base 1:2.6.0 purple_media_manager_get_pipeline@Base 1:2.6.0 purple_media_manager_get_type@Base 1:2.6.0 purple_media_manager_get_ui_caps@Base 1:2.6.0 purple_media_manager_get_video_caps@Base 1:2.8.0 purple_media_manager_register_element@Base 1:2.6.0 purple_media_manager_remove_media@Base 1:2.6.0 purple_media_manager_remove_output_window@Base 1:2.6.0 purple_media_manager_remove_output_windows@Base 1:2.6.0 purple_media_manager_set_active_element@Base 1:2.6.0 purple_media_manager_set_backend_type@Base 1:2.7.0 purple_media_manager_set_output_window@Base 1:2.6.0 purple_media_manager_set_ui_caps@Base 1:2.6.0 purple_media_manager_set_video_caps@Base 1:2.8.0 purple_media_manager_unregister_element@Base 1:2.6.0 purple_media_network_protocol_get_type@Base 1:2.6.0 purple_media_param_is_supported@Base 1:2.8.0 purple_media_remove_output_windows@Base 1:2.6.0 purple_media_session_type_get_type@Base 1:2.6.0 purple_media_set_input_volume@Base 1:2.6.0 purple_media_set_output_volume@Base 1:2.6.0 purple_media_set_output_window@Base 1:2.6.0 purple_media_set_params@Base 1:2.8.0 purple_media_set_prpl_data@Base 1:2.6.0 purple_media_set_remote_codecs@Base 1:2.6.0 purple_media_set_send_codec@Base 1:2.6.0 purple_media_state_changed_get_type@Base 1:2.6.0 purple_media_stream_info@Base 1:2.6.0 purple_menu_action_free@Base 1:2.2.0 purple_menu_action_new@Base 1:2.2.0 purple_message_meify@Base 1:2.2.0 purple_micro_version@Base 1:2.2.0 purple_mime_decode_field@Base 1:2.2.0 purple_mime_document_free@Base 1:2.2.0 purple_mime_document_get_field@Base 1:2.2.0 purple_mime_document_get_fields@Base 1:2.2.0 purple_mime_document_get_parts@Base 1:2.2.0 purple_mime_document_new@Base 1:2.2.0 purple_mime_document_parse@Base 1:2.2.0 purple_mime_document_parsen@Base 1:2.2.0 purple_mime_document_set_field@Base 1:2.2.0 purple_mime_document_write@Base 1:2.2.0 purple_mime_part_get_data@Base 1:2.2.0 purple_mime_part_get_data_decoded@Base 1:2.2.0 purple_mime_part_get_field@Base 1:2.2.0 purple_mime_part_get_field_decoded@Base 1:2.2.0 purple_mime_part_get_fields@Base 1:2.2.0 purple_mime_part_get_length@Base 1:2.2.0 purple_mime_part_new@Base 1:2.2.0 purple_mime_part_set_data@Base 1:2.2.0 purple_mime_part_set_field@Base 1:2.2.0 purple_minor_version@Base 1:2.2.0 purple_mkstemp@Base 1:2.2.0 purple_network_convert_idn_to_ascii@Base 1:2.6.0 purple_network_force_online@Base 1:2.6.0 purple_network_get_all_local_system_ips@Base 1:2.7.0 purple_network_get_handle@Base 1:2.2.0 purple_network_get_local_system_ip@Base 1:2.2.0 purple_network_get_my_ip@Base 1:2.2.0 purple_network_get_port_from_fd@Base 1:2.2.0 purple_network_get_public_ip@Base 1:2.2.0 purple_network_get_stun_ip@Base 1:2.6.0 purple_network_get_turn_ip@Base 1:2.6.0 purple_network_init@Base 1:2.2.0 purple_network_ip_atoi@Base 1:2.2.0 purple_network_is_available@Base 1:2.2.0 purple_network_listen@Base 1:2.2.0 purple_network_listen_cancel@Base 1:2.2.0 purple_network_listen_family@Base 1:2.7.0 purple_network_listen_map_external@Base 1:2.3.0 purple_network_listen_range@Base 1:2.2.0 purple_network_listen_range_family@Base 1:2.7.0 purple_network_remove_port_mapping@Base 1:2.6.0 purple_network_set_public_ip@Base 1:2.2.0 purple_network_set_stun_server@Base 1:2.6.0 purple_network_set_turn_server@Base 1:2.6.0 purple_network_uninit@Base 1:2.2.0 purple_normalize@Base 1:2.2.0 purple_normalize_nocase@Base 1:2.2.0 purple_notify_close@Base 1:2.2.0 purple_notify_close_with_handle@Base 1:2.2.0 purple_notify_email@Base 1:2.2.0 purple_notify_emails@Base 1:2.2.0 purple_notify_formatted@Base 1:2.2.0 purple_notify_get_handle@Base 1:2.2.0 purple_notify_get_ui_ops@Base 1:2.2.0 purple_notify_init@Base 1:2.2.0 purple_notify_message@Base 1:2.2.0 purple_notify_searchresults@Base 1:2.2.0 purple_notify_searchresults_button_add@Base 1:2.2.0 purple_notify_searchresults_button_add_labeled@Base 1:2.2.0 purple_notify_searchresults_column_add@Base 1:2.2.0 purple_notify_searchresults_column_get_title@Base 1:2.2.0 purple_notify_searchresults_column_new@Base 1:2.2.0 purple_notify_searchresults_free@Base 1:2.2.0 purple_notify_searchresults_get_columns_count@Base 1:2.2.0 purple_notify_searchresults_get_rows_count@Base 1:2.2.0 purple_notify_searchresults_new@Base 1:2.2.0 purple_notify_searchresults_new_rows@Base 1:2.2.0 purple_notify_searchresults_row_add@Base 1:2.2.0 purple_notify_searchresults_row_get@Base 1:2.2.0 purple_notify_set_ui_ops@Base 1:2.2.0 purple_notify_uninit@Base 1:2.2.0 purple_notify_uri@Base 1:2.2.0 purple_notify_user_info_add_pair@Base 1:2.2.0 purple_notify_user_info_add_pair_plaintext@Base 1:2.8.0 purple_notify_user_info_add_section_break@Base 1:2.2.0 purple_notify_user_info_add_section_header@Base 1:2.2.0 purple_notify_user_info_destroy@Base 1:2.2.0 purple_notify_user_info_entry_get_label@Base 1:2.2.0 purple_notify_user_info_entry_get_type@Base 1:2.2.0 purple_notify_user_info_entry_get_value@Base 1:2.2.0 purple_notify_user_info_entry_new@Base 1:2.2.0 purple_notify_user_info_entry_set_label@Base 1:2.2.0 purple_notify_user_info_entry_set_type@Base 1:2.2.0 purple_notify_user_info_entry_set_value@Base 1:2.2.0 purple_notify_user_info_get_entries@Base 1:2.2.0 purple_notify_user_info_get_text_with_newline@Base 1:2.2.0 purple_notify_user_info_new@Base 1:2.2.0 purple_notify_user_info_prepend_pair@Base 1:2.2.0 purple_notify_user_info_prepend_section_break@Base 1:2.5.0 purple_notify_user_info_prepend_section_header@Base 1:2.5.0 purple_notify_user_info_remove_entry@Base 1:2.2.0 purple_notify_user_info_remove_last_item@Base 1:2.2.0 purple_notify_userinfo@Base 1:2.2.0 purple_ntlm_gen_type1@Base 1:2.2.0 purple_ntlm_gen_type3@Base 1:2.2.0 purple_ntlm_parse_type2@Base 1:2.2.0 purple_plugin_action_free@Base 1:2.2.0 purple_plugin_action_new@Base 1:2.2.0 purple_plugin_destroy@Base 1:2.2.0 purple_plugin_disable@Base 1:2.3.0 purple_plugin_get_author@Base 1:2.2.0 purple_plugin_get_description@Base 1:2.2.0 purple_plugin_get_homepage@Base 1:2.2.0 purple_plugin_get_id@Base 1:2.2.0 purple_plugin_get_name@Base 1:2.2.0 purple_plugin_get_summary@Base 1:2.2.0 purple_plugin_get_version@Base 1:2.2.0 purple_plugin_ipc_call@Base 1:2.2.0 purple_plugin_ipc_get_params@Base 1:2.2.0 purple_plugin_ipc_register@Base 1:2.2.0 purple_plugin_ipc_unregister@Base 1:2.2.0 purple_plugin_ipc_unregister_all@Base 1:2.2.0 purple_plugin_is_loaded@Base 1:2.2.0 purple_plugin_is_unloadable@Base 1:2.2.0 purple_plugin_load@Base 1:2.2.0 purple_plugin_new@Base 1:2.2.0 purple_plugin_pref_add_choice@Base 1:2.2.0 purple_plugin_pref_destroy@Base 1:2.2.0 purple_plugin_pref_frame_add@Base 1:2.2.0 purple_plugin_pref_frame_destroy@Base 1:2.2.0 purple_plugin_pref_frame_get_prefs@Base 1:2.2.0 purple_plugin_pref_frame_new@Base 1:2.2.0 purple_plugin_pref_get_bounds@Base 1:2.2.0 purple_plugin_pref_get_choices@Base 1:2.2.0 purple_plugin_pref_get_format_type@Base 1:2.2.0 purple_plugin_pref_get_label@Base 1:2.2.0 purple_plugin_pref_get_masked@Base 1:2.2.0 purple_plugin_pref_get_max_length@Base 1:2.2.0 purple_plugin_pref_get_name@Base 1:2.2.0 purple_plugin_pref_get_type@Base 1:2.2.0 purple_plugin_pref_new@Base 1:2.2.0 purple_plugin_pref_new_with_label@Base 1:2.2.0 purple_plugin_pref_new_with_name@Base 1:2.2.0 purple_plugin_pref_new_with_name_and_label@Base 1:2.2.0 purple_plugin_pref_set_bounds@Base 1:2.2.0 purple_plugin_pref_set_format_type@Base 1:2.2.0 purple_plugin_pref_set_label@Base 1:2.2.0 purple_plugin_pref_set_masked@Base 1:2.2.0 purple_plugin_pref_set_max_length@Base 1:2.2.0 purple_plugin_pref_set_name@Base 1:2.2.0 purple_plugin_pref_set_type@Base 1:2.2.0 purple_plugin_probe@Base 1:2.2.0 purple_plugin_register@Base 1:2.2.0 purple_plugin_reload@Base 1:2.2.0 purple_plugin_unload@Base 1:2.2.0 purple_plugins_add_search_path@Base 1:2.2.0 purple_plugins_destroy_all@Base 1:2.2.0 purple_plugins_enabled@Base 1:2.2.0 purple_plugins_find_with_basename@Base 1:2.2.0 purple_plugins_find_with_filename@Base 1:2.2.0 purple_plugins_find_with_id@Base 1:2.2.0 purple_plugins_find_with_name@Base 1:2.2.0 purple_plugins_get_all@Base 1:2.2.0 purple_plugins_get_handle@Base 1:2.2.0 purple_plugins_get_loaded@Base 1:2.2.0 purple_plugins_get_protocols@Base 1:2.2.0 purple_plugins_get_search_paths@Base 1:2.6.0 purple_plugins_init@Base 1:2.2.0 purple_plugins_load_saved@Base 1:2.2.0 purple_plugins_probe@Base 1:2.2.0 purple_plugins_register_load_notify_cb@Base 1:2.2.0 purple_plugins_register_probe_notify_cb@Base 1:2.2.0 purple_plugins_register_unload_notify_cb@Base 1:2.2.0 purple_plugins_save_loaded@Base 1:2.2.0 purple_plugins_uninit@Base 1:2.2.0 purple_plugins_unload@Base 1:2.6.0 purple_plugins_unload_all@Base 1:2.2.0 purple_plugins_unregister_load_notify_cb@Base 1:2.2.0 purple_plugins_unregister_probe_notify_cb@Base 1:2.2.0 purple_plugins_unregister_unload_notify_cb@Base 1:2.2.0 purple_pmp_create_map@Base 1:2.2.0 purple_pmp_destroy_map@Base 1:2.2.0 purple_pmp_get_public_ip@Base 1:2.2.0 purple_pmp_init@Base 1:2.2.0 purple_pounce_action_get_attribute@Base 1:2.2.0 purple_pounce_action_is_enabled@Base 1:2.2.0 purple_pounce_action_register@Base 1:2.2.0 purple_pounce_action_set_attribute@Base 1:2.2.0 purple_pounce_action_set_enabled@Base 1:2.2.0 purple_pounce_destroy@Base 1:2.2.0 purple_pounce_destroy_all_by_account@Base 1:2.2.0 purple_pounce_destroy_all_by_buddy@Base 1:2.8.0 purple_pounce_execute@Base 1:2.2.0 purple_pounce_get_data@Base 1:2.2.0 purple_pounce_get_events@Base 1:2.2.0 purple_pounce_get_options@Base 1:2.2.0 purple_pounce_get_pouncee@Base 1:2.2.0 purple_pounce_get_pouncer@Base 1:2.2.0 purple_pounce_get_save@Base 1:2.2.0 purple_pounce_new@Base 1:2.2.0 purple_pounce_set_data@Base 1:2.2.0 purple_pounce_set_events@Base 1:2.2.0 purple_pounce_set_options@Base 1:2.2.0 purple_pounce_set_pouncee@Base 1:2.2.0 purple_pounce_set_pouncer@Base 1:2.2.0 purple_pounce_set_save@Base 1:2.2.0 purple_pounces_get_all@Base 1:2.2.0 purple_pounces_get_all_for_ui@Base 1:2.2.0 purple_pounces_get_handle@Base 1:2.2.0 purple_pounces_init@Base 1:2.2.0 purple_pounces_load@Base 1:2.2.0 purple_pounces_register_handler@Base 1:2.2.0 purple_pounces_uninit@Base 1:2.2.0 purple_pounces_unregister_handler@Base 1:2.2.0 purple_prefs_add_bool@Base 1:2.2.0 purple_prefs_add_int@Base 1:2.2.0 purple_prefs_add_none@Base 1:2.2.0 purple_prefs_add_path@Base 1:2.2.0 purple_prefs_add_path_list@Base 1:2.2.0 purple_prefs_add_string@Base 1:2.2.0 purple_prefs_add_string_list@Base 1:2.2.0 purple_prefs_connect_callback@Base 1:2.2.0 purple_prefs_destroy@Base 1:2.2.0 purple_prefs_disconnect_by_handle@Base 1:2.2.0 purple_prefs_disconnect_callback@Base 1:2.2.0 purple_prefs_exists@Base 1:2.2.0 purple_prefs_get_bool@Base 1:2.2.0 purple_prefs_get_children_names@Base 1:2.2.0 purple_prefs_get_handle@Base 1:2.2.0 purple_prefs_get_int@Base 1:2.2.0 purple_prefs_get_path@Base 1:2.2.0 purple_prefs_get_path_list@Base 1:2.2.0 purple_prefs_get_string@Base 1:2.2.0 purple_prefs_get_string_list@Base 1:2.2.0 purple_prefs_get_type@Base 1:2.2.0 purple_prefs_init@Base 1:2.2.0 purple_prefs_load@Base 1:2.2.0 purple_prefs_remove@Base 1:2.2.0 purple_prefs_rename@Base 1:2.2.0 purple_prefs_rename_boolean_toggle@Base 1:2.2.0 purple_prefs_set_bool@Base 1:2.2.0 purple_prefs_set_generic@Base 1:2.2.0 purple_prefs_set_int@Base 1:2.2.0 purple_prefs_set_path@Base 1:2.2.0 purple_prefs_set_path_list@Base 1:2.2.0 purple_prefs_set_string@Base 1:2.2.0 purple_prefs_set_string_list@Base 1:2.2.0 purple_prefs_trigger_callback@Base 1:2.2.0 purple_prefs_uninit@Base 1:2.2.0 purple_prefs_update_old@Base 1:2.2.0 purple_presence_add_list@Base 1:2.2.0 purple_presence_add_status@Base 1:2.2.0 purple_presence_compare@Base 1:2.2.0 purple_presence_destroy@Base 1:2.2.0 purple_presence_get_account@Base 1:2.2.0 purple_presence_get_active_status@Base 1:2.2.0 purple_presence_get_buddy@Base 1:2.2.0 purple_presence_get_chat_user@Base 1:2.2.0 purple_presence_get_context@Base 1:2.2.0 purple_presence_get_conversation@Base 1:2.2.0 purple_presence_get_idle_time@Base 1:2.2.0 purple_presence_get_login_time@Base 1:2.2.0 purple_presence_get_status@Base 1:2.2.0 purple_presence_get_statuses@Base 1:2.2.0 purple_presence_is_available@Base 1:2.2.0 purple_presence_is_idle@Base 1:2.2.0 purple_presence_is_online@Base 1:2.2.0 purple_presence_is_status_active@Base 1:2.2.0 purple_presence_is_status_primitive_active@Base 1:2.2.0 purple_presence_new@Base 1:2.2.0 purple_presence_new_for_account@Base 1:2.2.0 purple_presence_new_for_buddy@Base 1:2.2.0 purple_presence_new_for_conv@Base 1:2.2.0 purple_presence_set_idle@Base 1:2.2.0 purple_presence_set_login_time@Base 1:2.2.0 purple_presence_set_status_active@Base 1:2.2.0 purple_presence_switch_status@Base 1:2.2.0 purple_primitive_get_id_from_type@Base 1:2.2.0 purple_primitive_get_name_from_type@Base 1:2.2.0 purple_primitive_get_type_from_id@Base 1:2.2.0 purple_print_utf8_to_console@Base 1:2.2.0 purple_privacy_allow@Base 1:2.2.0 purple_privacy_check@Base 1:2.2.0 purple_privacy_deny@Base 1:2.2.0 purple_privacy_deny_add@Base 1:2.2.0 purple_privacy_deny_remove@Base 1:2.2.0 purple_privacy_get_ui_ops@Base 1:2.2.0 purple_privacy_init@Base 1:2.2.0 purple_privacy_permit_add@Base 1:2.2.0 purple_privacy_permit_remove@Base 1:2.2.0 purple_privacy_set_ui_ops@Base 1:2.2.0 purple_program_is_valid@Base 1:2.2.0 purple_proxy_connect@Base 1:2.2.0 purple_proxy_connect_cancel@Base 1:2.2.0 purple_proxy_connect_cancel_with_handle@Base 1:2.2.0 purple_proxy_connect_socks5@Base 1:2.2.0 purple_proxy_connect_socks5_account@Base 1:2.8.0 purple_proxy_connect_udp@Base 1:2.6.0 purple_proxy_get_handle@Base 1:2.2.0 purple_proxy_get_setup@Base 1:2.2.0 purple_proxy_info_destroy@Base 1:2.2.0 purple_proxy_info_get_host@Base 1:2.2.0 purple_proxy_info_get_password@Base 1:2.2.0 purple_proxy_info_get_port@Base 1:2.2.0 purple_proxy_info_get_type@Base 1:2.2.0 purple_proxy_info_get_username@Base 1:2.2.0 purple_proxy_info_new@Base 1:2.2.0 purple_proxy_info_set_host@Base 1:2.2.0 purple_proxy_info_set_password@Base 1:2.2.0 purple_proxy_info_set_port@Base 1:2.2.0 purple_proxy_info_set_type@Base 1:2.2.0 purple_proxy_info_set_username@Base 1:2.2.0 purple_proxy_init@Base 1:2.2.0 purple_proxy_uninit@Base 1:2.2.0 purple_prpl_change_account_status@Base 1:2.2.0 purple_prpl_get_media_caps@Base 1:2.6.0 purple_prpl_get_statuses@Base 1:2.2.0 purple_prpl_got_account_actions@Base 1:2.6.0 purple_prpl_got_account_idle@Base 1:2.2.0 purple_prpl_got_account_login_time@Base 1:2.2.0 purple_prpl_got_account_status@Base 1:2.2.0 purple_prpl_got_attention@Base 1:2.5.0 purple_prpl_got_attention_in_chat@Base 1:2.5.0 purple_prpl_got_media_caps@Base 1:2.7.0 purple_prpl_got_user_idle@Base 1:2.2.0 purple_prpl_got_user_login_time@Base 1:2.2.0 purple_prpl_got_user_status@Base 1:2.2.0 purple_prpl_got_user_status_deactive@Base 1:2.2.0 purple_prpl_initiate_media@Base 1:2.6.0 purple_prpl_send_attention@Base 1:2.5.0 purple_quotedp_decode@Base 1:2.2.0 purple_request_action@Base 1:2.2.0 purple_request_action_varg@Base 1:2.2.0 purple_request_action_with_icon@Base 1:2.7.0 purple_request_action_with_icon_varg@Base 1:2.7.0 purple_request_choice@Base 1:2.2.0 purple_request_choice_varg@Base 1:2.2.0 purple_request_close@Base 1:2.2.0 purple_request_close_with_handle@Base 1:2.2.0 purple_request_field_account_get_default_value@Base 1:2.2.0 purple_request_field_account_get_filter@Base 1:2.2.0 purple_request_field_account_get_show_all@Base 1:2.2.0 purple_request_field_account_get_value@Base 1:2.2.0 purple_request_field_account_new@Base 1:2.2.0 purple_request_field_account_set_default_value@Base 1:2.2.0 purple_request_field_account_set_filter@Base 1:2.2.0 purple_request_field_account_set_show_all@Base 1:2.2.0 purple_request_field_account_set_value@Base 1:2.2.0 purple_request_field_bool_get_default_value@Base 1:2.2.0 purple_request_field_bool_get_value@Base 1:2.2.0 purple_request_field_bool_new@Base 1:2.2.0 purple_request_field_bool_set_default_value@Base 1:2.2.0 purple_request_field_bool_set_value@Base 1:2.2.0 purple_request_field_choice_add@Base 1:2.2.0 purple_request_field_choice_get_default_value@Base 1:2.2.0 purple_request_field_choice_get_labels@Base 1:2.2.0 purple_request_field_choice_get_value@Base 1:2.2.0 purple_request_field_choice_new@Base 1:2.2.0 purple_request_field_choice_set_default_value@Base 1:2.2.0 purple_request_field_choice_set_value@Base 1:2.2.0 purple_request_field_destroy@Base 1:2.2.0 purple_request_field_get_group@Base 1:2.6.0 purple_request_field_get_id@Base 1:2.2.0 purple_request_field_get_label@Base 1:2.2.0 purple_request_field_get_type@Base 1:2.2.0 purple_request_field_get_type_hint@Base 1:2.2.0 purple_request_field_get_ui_data@Base 1:2.6.0 purple_request_field_group_add_field@Base 1:2.2.0 purple_request_field_group_destroy@Base 1:2.2.0 purple_request_field_group_get_fields@Base 1:2.2.0 purple_request_field_group_get_title@Base 1:2.2.0 purple_request_field_group_new@Base 1:2.2.0 purple_request_field_image_get_buffer@Base 1:2.2.0 purple_request_field_image_get_scale_x@Base 1:2.2.0 purple_request_field_image_get_scale_y@Base 1:2.2.0 purple_request_field_image_get_size@Base 1:2.2.0 purple_request_field_image_new@Base 1:2.2.0 purple_request_field_image_set_scale@Base 1:2.2.0 purple_request_field_int_get_default_value@Base 1:2.2.0 purple_request_field_int_get_value@Base 1:2.2.0 purple_request_field_int_new@Base 1:2.2.0 purple_request_field_int_set_default_value@Base 1:2.2.0 purple_request_field_int_set_value@Base 1:2.2.0 purple_request_field_is_required@Base 1:2.2.0 purple_request_field_is_visible@Base 1:2.2.0 purple_request_field_label_new@Base 1:2.2.0 purple_request_field_list_add@Base 1:2.2.0 purple_request_field_list_add_icon@Base 1:2.7.0 purple_request_field_list_add_selected@Base 1:2.2.0 purple_request_field_list_clear_selected@Base 1:2.2.0 purple_request_field_list_get_data@Base 1:2.2.0 purple_request_field_list_get_icons@Base 1:2.7.0 purple_request_field_list_get_items@Base 1:2.2.0 purple_request_field_list_get_multi_select@Base 1:2.2.0 purple_request_field_list_get_selected@Base 1:2.2.0 purple_request_field_list_is_selected@Base 1:2.2.0 purple_request_field_list_new@Base 1:2.2.0 purple_request_field_list_set_multi_select@Base 1:2.2.0 purple_request_field_list_set_selected@Base 1:2.2.0 purple_request_field_new@Base 1:2.2.0 purple_request_field_set_label@Base 1:2.2.0 purple_request_field_set_required@Base 1:2.2.0 purple_request_field_set_type_hint@Base 1:2.2.0 purple_request_field_set_ui_data@Base 1:2.6.0 purple_request_field_set_visible@Base 1:2.2.0 purple_request_field_string_get_default_value@Base 1:2.2.0 purple_request_field_string_get_value@Base 1:2.2.0 purple_request_field_string_is_editable@Base 1:2.2.0 purple_request_field_string_is_masked@Base 1:2.2.0 purple_request_field_string_is_multiline@Base 1:2.2.0 purple_request_field_string_new@Base 1:2.2.0 purple_request_field_string_set_default_value@Base 1:2.2.0 purple_request_field_string_set_editable@Base 1:2.2.0 purple_request_field_string_set_masked@Base 1:2.2.0 purple_request_field_string_set_value@Base 1:2.2.0 purple_request_fields@Base 1:2.2.0 purple_request_fields_add_group@Base 1:2.2.0 purple_request_fields_all_required_filled@Base 1:2.2.0 purple_request_fields_destroy@Base 1:2.2.0 purple_request_fields_exists@Base 1:2.2.0 purple_request_fields_get_account@Base 1:2.2.0 purple_request_fields_get_bool@Base 1:2.2.0 purple_request_fields_get_choice@Base 1:2.2.0 purple_request_fields_get_field@Base 1:2.2.0 purple_request_fields_get_groups@Base 1:2.2.0 purple_request_fields_get_integer@Base 1:2.2.0 purple_request_fields_get_required@Base 1:2.2.0 purple_request_fields_get_string@Base 1:2.2.0 purple_request_fields_is_field_required@Base 1:2.2.0 purple_request_fields_new@Base 1:2.2.0 purple_request_file@Base 1:2.2.0 purple_request_folder@Base 1:2.2.0 purple_request_get_ui_ops@Base 1:2.2.0 purple_request_input@Base 1:2.2.0 purple_request_set_ui_ops@Base 1:2.2.0 purple_restore_default_signal_handlers@Base 1:2.2.0 purple_roomlist_cancel_get_list@Base 1:2.2.0 purple_roomlist_expand_category@Base 1:2.2.0 purple_roomlist_field_get_hidden@Base 1:2.4.0 purple_roomlist_field_get_label@Base 1:2.4.0 purple_roomlist_field_get_type@Base 1:2.4.0 purple_roomlist_field_new@Base 1:2.2.0 purple_roomlist_get_fields@Base 1:2.4.0 purple_roomlist_get_in_progress@Base 1:2.2.0 purple_roomlist_get_list@Base 1:2.2.0 purple_roomlist_get_ui_ops@Base 1:2.2.0 purple_roomlist_new@Base 1:2.2.0 purple_roomlist_ref@Base 1:2.2.0 purple_roomlist_room_add@Base 1:2.2.0 purple_roomlist_room_add_field@Base 1:2.2.0 purple_roomlist_room_get_fields@Base 1:2.4.0 purple_roomlist_room_get_name@Base 1:2.4.0 purple_roomlist_room_get_parent@Base 1:2.4.0 purple_roomlist_room_get_type@Base 1:2.4.0 purple_roomlist_room_join@Base 1:2.2.0 purple_roomlist_room_new@Base 1:2.2.0 purple_roomlist_set_fields@Base 1:2.2.0 purple_roomlist_set_in_progress@Base 1:2.2.0 purple_roomlist_set_ui_ops@Base 1:2.2.0 purple_roomlist_show_with_account@Base 1:2.2.0 purple_roomlist_unref@Base 1:2.2.0 purple_running_gnome@Base 1:2.2.0 purple_running_kde@Base 1:2.2.0 purple_running_osx@Base 1:2.2.0 purple_savedstatus_activate@Base 1:2.2.0 purple_savedstatus_activate_for_account@Base 1:2.2.0 purple_savedstatus_delete@Base 1:2.2.0 purple_savedstatus_delete_by_status@Base 1:2.2.0 purple_savedstatus_find@Base 1:2.2.0 purple_savedstatus_find_by_creation_time@Base 1:2.2.0 purple_savedstatus_find_transient_by_type_and_message@Base 1:2.2.0 purple_savedstatus_get_creation_time@Base 1:2.2.0 purple_savedstatus_get_current@Base 1:2.2.0 purple_savedstatus_get_default@Base 1:2.2.0 purple_savedstatus_get_idleaway@Base 1:2.2.0 purple_savedstatus_get_message@Base 1:2.2.0 purple_savedstatus_get_startup@Base 1:2.2.0 purple_savedstatus_get_substatus@Base 1:2.2.0 purple_savedstatus_get_title@Base 1:2.2.0 purple_savedstatus_get_type@Base 1:2.2.0 purple_savedstatus_has_substatuses@Base 1:2.2.0 purple_savedstatus_is_idleaway@Base 1:2.2.0 purple_savedstatus_is_transient@Base 1:2.2.0 purple_savedstatus_new@Base 1:2.2.0 purple_savedstatus_set_idleaway@Base 1:2.2.0 purple_savedstatus_set_message@Base 1:2.2.0 purple_savedstatus_set_substatus@Base 1:2.2.0 purple_savedstatus_set_title@Base 1:2.2.0 purple_savedstatus_set_type@Base 1:2.2.0 purple_savedstatus_substatus_get_message@Base 1:2.2.0 purple_savedstatus_substatus_get_type@Base 1:2.2.0 purple_savedstatus_unset_substatus@Base 1:2.2.0 purple_savedstatuses_get_all@Base 1:2.2.0 purple_savedstatuses_get_handle@Base 1:2.2.0 purple_savedstatuses_get_popular@Base 1:2.2.0 purple_savedstatuses_init@Base 1:2.2.0 purple_savedstatuses_uninit@Base 1:2.2.0 purple_serv_got_join_chat_failed@Base 1:2.5.0 purple_serv_got_private_alias@Base 1:2.4.0 purple_set_blist@Base 1:2.2.0 purple_signal_connect@Base 1:2.2.0 purple_signal_connect_priority@Base 1:2.2.0 purple_signal_connect_priority_vargs@Base 1:2.2.0 purple_signal_connect_vargs@Base 1:2.2.0 purple_signal_disconnect@Base 1:2.2.0 purple_signal_emit@Base 1:2.2.0 purple_signal_emit_return_1@Base 1:2.2.0 purple_signal_emit_vargs@Base 1:2.2.0 purple_signal_emit_vargs_return_1@Base 1:2.2.0 purple_signal_get_values@Base 1:2.2.0 purple_signal_register@Base 1:2.2.0 purple_signal_unregister@Base 1:2.2.0 purple_signals_disconnect_by_handle@Base 1:2.2.0 purple_signals_init@Base 1:2.2.0 purple_signals_uninit@Base 1:2.2.0 purple_signals_unregister_by_instance@Base 1:2.2.0 purple_smarshal_BOOLEAN__OBJECT_POINTER_STRING@Base 1:2.6.0 purple_smarshal_VOID__ENUM_STRING_STRING@Base 1:2.6.0 purple_smarshal_VOID__ENUM_STRING_STRING_BOOLEAN@Base 1:2.6.0 purple_smarshal_VOID__FLAGS_FLAGS@Base 1:2.7.0 purple_smarshal_VOID__POINTER_POINTER_OBJECT@Base 1:2.6.0 purple_smarshal_VOID__STRING_STRING@Base 1:2.6.0 purple_smarshal_VOID__STRING_STRING_DOUBLE@Base 1:2.6.0 purple_smarshal_VOID__STRING_STRING_OBJECT_OBJECT@Base 1:2.7.0 purple_smiley_delete@Base 1:2.5.0 purple_smiley_get_checksum@Base 1:2.5.0 purple_smiley_get_data@Base 1:2.5.0 purple_smiley_get_extension@Base 1:2.5.0 purple_smiley_get_full_path@Base 1:2.5.0 purple_smiley_get_shortcut@Base 1:2.5.0 purple_smiley_get_stored_image@Base 1:2.5.0 purple_smiley_get_type@Base 1:2.5.0 purple_smiley_new@Base 1:2.5.0 purple_smiley_new_from_file@Base 1:2.5.0 purple_smiley_set_data@Base 1:2.5.0 purple_smiley_set_shortcut@Base 1:2.5.0 purple_smileys_find_by_checksum@Base 1:2.5.0 purple_smileys_find_by_shortcut@Base 1:2.5.0 purple_smileys_get_all@Base 1:2.5.0 purple_smileys_get_storing_dir@Base 1:2.5.0 purple_smileys_init@Base 1:2.5.0 purple_smileys_uninit@Base 1:2.5.0 purple_socket_get_family@Base 1:2.7.0 purple_socket_speaks_ipv4@Base 1:2.7.0 purple_sound_get_ui_ops@Base 1:2.2.0 purple_sound_init@Base 1:2.2.0 purple_sound_play_event@Base 1:2.2.0 purple_sound_play_file@Base 1:2.2.0 purple_sound_set_ui_ops@Base 1:2.2.0 purple_sound_theme_get_file@Base 1:2.6.0 purple_sound_theme_get_file_full@Base 1:2.6.0 purple_sound_theme_get_type@Base 1:2.6.0 purple_sound_theme_loader_get_type@Base 1:2.6.0 purple_sound_theme_set_file@Base 1:2.6.0 purple_sound_uninit@Base 1:2.2.0 purple_sounds_get_handle@Base 1:2.2.0 purple_srv_cancel@Base 1:2.2.0 purple_srv_resolve@Base 1:2.2.0 purple_srv_resolve_account@Base 1:2.8.0 purple_srv_txt_query_destroy@Base 1:2.10.5 purple_srv_txt_query_get_query@Base 1:2.8.0 purple_srv_txt_query_get_type@Base 1:2.8.0 purple_srv_txt_query_get_ui_ops@Base 1:2.8.0 purple_srv_txt_query_set_ui_ops@Base 1:2.8.0 purple_ssl_close@Base 1:2.2.0 purple_ssl_connect@Base 1:2.2.0 purple_ssl_connect_fd@Base 1:2.2.0 purple_ssl_connect_with_host_fd@Base 1:2.2.0 purple_ssl_connect_with_ssl_cn@Base 1:2.6.0 purple_ssl_get_ops@Base 1:2.2.0 purple_ssl_get_peer_certificates@Base 1:2.2.0 purple_ssl_init@Base 1:2.2.0 purple_ssl_input_add@Base 1:2.2.0 purple_ssl_is_supported@Base 1:2.2.0 purple_ssl_read@Base 1:2.2.0 purple_ssl_set_ops@Base 1:2.2.0 purple_ssl_strerror@Base 1:2.2.0 purple_ssl_uninit@Base 1:2.2.0 purple_ssl_write@Base 1:2.2.0 purple_status_attr_destroy@Base 1:2.2.0 purple_status_attr_get_id@Base 1:2.2.0 purple_status_attr_get_name@Base 1:2.2.0 purple_status_attr_get_value@Base 1:2.2.0 purple_status_attr_new@Base 1:2.2.0 purple_status_compare@Base 1:2.2.0 purple_status_destroy@Base 1:2.2.0 purple_status_get_attr_boolean@Base 1:2.2.0 purple_status_get_attr_int@Base 1:2.2.0 purple_status_get_attr_string@Base 1:2.2.0 purple_status_get_attr_value@Base 1:2.2.0 purple_status_get_handle@Base 1:2.2.0 purple_status_get_id@Base 1:2.2.0 purple_status_get_name@Base 1:2.2.0 purple_status_get_presence@Base 1:2.2.0 purple_status_get_type@Base 1:2.2.0 purple_status_init@Base 1:2.2.0 purple_status_is_active@Base 1:2.2.0 purple_status_is_available@Base 1:2.2.0 purple_status_is_exclusive@Base 1:2.2.0 purple_status_is_independent@Base 1:2.2.0 purple_status_is_online@Base 1:2.2.0 purple_status_new@Base 1:2.2.0 purple_status_set_active@Base 1:2.2.0 purple_status_set_active_with_attrs@Base 1:2.2.0 purple_status_set_active_with_attrs_list@Base 1:2.2.0 purple_status_set_attr_boolean@Base 1:2.2.0 purple_status_set_attr_int@Base 1:2.2.0 purple_status_set_attr_string@Base 1:2.2.0 purple_status_type_add_attr@Base 1:2.2.0 purple_status_type_add_attrs@Base 1:2.2.0 purple_status_type_add_attrs_vargs@Base 1:2.2.0 purple_status_type_destroy@Base 1:2.2.0 purple_status_type_find_with_id@Base 1:2.2.0 purple_status_type_get_attr@Base 1:2.2.0 purple_status_type_get_attrs@Base 1:2.2.0 purple_status_type_get_id@Base 1:2.2.0 purple_status_type_get_name@Base 1:2.2.0 purple_status_type_get_primary_attr@Base 1:2.2.0 purple_status_type_get_primitive@Base 1:2.2.0 purple_status_type_is_available@Base 1:2.2.0 purple_status_type_is_exclusive@Base 1:2.2.0 purple_status_type_is_independent@Base 1:2.2.0 purple_status_type_is_saveable@Base 1:2.2.0 purple_status_type_is_user_settable@Base 1:2.2.0 purple_status_type_new@Base 1:2.2.0 purple_status_type_new_full@Base 1:2.2.0 purple_status_type_new_with_attrs@Base 1:2.2.0 purple_status_type_set_primary_attr@Base 1:2.2.0 purple_status_uninit@Base 1:2.2.0 purple_str_add_cr@Base 1:2.2.0 purple_str_binary_to_ascii@Base 1:2.2.0 purple_str_has_prefix@Base 1:2.2.0 purple_str_has_suffix@Base 1:2.2.0 purple_str_seconds_to_string@Base 1:2.2.0 purple_str_size_to_units@Base 1:2.2.0 purple_str_strip_char@Base 1:2.2.0 purple_str_to_time@Base 1:2.2.0 purple_strcasereplace@Base 1:2.2.0 purple_strcasestr@Base 1:2.2.0 purple_strdup_withhtml@Base 1:2.2.0 purple_strequal@Base 1:2.6.0 purple_stringref_cmp@Base 1:2.2.0 purple_stringref_len@Base 1:2.2.0 purple_stringref_new@Base 1:2.2.0 purple_stringref_new_noref@Base 1:2.2.0 purple_stringref_printf@Base 1:2.2.0 purple_stringref_ref@Base 1:2.2.0 purple_stringref_unref@Base 1:2.2.0 purple_stringref_value@Base 1:2.2.0 purple_strreplace@Base 1:2.2.0 purple_stun_discover@Base 1:2.2.0 purple_stun_init@Base 1:2.2.0 purple_text_strip_mnemonic@Base 1:2.2.0 purple_theme_get_author@Base 1:2.6.0 purple_theme_get_description@Base 1:2.6.0 purple_theme_get_dir@Base 1:2.6.0 purple_theme_get_image@Base 1:2.6.0 purple_theme_get_image_full@Base 1:2.6.0 purple_theme_get_name@Base 1:2.6.0 purple_theme_get_type@Base 1:2.6.0 purple_theme_get_type_string@Base 1:2.6.0 purple_theme_loader_build@Base 1:2.6.0 purple_theme_loader_get_type@Base 1:2.6.0 purple_theme_loader_get_type_string@Base 1:2.6.0 purple_theme_loader_set_type_string@Base 1:2.6.0 purple_theme_manager_add_theme@Base 1:2.6.0 purple_theme_manager_find_theme@Base 1:2.6.0 purple_theme_manager_for_each_theme@Base 1:2.6.0 purple_theme_manager_get_type@Base 1:2.6.0 purple_theme_manager_init@Base 1:2.6.0 purple_theme_manager_load_theme@Base 1:2.6.0 purple_theme_manager_refresh@Base 1:2.6.0 purple_theme_manager_register_type@Base 1:2.6.0 purple_theme_manager_remove_theme@Base 1:2.6.0 purple_theme_manager_uninit@Base 1:2.6.0 purple_theme_manager_unregister_type@Base 1:2.6.0 purple_theme_set_author@Base 1:2.6.0 purple_theme_set_description@Base 1:2.6.0 purple_theme_set_dir@Base 1:2.6.0 purple_theme_set_image@Base 1:2.6.0 purple_theme_set_name@Base 1:2.6.0 purple_theme_set_type_string@Base 1:2.6.0 purple_time_build@Base 1:2.2.0 purple_time_format@Base 1:2.2.0 purple_timeout_add@Base 1:2.2.0 purple_timeout_add_seconds@Base 1:2.2.0 purple_timeout_remove@Base 1:2.2.0 purple_txt_cancel@Base 1:2.6.0 purple_txt_resolve@Base 1:2.6.0 purple_txt_resolve_account@Base 1:2.8.0 purple_txt_response_destroy@Base 1:2.6.0 purple_txt_response_get_content@Base 1:2.6.0 purple_unescape_filename@Base 1:2.2.0 purple_unescape_html@Base 1:2.2.0 purple_unescape_text@Base 1:2.7.0 purple_upnp_cancel_port_mapping@Base 1:2.2.0 purple_upnp_discover@Base 1:2.2.0 purple_upnp_get_public_ip@Base 1:2.2.0 purple_upnp_init@Base 1:2.2.0 purple_upnp_remove_port_mapping@Base 1:2.2.0 purple_upnp_set_port_mapping@Base 1:2.2.0 purple_uri_list_extract_filenames@Base 1:2.2.0 purple_uri_list_extract_uris@Base 1:2.2.0 purple_url_decode@Base 1:2.2.0 purple_url_encode@Base 1:2.2.0 purple_url_parse@Base 1:2.2.0 purple_user_dir@Base 1:2.2.0 purple_utf8_has_word@Base 1:2.2.0 purple_utf8_ncr_decode@Base 1:2.2.0 purple_utf8_ncr_encode@Base 1:2.2.0 purple_utf8_salvage@Base 1:2.2.0 purple_utf8_strcasecmp@Base 1:2.2.0 purple_utf8_strftime@Base 1:2.2.0 purple_utf8_strip_unprintables@Base 1:2.6.0 purple_utf8_try_convert@Base 1:2.2.0 purple_util_chrreplace@Base 1:2.2.0 purple_util_fetch_url_cancel@Base 1:2.2.0 purple_util_fetch_url_request@Base 1:2.2.0 purple_util_fetch_url_request_len@Base 1:2.5.0 purple_util_fetch_url_request_len_with_account@Base 1:2.6.0 purple_util_format_song_info@Base 1:2.4.0 purple_util_get_image_checksum@Base 1:2.5.0 purple_util_get_image_extension@Base 1:2.2.0 purple_util_get_image_filename@Base 1:2.2.0 purple_util_init@Base 1:2.3.0 purple_util_read_xml_from_file@Base 1:2.2.0 purple_util_set_current_song@Base 1:2.4.0 purple_util_set_user_dir@Base 1:2.2.0 purple_util_uninit@Base 1:2.3.0 purple_util_write_data_to_file@Base 1:2.2.0 purple_util_write_data_to_file_absolute@Base 1:2.2.0 purple_uuid_random@Base 1:2.7.0 purple_value_destroy@Base 1:2.2.0 purple_value_dup@Base 1:2.2.0 purple_value_get_boolean@Base 1:2.2.0 purple_value_get_boxed@Base 1:2.2.0 purple_value_get_char@Base 1:2.2.0 purple_value_get_enum@Base 1:2.2.0 purple_value_get_int64@Base 1:2.2.0 purple_value_get_int@Base 1:2.2.0 purple_value_get_long@Base 1:2.2.0 purple_value_get_object@Base 1:2.2.0 purple_value_get_pointer@Base 1:2.2.0 purple_value_get_short@Base 1:2.2.0 purple_value_get_specific_type@Base 1:2.2.0 purple_value_get_string@Base 1:2.2.0 purple_value_get_subtype@Base 1:2.2.0 purple_value_get_type@Base 1:2.2.0 purple_value_get_uchar@Base 1:2.2.0 purple_value_get_uint64@Base 1:2.2.0 purple_value_get_uint@Base 1:2.2.0 purple_value_get_ulong@Base 1:2.2.0 purple_value_get_ushort@Base 1:2.2.0 purple_value_is_outgoing@Base 1:2.2.0 purple_value_new@Base 1:2.2.0 purple_value_new_outgoing@Base 1:2.2.0 purple_value_set_boolean@Base 1:2.2.0 purple_value_set_boxed@Base 1:2.2.0 purple_value_set_char@Base 1:2.2.0 purple_value_set_enum@Base 1:2.2.0 purple_value_set_int64@Base 1:2.2.0 purple_value_set_int@Base 1:2.2.0 purple_value_set_long@Base 1:2.2.0 purple_value_set_object@Base 1:2.2.0 purple_value_set_pointer@Base 1:2.2.0 purple_value_set_short@Base 1:2.2.0 purple_value_set_string@Base 1:2.2.0 purple_value_set_uchar@Base 1:2.2.0 purple_value_set_uint64@Base 1:2.2.0 purple_value_set_uint@Base 1:2.2.0 purple_value_set_ulong@Base 1:2.2.0 purple_value_set_ushort@Base 1:2.2.0 purple_version_check@Base 1:2.2.0 purple_whiteboard_clear@Base 1:2.2.0 purple_whiteboard_create@Base 1:2.2.0 purple_whiteboard_destroy@Base 1:2.2.0 purple_whiteboard_draw_line@Base 1:2.2.0 purple_whiteboard_draw_list_destroy@Base 1:2.2.0 purple_whiteboard_draw_point@Base 1:2.2.0 purple_whiteboard_get_brush@Base 1:2.2.0 purple_whiteboard_get_dimensions@Base 1:2.2.0 purple_whiteboard_get_session@Base 1:2.2.0 purple_whiteboard_send_brush@Base 1:2.2.0 purple_whiteboard_send_clear@Base 1:2.2.0 purple_whiteboard_send_draw_list@Base 1:2.2.0 purple_whiteboard_set_brush@Base 1:2.2.0 purple_whiteboard_set_dimensions@Base 1:2.2.0 purple_whiteboard_set_prpl_ops@Base 1:2.2.0 purple_whiteboard_set_ui_ops@Base 1:2.2.0 purple_whiteboard_start@Base 1:2.2.0 purple_xfer_add@Base 1:2.2.0 purple_xfer_cancel_local@Base 1:2.2.0 purple_xfer_cancel_remote@Base 1:2.2.0 purple_xfer_conversation_write@Base 1:2.2.0 purple_xfer_end@Base 1:2.2.0 purple_xfer_error@Base 1:2.2.0 purple_xfer_get_account@Base 1:2.2.0 purple_xfer_get_bytes_remaining@Base 1:2.2.0 purple_xfer_get_bytes_sent@Base 1:2.2.0 purple_xfer_get_end_time@Base 1:2.4.0 purple_xfer_get_filename@Base 1:2.2.0 purple_xfer_get_local_filename@Base 1:2.2.0 purple_xfer_get_local_port@Base 1:2.2.0 purple_xfer_get_progress@Base 1:2.2.0 purple_xfer_get_remote_ip@Base 1:2.2.0 purple_xfer_get_remote_port@Base 1:2.2.0 purple_xfer_get_remote_user@Base 1:2.2.0 purple_xfer_get_size@Base 1:2.2.0 purple_xfer_get_start_time@Base 1:2.4.0 purple_xfer_get_status@Base 1:2.2.0 purple_xfer_get_thumbnail@Base 1:2.7.0 purple_xfer_get_thumbnail_mimetype@Base 1:2.7.0 purple_xfer_get_type@Base 1:2.2.0 purple_xfer_get_ui_ops@Base 1:2.2.0 purple_xfer_is_canceled@Base 1:2.2.0 purple_xfer_is_completed@Base 1:2.2.0 purple_xfer_new@Base 1:2.2.0 purple_xfer_prepare_thumbnail@Base 1:2.7.0 purple_xfer_prpl_ready@Base 1:2.6.0 purple_xfer_read@Base 1:2.2.0 purple_xfer_ref@Base 1:2.2.0 purple_xfer_request@Base 1:2.2.0 purple_xfer_request_accepted@Base 1:2.2.0 purple_xfer_request_denied@Base 1:2.2.0 purple_xfer_set_ack_fnc@Base 1:2.2.0 purple_xfer_set_bytes_sent@Base 1:2.2.0 purple_xfer_set_cancel_recv_fnc@Base 1:2.2.0 purple_xfer_set_cancel_send_fnc@Base 1:2.2.0 purple_xfer_set_completed@Base 1:2.2.0 purple_xfer_set_end_fnc@Base 1:2.2.0 purple_xfer_set_filename@Base 1:2.2.0 purple_xfer_set_init_fnc@Base 1:2.2.0 purple_xfer_set_local_filename@Base 1:2.2.0 purple_xfer_set_message@Base 1:2.2.0 purple_xfer_set_read_fnc@Base 1:2.2.0 purple_xfer_set_request_denied_fnc@Base 1:2.2.0 purple_xfer_set_size@Base 1:2.2.0 purple_xfer_set_start_fnc@Base 1:2.2.0 purple_xfer_set_thumbnail@Base 1:2.7.0 purple_xfer_set_write_fnc@Base 1:2.2.0 purple_xfer_start@Base 1:2.2.0 purple_xfer_ui_ready@Base 1:2.6.0 purple_xfer_unref@Base 1:2.2.0 purple_xfer_update_progress@Base 1:2.2.0 purple_xfer_write@Base 1:2.2.0 purple_xfers_get_all@Base 1:2.2.0 purple_xfers_get_handle@Base 1:2.2.0 purple_xfers_get_ui_ops@Base 1:2.2.0 purple_xfers_init@Base 1:2.2.0 purple_xfers_set_ui_ops@Base 1:2.2.0 purple_xfers_uninit@Base 1:2.2.0 serv_add_deny@Base 1:2.6.0 serv_add_permit@Base 1:2.6.0 serv_alias_buddy@Base 1:2.6.0 serv_chat_invite@Base 1:2.6.0 serv_chat_leave@Base 1:2.6.0 serv_chat_send@Base 1:2.6.0 serv_chat_whisper@Base 1:2.6.0 serv_get_info@Base 1:2.6.0 serv_got_alias@Base 1:2.6.0 serv_got_attention@Base 1:2.6.0 serv_got_chat_in@Base 1:2.6.0 serv_got_chat_invite@Base 1:2.6.0 serv_got_chat_left@Base 1:2.6.0 serv_got_im@Base 1:2.6.0 serv_got_joined_chat@Base 1:2.6.0 serv_got_typing@Base 1:2.6.0 serv_got_typing_stopped@Base 1:2.6.0 serv_join_chat@Base 1:2.6.0 serv_move_buddy@Base 1:2.6.0 serv_reject_chat@Base 1:2.6.0 serv_rem_deny@Base 1:2.6.0 serv_rem_permit@Base 1:2.6.0 serv_send_attention@Base 1:2.6.0 serv_send_file@Base 1:2.6.0 serv_send_im@Base 1:2.6.0 serv_send_typing@Base 1:2.6.0 serv_set_info@Base 1:2.6.0 serv_set_permit_deny@Base 1:2.6.0 xmlnode_copy@Base 1:2.6.0 xmlnode_free@Base 1:2.6.0 xmlnode_from_file@Base 1:2.6.0 xmlnode_from_str@Base 1:2.6.0 xmlnode_get_attrib@Base 1:2.6.0 xmlnode_get_attrib_with_namespace@Base 1:2.6.0 xmlnode_get_child@Base 1:2.6.0 xmlnode_get_child_with_namespace@Base 1:2.6.0 xmlnode_get_data@Base 1:2.6.0 xmlnode_get_data_unescaped@Base 1:2.6.0 xmlnode_get_namespace@Base 1:2.6.0 xmlnode_get_next_twin@Base 1:2.6.0 xmlnode_get_parent@Base 1:2.6.0 xmlnode_get_prefix@Base 1:2.6.0 xmlnode_insert_child@Base 1:2.6.0 xmlnode_insert_data@Base 1:2.6.0 xmlnode_new@Base 1:2.6.0 xmlnode_new_child@Base 1:2.6.0 xmlnode_remove_attrib@Base 1:2.6.0 xmlnode_remove_attrib_with_namespace@Base 1:2.6.0 xmlnode_set_attrib@Base 1:2.6.0 xmlnode_set_attrib_full@Base 1:2.6.0 xmlnode_set_attrib_with_namespace@Base 1:2.6.0 xmlnode_set_attrib_with_prefix@Base 1:2.6.0 xmlnode_set_namespace@Base 1:2.6.0 xmlnode_set_prefix@Base 1:2.6.0 xmlnode_to_formatted_str@Base 1:2.6.0 xmlnode_to_str@Base 1:2.6.0 debian/pidgin-dev.preinst0000664000000000000000000000155612274732607012645 0ustar #!/bin/sh # preinst script for pidgin-dev # # see: dh_installdeb(1) set -e # summary of how this script can be called: # * `install' # * `install' # * `upgrade' # * `abort-upgrade' # for details, see http://www.debian.org/doc/debian-policy/ or # the debian-policy package case "$1" in install|upgrade) if dpkg --compare-versions "$2" lt 2.1.1-2; then if [ -h /usr/share/doc/pidgin-dev ]; then rm /usr/share/doc/pidgin-dev fi fi ;; abort-upgrade) ;; *) echo "preinst called with unknown argument \`$1'" >&2 exit 1 ;; esac # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. #DEBHELPER# exit 0 debian/libpurple-bin.install0000664000000000000000000000021312274732607013332 0ustar debian/tmp/usr/bin/purple-remote debian/tmp/usr/bin/purple-send debian/tmp/usr/bin/purple-send-async debian/tmp/usr/bin/purple-url-handler debian/prefs.xml0000664000000000000000000000414612274732607011050 0ustar debian/README.Debian.dev0000664000000000000000000000244512274732607012025 0ustar README for pidgin-dev - How to package Pidgin plugins ------------------------------------------------- First, let me explain the current Pidgin versioning scheme (as of 1.0.0): Every time the plugin API in pidgin is made backwards-incompatible with previous versions, the major version number (the first number before the .) is incremented. So if currently in the pidgin 2.x series, the next time the API will change such that plugins may need to be changed is at 3.0.0. pidgin plugin packages should be named pidgin-, so for Guifications, the package name should be pidgin-guifications. Plugin packages should build-depend on pidgin-dev (>= minimum pidgin version required to support plugin). Normally the minimum version of pidgin-dev will just be 2.0.0 for the 2.x series, or higher if the plugin uses a new function introduced in a later version. Plugin packages should also use dh_pidgin to set the correct dependencies for the resulting package. dh_pidgin is included in the pidgin-dev package, and can be used by making sure the Depends: field in the plugin package's debian/control file contains "${misc:Depends}", the Conflicts: field contains "${misc:Conflicts}", as well as calling dh_pidgin from debian/rules, normally in the install rule. -- Ari Pollak 25 Sep 2006 debian/dh_pidgin0000664000000000000000000000340712274732607011056 0ustar #! /usr/bin/perl -w =head1 NAME dh_pidgin- depend on the appropriate version of pidgin =cut use strict; use Debian::Debhelper::Dh_Lib; =head1 SYNOPSIS B [S>] =head1 DESCRIPTION dh_pidgin is a debhelper program that is responsible for generating the ${misc:Depends} substitutions that depend on the correct versions of pidgin, and adding them to substvars files. To use this program, make sure it is executed in debian/rules at some point during the build process (normally during the install), and make sure that your Depends: field in debian/control contains ${misc:Depends}. =cut init(); my ($pidgin_epoch, $pidgin_version, $next_version, $pidgin_major, $pidgin_minor, $pidgin_rest); $pidgin_version = `dpkg -s pidgin`; $pidgin_version =~ /^Version:\s*([\S]+)/m; $pidgin_version = $1; if (! defined $pidgin_version) { error("pidgin is not installed. (Probably forgot to Build-Depend on pidgin)"); } if ($pidgin_version =~ m/(\d+:)?(\d+)\.(\d+)\.(.*)/) { $pidgin_epoch = $1 || ""; $pidgin_major = $2; $pidgin_minor = $3; $pidgin_rest = $4; } else { error("Unable to parse pidgin version out of '$pidgin_version'"); } $next_version = $pidgin_epoch . ($pidgin_major + 1) . ".0"; $pidgin_version = $pidgin_epoch . $pidgin_major . "." .$pidgin_minor; foreach my $package (@{$dh{DOPACKAGES}}) { my $tmp=tmpdir($package); addsubstvar($package, "misc:Depends", "pidgin", ">= $pidgin_version"); addsubstvar($package, "misc:Depends", "pidgin", "<< $next_version"); addsubstvar($package, "misc:Conflicts", "pidgin", ">= $next_version"); } =head1 SEE ALSO L =head1 AUTHOR Written by Tollef Fog Heen , based on various other dh_* commands written by Joey Hess . =cut debian/libpurple-dev.install0000664000000000000000000000020612274732607013342 0ustar debian/tmp/usr/lib/libpurple*.so debian/tmp/usr/include/libpurple debian/tmp/usr/lib/pkgconfig/purple.pc debian/tmp/usr/share/aclocal debian/gbp.conf0000664000000000000000000000152712274732607010626 0ustar # Configuration file for git-buildpackage and friends [DEFAULT] # use pristine-tar: pristine-tar = True # Don't check if debian-branch == current branch #ignore-branch = True # the default branch for upstream sources: #upstream-branch = upstream # the default branch for the debian patch: #debian-branch = master # the default tag formats used: #upstream-tag = upstream/%(version)s #debian-tag = debian/%(version)s # Options only affecting git-buildpackage [git-buildpackage] # uncomment this to automatically GPG sign tags sign-tags = True # push to a remote repository after a successful tag: #posttag = git-push git.example.com # let package generate upstream changelog before build: #prebuild = GIT_DIR=$GBP_GIT_DIR debian/autogen.sh [git-dch] # include information from meta tags: meta = True debian/pidgin-data.install0000664000000000000000000000026512274732607012756 0ustar debian/tmp/usr/share/icons debian/tmp/usr/share/locale debian/tmp/usr/share/pixmaps debian/tmp/usr/share/sounds debian/pidgin-menu.xpm usr/share/pixmaps debian/prefs.xml etc/purple debian/pidgin-dev.dirs0000664000000000000000000000007112274732607012111 0ustar usr/share/doc/pidgin-data usr/share/doc/pidgin-data/html debian/copyright.in0000664000000000000000000001010312274732607011535 0ustar pidgin was initially packaged for Debian by Ari Pollak on Sun, Apr 8 2007. It was downloaded from: http://www.pidgin.im Purple/Pidgin/Finch is the legal property of its developers. Please refer to the COPYRIGHT file distributed with this source distribution. The contents of the COPYRIGHT file is included here: @PIDGIN_COPYRIGHT@ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. On Debian systems, the complete text of the GNU General Public License can be found in /usr/share/common-licenses/GPL file. -------------------- The code for the GG protocol plugin (libpurple/protocols/gg/lib) has the following copyright notice: (C) Copyright 2001-2003 Wojtek Kaniewski Robert J. Woźny Arkadiusz Miśkiewicz Tomasz Chiliński This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License Version 2.1 as published by the Free Software Foundation. On Debian systems, the complete text of the GNU Lesser General Public License Version 2.1 can be found in /usr/share/common-licenses/LGPL-2.1 file. -------------------- The code for the OSCAR protocol (libpurple/protocols/oscar) has the following copyright notice: This file is the legal property of its developers. Please see the AUTHORS file distributed alongside this file. The contents of the AUTHORS file is included here: @OSCAR_AUTHORS@ This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. -------------------- The code for libzephyr (libpurple/protocols/zephyr), which is not built for the Debian package, has the following copyright notices: Copyright 1987,1988 by the Massachusetts Institute of Technology All rights reserved. Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of the Massachusetts Institute of Technology (M.I.T.) not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. M.I.T. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL M.I.T. BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. Copyright 1987, 1989 by the Student Information Processing Board of the Massachusetts Institute of Technology Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the names of M.I.T. and the M.I.T. S.I.P.B. not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. M.I.T. and the M.I.T. S.I.P.B. make no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. debian/pidgin-dev.install0000664000000000000000000000023412274732607012617 0ustar build/doc/html/*.{html,gif,png} usr/share/doc/pidgin-dev/html debian/tmp/usr/include/pidgin debian/tmp/usr/lib/pkgconfig/pidgin.pc debian/dh_pidgin usr/bin debian/pidgin.preinst0000664000000000000000000000154212274732607012064 0ustar #!/bin/sh # preinst script for pidgin # # see: dh_installdeb(1) set -e # summary of how this script can be called: # * `install' # * `install' # * `upgrade' # * `abort-upgrade' # for details, see http://www.debian.org/doc/debian-policy/ or # the debian-policy package case "$1" in install|upgrade) if dpkg --compare-versions "$2" lt 2.1.1-2; then if [ -h /usr/share/doc/pidgin ]; then rm /usr/share/doc/pidgin fi fi ;; abort-upgrade) ;; *) echo "preinst called with unknown argument \`$1'" >&2 exit 1 ;; esac # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. #DEBHELPER# exit 0 debian/finch.install0000664000000000000000000000030612274732607011660 0ustar debian/tmp/usr/bin/finch debian/tmp/usr/lib/finch debian/tmp/usr/lib/libgnt*.so.* debian/tmp/usr/lib/gnt debian/tmp/usr/share/man/*/finch.* debian/lintian-override/finch usr/share/lintian/overrides debian/purple-remote.10000664000000000000000000000341512274732607012067 0ustar .TH PURPLE-REMOTE 1 .SH NAME purple-remote \- Send remote commands to Pidgin/Finch .SH SYNOPSIS .TP 5 \fBpurple-remote \fIcommand1\fR \fIcommand2\fR \fI...\fR .RI .br .SH OPTIONS Each command is of one of the three types: .PP [protocol:]commandname?param1=value1¶m2=value2&... .br FunctionName?param1=value1¶m2=value2&... .br FunctionName(value1,value2,...) .PP The second and third form are provided for completeness but their use is not recommended; use purple-send or purple-send-async instead. The second form uses introspection to find out the parameter names and their types, therefore it is rather slow. .SH EXAMPLES jabber:goim?screenname=testone@localhost&message=hi .br jabber:gochat?room=TestRoom&server=conference.localhost .br jabber:getinfo?screenname=testone@localhost .br jabber:addbuddy?screenname=my friend .br .PP setstatus?status=away&message=don't disturb .br quit .PP PurpleAccountsFindConnected?name=&protocol=prpl-jabber .br PurpleAccountFindConnected(,prpl-jabber) .SH DESCRIPTION .PP Send remote commands to Purple. This program uses DBus to communicate with Pidgin/Finch. .SH LICENSE .PP Copyright (c) 1998-2006 see: AUTHORS .PP This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2, as published by the Free Software Foundation .SH AUTHORS .PP Sean Egan - Lead Developer .PP This manual page was written by Anibal Avelar . Permission is granted to copy, distribute and/or modify this document under the terms of the GNU General Public License, Version 2 any later version published by the Free Software Foundation. .PP On Debian systems, the complete text of the GNU General Public License can be found in /usr/share/common-licenses/GPL. debian/lintian-override/0000775000000000000000000000000012274732607012455 5ustar debian/lintian-override/libpurple00000664000000000000000000000044112274732607014455 0ustar # Internal libraries libpurple0: binary-or-shlib-defines-rpath ./usr/lib/purple-2/libaim.so /usr/lib/purple-2 libpurple0: binary-or-shlib-defines-rpath ./usr/lib/purple-2/libicq.so /usr/lib/purple-2 libpurple0: binary-or-shlib-defines-rpath ./usr/lib/purple-2/libxmpp.so /usr/lib/purple-2 debian/lintian-override/pidgin0000664000000000000000000000013012274732607013644 0ustar # installed by pidgin-data pidgin: menu-icon-missing /usr/share/pixmaps/pidgin-menu.xpm debian/lintian-override/finch0000664000000000000000000000006112274732607013464 0ustar finch: package-name-doesnt-match-sonames libgnt0 debian/rules0000775000000000000000000000636112274732607010270 0ustar #!/usr/bin/make -f export DEB_BUILD_HARDENING=1 include /usr/share/cdbs/1/rules/autoreconf.mk include /usr/share/cdbs/1/class/autotools.mk include /usr/share/cdbs/1/rules/debhelper.mk include /usr/share/cdbs/1/class/gnome.mk include /usr/share/cdbs/1/rules/utils.mk # Build into a separate directory DEB_BUILDDIR = $(DEB_SRCDIR)/build DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH) LDFLAGS = -Wl,--as-needed DEB_CONFIGURE_EXTRA_FLAGS = --disable-gevolution \ --enable-cap --with-system-ssl-certs=/etc/ssl/certs \ --enable-perl --with-zephyr=/usr --enable-dbus --enable-gnutls=no \ --enable-nss=yes --enable-cyrus-sasl --enable-vv --enable-farsight \ --enable-tcl --enable-tk \ --with-tclconfig=/usr/lib/$(DEB_HOST_MULTIARCH) \ --with-dynamic-prpls=bonjour,gg,irc,jabber,msn,myspace,mxit,novell,oscar,sametime,simple,yahoo,zephyr # disable silc ifeq ($(DEB_BUILD_ARCH_OS),linux) auto DEB_CONFIGURE_EXTRA_FLAGS += --enable-nm else DEB_CONFIGURE_EXTRA_FLAGS += --disable-nm endif DEB_INSTALL_DOCS_ALL := -XAUTHORS -XNEWS -XREADME DEB_DH_MAKESHLIBS_ARGS_pidgin := -V -X/usr/lib/pidgin DEB_DH_SHLIBDEPS_ARGS_pidgin := -X/usr/lib/pidgin/cap.so -- -dSuggests debian/pidgin/usr/lib/pidgin/cap.so -dDepends DEB_PERL_INCLUDE_pidgin := -d /usr/lib/pidgin/perl # finch package DEB_DH_MAKESHLIBS_ARGS_finch := -V -X/usr/lib/finch DEB_DH_SHLIBDEPS_ARGS_finch := -X/usr/lib/finch/gntclipboard.so -X/usr/lib/finch/gntgf.so -- -dSuggests debian/finch/usr/lib/finch/gntclipboard.so debian/finch/usr/lib/finch/gntgf.so -dDepends # libpurple package DEB_DH_MAKESHLIBS_ARGS_libpurple0 := -X/usr/lib/purple-2 DEB_DH_SHLIBDEPS_ARGS_libpurple0 := -X/usr/lib/purple-2/tcl.so -- -dSuggests debian/libpurple0/usr/lib/purple-2/tcl.so -dDepends DEB_PERL_INCLUDE_libpurple0 := -d /usr/lib/purple-2/perl # for pidgin-dev, extra documentation is installed manually below DEB_INSTALL_MANPAGES_pidgin-dev := debian/dh_pidgin.1 clean:: rm -f debian/copyright makebuilddir/pidgin:: touch configure # We don't want to regenerate autotools files common-install-impl:: rm -f debian/tmp/usr/lib/pidgin/relnot.so # release notification plugin rm -f debian/tmp/usr/bin/nullclient # examples rm -f debian/tmp/usr/bin/purple-client-example # examples find debian/tmp/usr/lib -name '*.la' -print0 | xargs -0 rm # Include author lists in copyright file sed -e '/@PIDGIN_COPYRIGHT@/r COPYRIGHT' \ -e '/@PIDGIN_COPYRIGHT@/d' \ -e '/@OSCAR_AUTHORS@/r libpurple/protocols/oscar/AUTHORS' \ -e '/@OSCAR_AUTHORS@/d' \ debian/copyright.in > debian/copyright # Translation domain to desktop file echo 'X-Ubuntu-Gettext-Domain=pidgin' >> debian/tmp/usr/share/applications/pidgin.desktop # Call intltool-update to build the .pot cd $(DEB_SRCDIR)/po; intltool-update -p cleanbuilddir/pidgin:: rm -rf $(DEB_SRCDIR)/build build/pidgin-dev:: pod2man debian/dh_pidgin > debian/dh_pidgin.1 cd build; make docs binary-install/pidgin:: # Add the launcher for pidgin mkdir -p debian/pidgin/usr/share/indicators/messages/applications echo /usr/share/applications/pidgin.desktop > debian/pidgin/usr/share/indicators/messages/applications/pidgin binary-install/pidgin-dev:: dh_installdocs -ppidgin-dev debian/README.Debian.dev cleanbuilddir/pidgin-dev:: rm -f debian/dh_pidgin.1