diff options
| author | Wilmer van der Gaast <wilmer@gaast.net> | 2007-12-02 11:00:15 +0000 | 
|---|---|---|
| committer | Wilmer van der Gaast <wilmer@gaast.net> | 2007-12-02 11:00:15 +0000 | 
| commit | 94d52d64c1ad3d55f210e1fc8e6345d54c4e46d5 (patch) | |
| tree | 5b8f59acfa480a4c3e6329cfd2f676fad103bc3c | |
| parent | 9ff5737ec53cca2ba295b58fb74a8b97f496cd19 (diff) | |
Added charset checks on incoming msgs (from the IRC side) to prevent possible
crashes/other odd behaviour in IM modules (or a GLib function that crashes on
non-UTF-8 strings).
| -rw-r--r-- | irc.c | 17 | 
1 files changed, 14 insertions, 3 deletions
| @@ -319,11 +319,22 @@ void irc_process( irc_t *irc )  				break;  			} -			if( ( cs = set_getstr( &irc->set, "charset" ) ) && ( g_strcasecmp( cs, "utf-8" ) != 0 ) ) +			if( ( cs = set_getstr( &irc->set, "charset" ) ) )  			{  				conv[IRC_MAX_LINE] = 0; -				if( do_iconv( cs, "UTF-8", lines[i], conv, 0, IRC_MAX_LINE - 2 ) != -1 ) -					lines[i] = conv; +				if( do_iconv( cs, "UTF-8", lines[i], conv, 0, IRC_MAX_LINE - 2 ) == -1 ) +				{ +					if( irc->status & USTATUS_LOGGED_IN ) +						irc_usermsg( irc, "ERROR: Charset mismatch detected. The charset " +						                  "setting is currently set to %s, so please make " +						                  "sure your IRC client will send and accept text in " +						                  "that charset, or tell BitlBee which charset to " +						                  "expect by changing the charset setting. See " +						                  "`help set charset' for more information. Your " +						                  "message was ignored.", cs ); +					*conv = 0; +				} +				lines[i] = conv;  			}  			if( ( cmd = irc_parse_line( lines[i] ) ) == NULL ) | 
