desktop-packages team mailing list archive
-
desktop-packages team
-
Mailing list archive
-
Message #141632
[Bug 886576] Re: pidgin crashes upon attempts to receive video calls over XMPP
Thanks for reporting this bug and helping make Ubuntu better. Sorry we
don't always have the resources to get to every bug report. Ubuntu 10.04
is no longer supported so I'm going to close the bug.
** Changed in: pidgin (Ubuntu)
Status: New => Fix Released
--
You received this bug notification because you are a member of Desktop
Packages, which is subscribed to pidgin in Ubuntu.
https://bugs.launchpad.net/bugs/886576
Title:
pidgin crashes upon attempts to receive video calls over XMPP
Status in pidgin package in Ubuntu:
Fix Released
Bug description:
Description: Ubuntu 10.04.3 LTS
Release: 10.04
pidgin:
Installed: 1:2.6.6-1ubuntu4.3
Candidate: 1:2.6.6-1ubuntu4.3
Version table:
*** 1:2.6.6-1ubuntu4.3 0
500 http://us.archive.ubuntu.com/ubuntu/ lucid-updates/main Packages
100 /var/lib/dpkg/status
1:2.6.6-1ubuntu4.1 0
500 http://security.ubuntu.com/ubuntu/ lucid-security/main Packages
1:2.6.6-1ubuntu4 0
500 http://us.archive.ubuntu.com/ubuntu/ lucid/main Packages
pidgin crashes upon attempts to receive video calls over XMPP - If
video calls fail, or are not supported, pidgin should report an error
- it should *not* crash.
This bug was found in pidgin 2.6.6 under Ubuntu 10.04 (Lucid Lynx), an
LTS release. I confirm that the bug is fixed in pidgin 2.10.0 I do
not know exactly when this bug was fixed, but it is in fact fixed in
later pidgin releases... Ubuntu should please upgrade the pidgin
version in the 10.04 LTS release. I, personally, will simply upgrade
my copy of pidgin.
I consider this a security vulnerability, because it causes the pidgin
process to terminate. On my system, some other services depend on
pidgin to run. A malicious user can destroy the function of *my*
server by taking advantage of this bug.
It's very easy to reproduce: Log into a gtalk account in pidgin via
XMPP. Log into a different gtalk account via gmail's www interface.
From the www interface, attempt a video call to the other gtalk
account logged into pidgin. (www is the caller, pidgin is the
receiver)
Here is a backtrace of the issue occurring.
GNU gdb (GDB) 7.1-ubuntu
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /usr/bin/pidgin...Reading symbols from /usr/lib/debug/usr/bin/pidgin...done.
done.
(gdb) handle SIGPIPE nostop noprint
Signal Stop Print Pass to program Description
SIGPIPE No No Yes Broken pipe
(gdb) run
Starting program: /usr/bin/pidgin
[Thread debugging using libthread_db enabled]
Xlib: extension "RANDR" missing on display ":0.0".
[New Thread 0x7fffe038d700 (LWP 24171)]
Program received signal SIGSEGV, Segmentation fault.
0x00007fffdedacad4 in jingle_transport_parse (transport=0x16beba0)
at /build/buildd/pidgin-2.6.6/./libpurple/protocols/jabber/jingle/transport.c:169
169 /build/buildd/pidgin-2.6.6/./libpurple/protocols/jabber/jingle/transport.c: No such file or directory.
in /build/buildd/pidgin-2.6.6/./libpurple/protocols/jabber/jingle/transport.c
(gdb) bt full
#0 0x00007fffdedacad4 in jingle_transport_parse (transport=0x16beba0)
at /build/buildd/pidgin-2.6.6/./libpurple/protocols/jabber/jingle/transport.c:169
type = 0x16e80c0 "http://www.google.com/transport/p2p"
#1 0x00007fffdeda794b in jingle_content_parse_internal (content=0x16753f0)
at /build/buildd/pidgin-2.6.6/./libpurple/protocols/jabber/jingle/content.c:386
description = <value optimized out>
type = 0x14bd170 "urn:xmpp:jingle:apps:rtp:1"
creator = 0x16e9870 "initiator"
disposition = 0x0
senders = 0x0
name = 0x16e97b0 "video"
transport = <value optimized out>
#2 0x00007fffdedaa9b3 in jingle_rtp_parse_internal (rtp=0x16beba0)
at /build/buildd/pidgin-2.6.6/./libpurple/protocols/jabber/jingle/rtp.c:675
content = <value optimized out>
description = <value optimized out>
media_type = <value optimized out>
ssrc = <value optimized out>
#3 0x00007fffdeda6bd3 in jingle_handle_session_initiate (session=0x14f2060,
jingle=0x8a05a0)
at /build/buildd/pidgin-2.6.6/./libpurple/protocols/jabber/jingle/jingle.c:227
parsed_content = 0x0
content = <value optimized out>
#4 0x00007fffdeda61f8 in jabber_process_packet (js=0x14fd730,
packet=<value optimized out>)
at /build/buildd/pidgin-2.6.6/./libpurple/protocols/jabber/jabber.c:269
xmlns = <value optimized out>
#5 0x00007fffdedb0d57 in jabber_parser_element_end_libxml (
user_data=0x16beba0, element_name=<value optimized out>, prefix=0x0,
namespace=0x7ffff7fbe7e0 "\340\347\373\367\377\177")
at /build/buildd/pidgin-2.6.6/./libpurple/protocols/jabber/parser.c:142
packet = 0x0
#6 0x00007ffff4077de3 in xmlParseEndTag2 (ctxt=0x14d4a20, prefix=0x0,
URI=0x14d8ca7 "jabber:client", line=0, nsNr=0, tlen=<value optimized out>)
at parser.c:9216
name = 0x1 <Address 0x1 out of bounds>
#7 0x00007ffff4084529 in xmlParseTryOrFinish (ctxt=0x14d4a20, terminate=0)
at parser.c:11018
ret = 0
avail = 5
tlen = 9
cur = <value optimized out>
next = <value optimized out>
lastlt = 0x14d6a03 "</iq>"
lastgt = 0x14d6a07 ">"
#8 0x00007ffff4085c8c in xmlParseChunk__internal_alias (ctxt=0x14d4a20,
chunk=0x7fffdefd0c40 "http://www.google.com/session/phone\"/><pho:payload-type id=\"8\" name=\"PCMA\" bitrate=\"64000\" clockrate=\"8000\" xmlns:pho=\"http://www.google.com/session/phone\"/><pho:payload-type id=\"117\" name=\"red\" clock"..., size=788, terminate=0) at parser.c:11602
end_in_lf = 0
remain = 0
#9 0x00007fffdedb0afd in jabber_parser_process (js=0x14fd730, buf=0x0, len=0)
at /build/buildd/pidgin-2.6.6/./libpurple/protocols/jabber/parser.c:252
ret = <value optimized out>
#10 0x00007fffdeda53a2 in jabber_recv_cb_ssl (data=0x14fc900, gsc=0xbb8600,
cond=<value optimized out>)
at /build/buildd/pidgin-2.6.6/./libpurple/protocols/jabber/jabber.c:551
js = 0x14fd730
len = 788
buf = "http://www.google.com/session/phone\"/><pho:payload-type id=\"8\" name=\"PCMA\" bitrate=\"64000\" clockrate=\"8000\" xmlns:pho=\"http://www.google.com/session/phone\"/><pho:payload-type id=\"117\" name=\"red\" clock"...
#11 0x000000000046ea9e in pidgin_io_invoke (source=<value optimized out>,
condition=<value optimized out>, data=<value optimized out>)
at /build/buildd/pidgin-2.6.6/./pidgin/gtkeventloop.c:78
closure = 0xbffbb0
purple_cond = PURPLE_INPUT_READ
#12 0x00007ffff4e728c2 in g_main_dispatch (context=0x6f7450)
at /build/buildd/glib2.0-2.24.1/glib/gmain.c:1960
dispatch = 0x7ffff4eb4e10 <g_io_unix_dispatch>
user_data = 0xbffbb0
callback = 0x46ea60 <pidgin_io_invoke>
cb_funcs = 0x7ffff5110610
cb_data = 0x14feea0
current_source_link = {data = 0x14d5180, next = 0x0}
source = 0x14d5180
current = 0xdfa8b0
i = 0
#13 IA__g_main_context_dispatch (context=0x6f7450)
at /build/buildd/glib2.0-2.24.1/glib/gmain.c:2513
No locals.
#14 0x00007ffff4e76748 in g_main_context_iterate (context=0x6f7450,
block=<value optimized out>, dispatch=<value optimized out>,
self=<value optimized out>)
at /build/buildd/glib2.0-2.24.1/glib/gmain.c:2591
max_priority = 2147483647
timeout = 774
some_ready = 1
nfds = 15
allocated_nfds = -186108336
fds = <value optimized out>
__PRETTY_FUNCTION__ = "g_main_context_iterate"
#15 0x00007ffff4e76c55 in IA__g_main_loop_run (loop=0x14fde10)
at /build/buildd/glib2.0-2.24.1/glib/gmain.c:2799
self = 0x6ee010
__PRETTY_FUNCTION__ = "IA__g_main_loop_run"
#16 0x00007ffff6251bb7 in IA__gtk_main ()
at /build/buildd/gtk+2.0-2.20.1/gtk/gtkmain.c:1219
tmp_list = 0x714ea0
functions = 0x0
init = 0x0
loop = <value optimized out>
#17 0x000000000048675f in main (argc=1, argv=0x7fffffffe288)
at /build/buildd/pidgin-2.6.6/./pidgin/gtkmain.c:977
opt_force_online = 0
opt_help = <value optimized out>
opt_login = 0
opt_nologin = 0
opt_version = -16040
opt_si = 1
opt_config_dir_arg = <value optimized out>
opt_login_arg = 0x0
opt_session_arg = 0x0
accounts = <value optimized out>
sigset = {__val = {81927, 0 <repeats 15 times>}}
prev_sig_disp = <value optimized out>
errmsg = "\005\000\000\000\000\000\000\000\244\355\061\365\377\177\000\000\360\302\377\377\377\177\000\000\"\232\336\367\377\177\000\000\000\000\000\000\000\000\000\000\206\271\336\367\377\177\000\000\270\337\377\367\377\177\000\000(\340\377\377\377\177\000\000\060\340\377\377\377\177\000\000h_1\365\377\177\000\000ت\374\367\377\177\000\000\002\242\336\367\377\177\000\000\200\251\377\367\377\177\000\000\270\064\375\367\377\177\000\000\330D\375\367\377\177\000\000x\245\374\367\377\177\000\000\000\060\375\367\377\177\000\000\000\000\000\000\000\000\000\000\005\000\000\000\000\000\000\000\244\355\061\365\377\177\000\000\360\302\377\377\377\177\000\000\000\000 \203\377\377\377\377\000\000\326r\275\357\377\377\250Y\375\367\377\177\000\000\004\000\000\000\000\000\000\000\227\355\061\365\377\177\000\000\360\302\377\377\377\177\000\000\000\000\200\203\377\377\377\377\000\000\326r\275\357\377\377\000` \000\000\000\000\000\270P \000\000\000\000\000\350P \000\000\000\000\000\000@\000\000\000\000\000\000\003\000\000\000\000\000\000\000\000\020 \000\000\000\000\000\000\060 \000\000\000\000\000h \000\000\000\000\000\000\340\377\377\377\177\000\000p\340\377\377\377\177\000\000\310T\375\367\377\177"...
signal_channel = <value optimized out>
signal_status = <value optimized out>
error = 0x0
opt = <value optimized out>
gui_check = <value optimized out>
debug_enabled = 0
migration_failed = <value optimized out>
active_accounts = <value optimized out>
long_options = {{name = 0x4d30c2 "config", has_arg = 1, flag = 0x0,
val = 99}, {name = 0x4be354 "debug", has_arg = 0, flag = 0x0,
val = 100}, {name = 0x4ce63b "force-online", has_arg = 0,
flag = 0x0, val = 100}, {name = 0x4c1744 "help", has_arg = 0,
flag = 0x0, val = 104}, {name = 0x4ce405 "login", has_arg = 2,
flag = 0x0, val = 108}, {name = 0x4ce648 "multiple", has_arg = 0,
flag = 0x0, val = 109}, {name = 0x4ce651 "nologin", has_arg = 0,
flag = 0x0, val = 110}, {name = 0x4d30b8 "session", has_arg = 1,
flag = 0x0, val = 115}, {name = 0x4c4b43 "version", has_arg = 0,
flag = 0x0, val = 118}, {name = 0x4d30cb "display", has_arg = 1,
flag = 0x0, val = 68}, {name = 0x4ce659 "sync", has_arg = 0,
flag = 0x0, val = 83}, {name = 0x0, has_arg = 0, flag = 0x0,
val = 0}}
(gdb) quit
A debugging session is active.
Inferior 1 [process 24168] will be killed.
Quit anyway? (y or n)
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/pidgin/+bug/886576/+subscriptions