A denial of service vulnerability exists in the handling of the MXIT protocol in Pidgin. Specially crafted MXIT data sent via the server could potentially result in an out-of-bounds read. A malicious server or user can send an invalid mood to trigger this vulnerability.
In the function mxit_parse_cmd_contact in mxit/protocol.c at line 1743 contact->mood will be read from data coming from the server when parsing a contact update packet.
1743 contact->mood = atoi( rec->fields->data );
At line 1759, this mood will be passed to the function mxit_update_contact():
1759 mxit_update_contact( session, contact );
This function is defined in mxit/roster.c at line 363. If mood is anything other than 0, then this value is subsequently used to as index into the mxit_moods array at line 432.
432 purple_prpl_got_user_status( session->acc, contact->username, "mood", PURPLE_MOOD_NAME, mxit_moods[contact->mood-1].mood, NULL );
This can result in an out-of-bounds read of this information, potentially resulting in a crash of the program if that memory location is not accessible.
2016-04-13 - Vendor Notification
2016-06-21 - Public Disclosure
Discovered by Yves Younan of Cisco Talos.