irssi-import / bugs.irssi.org

bugs.irssi.org archive
https://github.com/irssi/irssi/issues
0 stars 0 forks source link

irssi coredumps on a channel configuration line (perhaps because of conversion settings) #180

Open irssibot opened 19 years ago

irssibot commented 19 years ago

With the following configuration file, I get a segfault when starting irssi. When I remove the line 130: { name = #nihongo; chatnet = "freenode"; autojoin = "Yes"; }, It works again.

Here's the configuration:

servers = ( { address = "irc.gnome.org"; chatnet = "gnome"; autoconnect = "No"; }, { adress = "irc.oftc.net"; chatnet = "oftc"; autoconnect = "Yes"; nick = "poemi"; autosemdcmd = "ns identify wait_init_idle"; }, { address = "irc.euirc.net"; chatnet = "euIRC"; port = "6667"; autoconnect = "Yes"; }, { address = "irc.criten.net"; chatnet = "criten"; autoconnect = "No"; }, { address = "irc.freenode.net"; chatnet = "freenode"; port = "6667"; autoconnect = "Yes"; password = "password"; }, { address = "irc.quakenet.org"; chatnet = "quakenet"; port = "6667"; autoconnect = "Yes"; }, { address = "msn.irssi.org"; chatnet = "MSN"; port = "6667"; } );

chatnets = { oftc = { type = "IRC"; }; msn = { type = "IRC"; }; quakenet = { type = "IRC"; autosendcmd = "nick daniel-kun; msg Q@CServe.quakenet.org AUTH daniel-kun 6ZJ2LrcH"; }; gnome = { type = "IRC"; }; IRCnet = { type = "IRC"; max_kicks = "4"; max_modes = "3"; max_msgs = "5"; max_whois = "4"; max_query_chans = "5"; }; EFNet = { type = "IRC"; max_kicks = "4"; max_modes = "4"; max_msgs = "3"; max_whois = "1"; }; Undernet = { type = "IRC"; max_kicks = "4"; max_modes = "3"; max_msgs = "3"; max_whois = "30"; }; DALnet = { type = "IRC"; max_kicks = "4"; max_modes = "6"; max_msgs = "3"; max_whois = "30"; }; criten = { type = "IRC"; }; freenode = { autosendcmd = "ns identify wait_init_idle;msg IdleBot LOGIN daniel eiC4izee"; type = "IRC"; max_kicks = "4"; max_modes = "4"; max_msgs = "1"; max_whois = "1"; }; GIMPNet = { type = "IRC"; max_kicks = "4"; max_modes = "4"; max_msgs = "3"; max_whois = "1"; }; PTlink = { type = "IRC"; max_kicks = "1"; max_modes = "6"; max_msgs = "30"; max_whois = "1"; }; SorceryNet = { type = "IRC"; max_kicks = "30"; max_modes = "6"; max_msgs = "30"; max_whois = "30"; }; Hashmark = { type = "IRC"; max_kicks = "4"; max_modes = "3"; max_msgs = "3"; max_whois = "30"; }; PTnet = { type = "IRC"; max_kicks = "30"; max_modes = "13"; max_msgs = "10"; max_whois = "30"; }; AzzurraNET = { type = "IRC"; max_kicks = "4"; max_modes = "6"; max_msgs = "3"; }; SILC = { type = "SILC"; }; euIRC = { type = "IRC"; autosendcmd = "ns identify wait_init_idle"; }; clanserv = { type = "IRC"; }; };

channels = ( { name = "#brot&spiele"; chatnet = "euIRC"; autojoin = "Yes"; password = "password"; }, { name = #nihongo; chatnet = "freenode"; autojoin = "Yes"; }, { name = "#nihon-go"; chatnet = "quakenet"; autojoin = "Yes"; }, { name = "#idlerpg"; chatnet = "freenode"; autojoin = "Yes"; }, { name = "#linuxhelp"; chatnet = "freenode"; autojoin = "Yes"; }, { name = "#c++"; chatnet = "gnome"; autojoin = "Yes"; }, { name = "#linux.de"; chatnet = "oftc"; autojoin = "Yes"; }, { name = "#silc"; chatnet = "silc"; autojoin = "No"; },

{ name = "#cpp"; chatnet = "euIRC"; autojoin = "Yes"; },

  # { name = "#anime"; chatnet = "euIRC"; autojoin = "Yes"; },
  # { name = "#linux"; chatnet = "euIRC"; autojoin = "Yes"; },
  # { name = "#euirc"; chatnet = "euIRC"; autojoin = "Yes"; },
  # { name = "#gentoo.de"; chatnet = "freenode"; autojoin = "Yes"; },
  { name = "#freenode"; chatnet = "freenode"; autojoin = "Yes"; },
  { name = "#freenode.de"; chatnet = "freenode"; autojoin = "Yes"; },
  { name = "#vim"; chatnet = "freenode"; autojoin = "Yes"; },
  { name = "#c++"; chatnet = "freenode"; autojoin = "Yes"; },
  { name = "#nasm"; chatnet = "freenode"; autojoin = "Yes"; },
  #  { name = "#opengl"; chatnet = "quakenet"; autojoin = "Yes"; },
  #  { name = "#c++.de"; chatnet = "quakenet"; autojoin = "Yes"; },
  #  { name = "#quakenet"; chatnet = "quakenet"; autojoin = "Yes"; },
  #  { name = "#gamedev"; chatnet = "quakenet"; autojoin = "Yes"; },
  { name = "#c++.de"; chatnet = "quakenet"; autojoin = "Yes"; }

);

aliases = { MICQ = "window new hidden;window name micq;exec -name micq -nosh -interactive -window micq -c $-"; J = "join"; WJOIN = "join -window"; WQUERY = "query -window"; LEAVE = "part"; BYE = "quit"; EXIT = "quit"; SIGNOFF = "quit"; DESCRIBE = "action"; DATE = "time"; HOST = "userhost"; LAST = "lastlog"; SAY = "msg "; WI = "whois"; WII = "whois $0 $0"; WW = "whowas"; W = "who"; N = "names"; M = "msg"; T = "topic"; C = "clear"; CL = "clear"; K = "kick"; KB = "kickban"; KN = "knockout"; BANS = "ban"; B = "ban"; MUB = "unban "; UB = "unban"; IG = "ignore"; UNIG = "unignore"; SB = "scrollback"; UMODE = "mode $N"; WC = "window close"; WN = "window new hide"; SV = "say Irssi $J ($V) - http://irssi.org/"; GOTO = "sb goto"; CHAT = "dcc chat"; RUN = "SCRIPT LOAD"; UPTIME = "eval exec - expr date +%s - \$F | awk '{print "Irssi uptime: "int(\\$1/3600/24)"d "int(\\$1/3600%24)"h "int(\\$1/60%60)"m "int(\\$1%60)"s" }'"; CALC = "exec - if which bc &>/dev/null\; then echo -e 'iscale=10

irssibot commented 19 years ago

config_orig

I prepared a file without the passwords, but then posted the wrong one (of course). Here we go again

servers = (
  { address = "irc.gnome.org"; chatnet = "gnome"; autoconnect = "No"; },
  {
    adress = "irc.oftc.net";
    chatnet = "oftc";
    autoconnect = "Yes";
    nick = "poemi";
  },
  {
    address = "irc.euirc.net";
    chatnet = "euIRC";
    port = "6667";
    autoconnect = "Yes";
  },
  { 
    address = "irc.criten.net";
    chatnet = "criten";
    autoconnect = "No";
  },
  {
    address = "irc.freenode.net";
    chatnet = "freenode";
    port = "6667";
    autoconnect = "Yes";
  },
  {
    address = "irc.quakenet.org";
    chatnet = "quakenet";
    port = "6667";
    autoconnect = "Yes";
  },
  { address = "msn.irssi.org"; chatnet = "MSN"; port = "6667"; }
);

chatnets = {
  oftc = { type = "IRC"; };
  msn = { type = "IRC"; };
  quakenet = {
    type = "IRC";
  };
  gnome = { type = "IRC"; };
  IRCnet = {
    type = "IRC";
    max_kicks = "4";
    max_modes = "3";
    max_msgs = "5";
    max_whois = "4";
    max_query_chans = "5";
  };
  EFNet = {
    type = "IRC";
    max_kicks = "4";
    max_modes = "4";
    max_msgs = "3";
    max_whois = "1";
  };
  Undernet = {
    type = "IRC";
    max_kicks = "4";
    max_modes = "3";
    max_msgs = "3";
    max_whois = "30";
  };
  DALnet = {
    type = "IRC";
    max_kicks = "4";
    max_modes = "6";
    max_msgs = "3";
    max_whois = "30";
  };
  criten = { type = "IRC"; };
  freenode = {
    type = "IRC";
    max_kicks = "4";
    max_modes = "4";
    max_msgs = "1";
    max_whois = "1";
  };
  GIMPNet = {
    type = "IRC";
    max_kicks = "4";
    max_modes = "4";
    max_msgs = "3";
    max_whois = "1";
  };
  PTlink = {
    type = "IRC";
    max_kicks = "1";
    max_modes = "6";
    max_msgs = "30";
    max_whois = "1";
  };
  SorceryNet = {
    type = "IRC";
    max_kicks = "30";
    max_modes = "6";
    max_msgs = "30";
    max_whois = "30";
  };
  Hashmark = {
    type = "IRC";
    max_kicks = "4";
    max_modes = "3";
    max_msgs = "3";
    max_whois = "30";
  };
  PTnet = {
    type = "IRC";
    max_kicks = "30";
    max_modes = "13";
    max_msgs = "10";
    max_whois = "30";
  };
  AzzurraNET = {
    type = "IRC";
    max_kicks = "4";
    max_modes = "6";
    max_msgs = "3";
  };
  SILC = { type = "SILC"; };
  clanserv = { type = "IRC"; };
};

channels = (
  {
    name = "#brot&spiele";
    chatnet = "euIRC";
    autojoin = "Yes";
  },
  { name = #nihongo; chatnet = "freenode"; autojoin = "Yes"; },
  { name = "#nihon-go"; chatnet = "quakenet"; autojoin = "Yes"; },
  { name = "#idlerpg"; chatnet = "freenode"; autojoin = "Yes"; },
  { name = "#linuxhelp"; chatnet = "freenode"; autojoin = "Yes"; },
  { name = "#c++"; chatnet = "gnome"; autojoin = "Yes"; },
  { name = "#linux.de"; chatnet = "oftc"; autojoin = "Yes"; },
  { name = "#silc"; chatnet = "silc"; autojoin = "No"; },
  # { name = "#cpp"; chatnet = "euIRC"; autojoin = "Yes"; },
  # { name = "#anime"; chatnet = "euIRC"; autojoin = "Yes"; },
  # { name = "#linux"; chatnet = "euIRC"; autojoin = "Yes"; },
  # { name = "#euirc"; chatnet = "euIRC"; autojoin = "Yes"; },
  # { name = "#gentoo.de"; chatnet = "freenode"; autojoin = "Yes"; },
  { name = "#freenode"; chatnet = "freenode"; autojoin = "Yes"; },
  { name = "#freenode.de"; chatnet = "freenode"; autojoin = "Yes"; },
  { name = "#vim"; chatnet = "freenode"; autojoin = "Yes"; },
  { name = "#c++"; chatnet = "freenode"; autojoin = "Yes"; },
  { name = "#nasm"; chatnet = "freenode"; autojoin = "Yes"; },
  #  { name = "#opengl"; chatnet = "quakenet"; autojoin = "Yes"; },
  #  { name = "#c++.de"; chatnet = "quakenet"; autojoin = "Yes"; },
  #  { name = "#quakenet"; chatnet = "quakenet"; autojoin = "Yes"; },
  #  { name = "#gamedev"; chatnet = "quakenet"; autojoin = "Yes"; },
  { name = "#c++.de"; chatnet = "quakenet"; autojoin = "Yes"; }
);

aliases = {
  MICQ = "window new hidden;window name micq;exec -name micq -nosh -interactive -window micq -c $-";
  J = "join";
  WJOIN = "join -window";
  WQUERY = "query -window";
  LEAVE = "part";
  BYE = "quit";
  EXIT = "quit";
  SIGNOFF = "quit";
  DESCRIBE = "action";
  DATE = "time";
  HOST = "userhost";
  LAST = "lastlog";
  SAY = "msg *";
  WI = "whois";
  WII = "whois $0 $0";
  WW = "whowas";
  W = "who";
  N = "names";
  M = "msg";
  T = "topic";
  C = "clear";
  CL = "clear";
  K = "kick";
  KB = "kickban";
  KN = "knockout";
  BANS = "ban";
  B = "ban";
  MUB = "unban *";
  UB = "unban";
  IG = "ignore";
  UNIG = "unignore";
  SB = "scrollback";
  UMODE = "mode $N";
  WC = "window close";
  WN = "window new hide";
  SV = "say Irssi $J ($V) - http://irssi.org/";
  GOTO = "sb goto";
  CHAT = "dcc chat";
  RUN = "SCRIPT LOAD";
  UPTIME = "eval exec - expr `date +%s` - \\$F | awk '{print \"Irssi uptime: \"int(\\\\\\$1/3600/24)\"d \"int(\\\\\\$1/3600%24)\"h \"int(\\\\\\$1/60%60)\"m \"int(\\\\\\$1%60)\"s\" }'";
  CALC = "exec - if which bc &>/dev/null\\; then echo -e 'iscale=10\012oscale=10\012$*' | bc | awk '{print \"$*=\"$$1}'\\; else echo bc was not found\\; fi";
  SBAR = "STATUSBAR";
  INVITELIST = "mode $C +I";
  Q = "QUERY";
  ls = "names";
  wech = "window close";
  cs = "quote cs";
  ns = "quote ns";
  ms = "quote ms";
  ":)" = "msg * :)";
  cowsay = "exec -o cowsay";
  arf = "msg * KOBAYASHI: \"ARF!\"";
};

statusbar = {
  # formats:
  # when using {templates}, the template is shown only if it's argument isn't
  # empty unless no argument is given. for example {sb} is printed always,
  # but {sb $T} is printed only if $T isn't empty.

  items = {
    # start/end text in statusbars
    barstart = "{sbstart}";
    barend = "{sbend}";

    topicbarstart = "{topicsbstart}";
    topicbarend = "{topicsbend}";

    # treated "normally", you could change the time/user name to whatever
    time = "{sb $Z}";
    user = "{sb $cumode$N{sbmode $usermode}{sbaway $A}}";

    # treated specially .. window is printed with non-empty windows,
    # window_empty is printed with empty windows
    window = "{sb $winref:$itemname{sbmode $M}}";
    window_empty = "{sb $winref{sbservertag $tag}}";
    prompt = "{prompt $[.15]itemname}";
    prompt_empty = "{prompt $winname}";
    topic = " $topic";
    topic_empty = " Irssi v$J - http://irssi.org/help/";

    # all of these treated specially, they're only displayed when needed
    lag = "{sb Lag: $0-}";
    act = "{sb Act: $0-}";
    more = "-- less --";
  };

  # there's two type of statusbars. root statusbars are either at the top
  # of the screen or at the bottom of the screen. window statusbars are at
  # the top/bottom of each split window in screen.
  default = {
    # the "default statusbar" to be displayed at the bottom of the window.
    # contains all the normal items.
    window = {
      disabled = "no";

      # window, root
      type = "window";
      # top, bottom
      placement = "bottom";
      # number
      position = "1";
      # active, inactive, always
      visible = "active";

      # list of items in statusbar in the display order
      items = {
        barstart = { priority = "100"; };
        time = { };
        user = { };
        window = { };
        window_empty = { };
        lag = { priority = "-1"; };
        act = { priority = "10"; };
        more = { priority = "-1"; alignment = "right"; };
        barend = { priority = "100"; alignment = "right"; };
      };
    };

    # statusbar to use in inactive split windows
    window_inact = {
      type = "window";
      placement = "bottom";
      position = "1";
      visible = "inactive";
      items = {
        barstart = { priority = "100"; };
        window = { };
        window_empty = { };
        more = { priority = "-1"; alignment = "right"; };
        barend = { priority = "100"; alignment = "right"; };
      };
    };

    # we treat input line as yet another statusbar :) It's possible to
    # add other items before or after the input line item.
    prompt = {
      type = "root";
      placement = "bottom";
      # we want to be at the bottom always
      position = "100";
      visible = "always";
      items = {
        prompt = { priority = "-1"; };
        prompt_empty = { priority = "-1"; };
        # treated specially, this is the real input line.
        input = { priority = "10"; };
      };
    };

    # topicbar
    topic = {
      type = "root";
      placement = "top";
      position = "1";
      visible = "always";
      items = {
        topicbarstart = { priority = "100"; };
        topic = { };
        topic_empty = { };
        topicbarend = { priority = "100"; alignment = "right"; };
      };
    };
  };
};
settings = {
  core = {
    real_name = "Daniel Albuschat";
    user_name = "daniel";
    nick = "daniel";
    cmdchars = ":";
    quit_message = "I hope I'll find my SOMEONE JUST FOR ME";
    server_reconnect_time = "90";
    log_timestamp = "%D-%H:%M";
    use_proxy = "no";
  };
  "fe-text" = {
    colors = "yes";
    indent = "20";
    indent_always = "yes";
    term_charset = "utf-8";
  };
  "fe-common/core" = {
    autocreate_own_query = "yes";
    autocreate_query_level = "MSGS";
    completion_nicks_lowercase = "no";
    autocreate_windows = "on";
    autolog = "yes";
    completion_auto = "yes";
    hide_colors = "yes";
  };
  "irc/dcc" = {
    dcc_download_path = "~/incoming";
    dcc_autoresume = "yes";
    dcc_autoget = "yes";
    dcc_autorename = "no";
    dcc_send_replace_space_with_underscore = "yes";
  };
  "perl/core/scripts" = {
    dau_random_options = "--moron";
    badword_channels = "#c++.de";
    badword_words = "#programmieren";
    badword_reason = "screw you bastards";
    dau_remote_permissions = "100000";
    dau_remote_channellist = "#c++.de/quakenet,#gentoo.de/freenode,#brot&spiele/euirc,#linux/euirc";
  };
  "irc/core" = {
    join_auto_chans_on_invite = "no";
    lag_max_before_disconnect = "100";
  };
};
keyboard = (
  { key = "meta--"; id = "left_window"; data = ""; },
  { key = "meta-="; id = "right_window"; data = ""; },
  { key = "meta-h"; id = "previous_window"; data = ""; },
  { key = "meta-l"; id = "next_window"; data = ""; },
  { key = "meta-j"; id = "scroll_forward"; data = ""; },
  { key = "meta-k"; id = "scroll_backward"; data = ""; }
);
ignores = ( { mask = "menace*"; level = "ALL"; } );
logs = { };
windows = {
  12 = {
    items = (
      {
        type = "CHANNEL";
        chat_type = "IRC";
        name = "#nihon-go";
        tag = "quakenet";
      }
    );
  };
  9 = {
    items = (
      {
        type = "CHANNEL";
        chat_type = "IRC";
        name = "#c++.de";
        tag = "quakenet";
      }
    );
  };
  11 = {
    items = (
      {
        type = "CHANNEL";
        chat_type = "IRC";
        name = "#linuxhelp";
        tag = "freenode";
      }
    );
  };
  1 = { immortal = "yes"; name = "(status)"; level = "ALL"; };
  10 = {
    items = (
      {
        type = "CHANNEL";
        chat_type = "IRC";
        name = "#idlerpg";
        tag = "freenode";
      }
    );
  };
  2 = {
    items = (
      {
        type = "CHANNEL";
        chat_type = "IRC";
        name = "#brot&spiele";
        tag = "euIRC";
      }
    );
  };
  3 = {
    items = (
      {
        type = "CHANNEL";
        chat_type = "IRC";
        name = "#anime";
        tag = "euIRC";
      }
    );
  };
  8 = {
    items = (
      {
        type = "CHANNEL";
        chat_type = "IRC";
        name = "#nasm";
        tag = "freenode";
      }
    );
  };
  6 = {
    items = (
      {
        type = "CHANNEL";
        chat_type = "IRC";
        name = "#vim";
        tag = "freenode";
      }
    );
  };
  5 = {
    items = (
      {
        type = "CHANNEL";
        chat_type = "IRC";
        name = "#freenode.de";
        tag = "freenode";
      }
    );
  };
  7 = {
    items = (
      {
        type = "CHANNEL";
        chat_type = "IRC";
        name = "#c++";
        tag = "freenode";
      }
    );
  };
  4 = {
    items = (
      {
        type = "CHANNEL";
        chat_type = "IRC";
        name = "#freenode";
        tag = "freenode";
      }
    );
  };
};
mainwindows = { 12 = { first_line = "1"; lines = "56"; }; };
conversions = { "#nihongo" = "iso-2022-jp"; mazu = "euc-jp"; };
irssibot commented 19 years ago

Please attach your config file here without the passwords

irssibot commented 19 years ago

Hmm, there is some bug in Flyspray by editing this bug(removing passwords) the information was cut-off in the middle of the CALC alias :( Sorry!

irssibot commented 19 years ago

Of course, I've changed the passwords already, but it'd still be nice if anyone could manage to remove them. ;-) Thanks, and sorry for the trouble.

irssibot commented 17 years ago

The problem happens when there is an unquoted token that includes '#', f.e. name = #foo, which is recognized by the parser as the start of a comment; this syntax is invalid but the parser is not robust enough to handle it gracefully.