Changeset 94d52d64 for irc.c


Ignore:
Timestamp:
2007-12-02T11:00:15Z (12 years ago)
Author:
Wilmer van der Gaast <wilmer@…>
Branches:
master
Children:
fc5d06d
Parents:
9ff5737
Message:

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • irc.c

    r9ff5737 r94d52d64  
    320320                        }
    321321                       
    322                         if( ( cs = set_getstr( &irc->set, "charset" ) ) && ( g_strcasecmp( cs, "utf-8" ) != 0 ) )
     322                        if( ( cs = set_getstr( &irc->set, "charset" ) ) )
    323323                        {
    324324                                conv[IRC_MAX_LINE] = 0;
    325                                 if( do_iconv( cs, "UTF-8", lines[i], conv, 0, IRC_MAX_LINE - 2 ) != -1 )
    326                                         lines[i] = conv;
     325                                if( do_iconv( cs, "UTF-8", lines[i], conv, 0, IRC_MAX_LINE - 2 ) == -1 )
     326                                {
     327                                        if( irc->status & USTATUS_LOGGED_IN )
     328                                                irc_usermsg( irc, "ERROR: Charset mismatch detected. The charset "
     329                                                                  "setting is currently set to %s, so please make "
     330                                                                  "sure your IRC client will send and accept text in "
     331                                                                  "that charset, or tell BitlBee which charset to "
     332                                                                  "expect by changing the charset setting. See "
     333                                                                  "`help set charset' for more information. Your "
     334                                                                  "message was ignored.", cs );
     335                                        *conv = 0;
     336                                }
     337                                lines[i] = conv;
    327338                        }
    328339                       
Note: See TracChangeset for help on using the changeset viewer.