/pidgin/main: b786e9814536: Fix for TALOS-CAN-0143
Andrew Victor <[email protected]> Mon, 20 Jun 2016 20:09:57 -0400
| Newsgroups | gmane.comp.gnome.gaim.cvs |
|---|---|
| Message-ID | <[email protected]> |
Changeset: b786e9814536aa96a3f7c8674d588b04d11c57a7 Author: Andrew Victor <[email protected]> Date: 2016-06-03 12:01 -0500 Branch: release-2.x.y URL: https://hg.pidgin.im/pidgin/main/rev/b786e9814536 Description: Fix for TALOS-CAN-0143 diffstat: libpurple/protocols/mxit/protocol.c | 19 +++++++++++++++++++ 1 files changed, 19 insertions(+), 0 deletions(-) diffs (41 lines): diff --git a/libpurple/protocols/mxit/protocol.c b/libpurple/protocols/mxit/protocol.c --- a/libpurple/protocols/mxit/protocol.c +++ b/libpurple/protocols/mxit/protocol.c @@ -1993,6 +1993,12 @@ static void mxit_parse_cmd_suggestcontac * 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 ); @@ -2002,11 +2008,24 @@ static void mxit_parse_cmd_suggestcontac /* 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 _______________________________________________ Commits mailing list [email protected] https://pidgin.im/cgi-bin/mailman/listinfo/commits