Skip to content

IRC protocol bug with colon escaping of last argument #17

@MakeItGreatAgain

Description

@MakeItGreatAgain

HydraIRC is not properly implementing the IRC spec in regards to escaping, which is causing some problems on servers with non-historical but perfectly valid (per the RFC) behavior in message tokenization.

The issue is that properly stripping the colon escaping is not always done on the last argument - while most servers do not escape the final string unless it contains spaces, a string containing no spaces may still be escaped and is valid.

You can verify the broken parsing behavior on testnet.inspircd.org for example, but this is affecting many newer servers. This is causing a lot of breakage, as you can see from the failure to parse the timestamp, and the extra ":"'s that are appearing in modes - this causes the client to desync from the server.

[11:23] *** channel #t6 mode is :+nt
[11:23] *** channel created at Wed Dec 31 17:00:00 1969
[11:23] *** testtrn sets channel #t6 mode +kl aa:bb :999

inspircd/inspircd#1636 has some additional information. This bug recently affected HexChat, AdiIRC,, irssi, and WeeChat, but those clients have all fixed their parsers. Interestingly, ircII was not affected (nor mIRC) but EPIC was (also patched in the upcoming release). The issue link above contains a link to parsing test cases, to help verify that your client is complaint to the specifications.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions