aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWilmer van der Gaast <wilmer@gaast.net>2010-03-14 20:19:10 +0000
committerWilmer van der Gaast <wilmer@gaast.net>2010-03-14 20:19:10 +0000
commit21d48d977b35d35d0ad86b3ccd051dae0d1fe055 (patch)
tree35a6eb0855b18c692d1badbf3fd0b146e3567be0
parent90cd6c4780c7e42a0b7caff5d3a2ba1e0bd3f308 (diff)
Fix for bug #536: No longer fail on corrupted USR responses with certain
Unicode characters in the friendly name.
-rw-r--r--protocols/msn/ns.c25
1 files changed, 16 insertions, 9 deletions
diff --git a/protocols/msn/ns.c b/protocols/msn/ns.c
index d05d8e0d..d78d753a 100644
--- a/protocols/msn/ns.c
+++ b/protocols/msn/ns.c
@@ -228,19 +228,26 @@ static int msn_ns_command( gpointer data, char **cmd, int num_parts )
return( 0 );
}
}
- else if( num_parts == 7 && strcmp( cmd[2], "OK" ) == 0 )
+ else if( num_parts >= 7 && strcmp( cmd[2], "OK" ) == 0 )
{
set_t *s;
- http_decode( cmd[4] );
-
- strncpy( ic->displayname, cmd[4], sizeof( ic->displayname ) );
- ic->displayname[sizeof(ic->displayname)-1] = 0;
-
- if( ( s = set_find( &ic->acc->set, "display_name" ) ) )
+ if( num_parts == 7 )
{
- g_free( s->value );
- s->value = g_strdup( cmd[4] );
+ http_decode( cmd[4] );
+
+ strncpy( ic->displayname, cmd[4], sizeof( ic->displayname ) );
+ ic->displayname[sizeof(ic->displayname)-1] = 0;
+
+ if( ( s = set_find( &ic->acc->set, "display_name" ) ) )
+ {
+ g_free( s->value );
+ s->value = g_strdup( cmd[4] );
+ }
+ }
+ else
+ {
+ imcb_log( ic, "Warning: Friendly name in server response was corrupted" );
}
imcb_log( ic, "Authenticated, getting buddy list" );