View Issue Details

IDProjectCategoryView StatusLast Update
0006602unrealircdpublic2026-01-23 08:46
Reporterprogval Assigned Tosyzop  
PrioritylowSeverityminorReproducibilityalways
Status resolvedResolutionfixed 
Product Version6.2.1 
Fixed in Version6.2.3 
Summary0006602: Invalid channel user limits are normalized to 1
DescriptionWhen sending "MODE #chan l :abc" or "MODE #chan l :-1", Unreal converts it to "MODE #chan l :1": https://github.com/unrealircd/unrealircd/blob/1c461db46de2b0d7d0c5b0b1f4e71439170f87e0/src/modules/chanmodes/limit.c#L191-L199

This is inconsistent with other IRCds: Charybdis/Solanum, Ergo, Hybrid/Plexus4, irc2, ircu2/Nefarious ignore the MODE command entirely, while InspIRCd and ngIRCd send ERR_INVALIDMODEPARAM then ignore it too.
3rd party modules

Activities

syzop

2026-01-10 12:13

administrator   ~0023588

I've edited the report slightly to add " l " in it.

Yeah... I think you are right and we should just ignore the +l set attempt if atoi() or whatever we use is <= 0

syzop

2026-01-23 08:46

administrator   ~0023600

Maybe not terrible important but indeed a good point, I agree. Thanks for bringing it up.

Fixed in https://github.com/unrealircd/unrealircd/commit/d413959e576db66e6d9cdc73bbc7f7bd4dc7bf09
commit d413959e576db66e6d9cdc73bbc7f7bd4dc7bf09 (HEAD -> unreal60_dev, origin/unreal60_dev, origin/HEAD)
Author: Bram Matthys <[email protected]>
Date: Fri Jan 23 08:42:41 2026 +0100

    Chanmode +l: when coming from an IRC client, reject <=0 instead of transforming.
    Reject it with an ERR_INVALIDMODEPARAM, just like we do for +k.
    
    I think the higher number transforming is fine, but this <=0 transformation
    is odd as it almost never is what the user actually intended.
    
    In S2S traffic we still transform, as rejecting there is more problematic,
    (causing a desync) and transforming it there is not a major issue, anyway.
    
    Reported by ProgVal in https://bugs.unrealircd.org/view.php?id=6602

Issue History

Date Modified Username Field Change
2026-01-10 12:08 progval New Issue
2026-01-10 12:11 syzop Description Updated
2026-01-10 12:11 syzop Description Updated
2026-01-10 12:13 syzop Assigned To => syzop
2026-01-10 12:13 syzop Status new => acknowledged
2026-01-10 12:13 syzop Note Added: 0023588
2026-01-23 08:46 syzop Status acknowledged => resolved
2026-01-23 08:46 syzop Resolution open => fixed
2026-01-23 08:46 syzop Fixed in Version => 6.2.3
2026-01-23 08:46 syzop Note Added: 0023600