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 ) |