This patch is an ugly hack because it still relies on reading free()'d
memory to detect the symptom of the bug - the attached patch should fix
the real problem. In some connection failure paths,
_lm_connection_failed_with_error was being called and kicking off a
second connection attempt (eg falling back to an IPv4 address if IPv6
has failed), but then the source ID was being overwritten, meaning the
source wasn't destroyed, so the callback was still being called after
connect_data had been freed. I guess at some point in the past
_lm_connection_failed_with_error didn't exist or do retries, so zeroing
out the source ID was a reasonable thing to do in case of failure. I've
also added some asserts which should trigger if my understanding of the
problem and solution are wrong, and these don't trigger on my machine in
either the failure or success cases. I'd recommend pushing this into
updates for any supported distribution you ship with 1.2.x.

** Attachment added: "fix GSource leak and resulting SEGV"
   http://launchpadlibrarian.net/10345908/loudmouth-reconnect-failure.diff

-- 
Crashes when connecting to server that requires STARTTLS
https://bugs.launchpad.net/bugs/64372
You received this bug notification because you are a member of Ubuntu
Bugs, which is the bug contact for Ubuntu.

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to