1
0
mirror of https://github.com/unrealircd/unrealircd.git synced 2026-07-06 18:43:12 +02:00
Commit Graph

94 Commits

Author SHA1 Message Date
Bram Matthys eb205e04cc Make types future-proof. Fix ~m case for +M.
BypassMessageRestrictionType -> BypassChannelMessageRestrictionType
BYPASS_MSG_* -> BYPASS_CHANMSG_*
2017-11-19 17:12:28 +01:00
Bram Matthys 1b2b28e6c6 New ban exception ~m:type:mask - allows bypassing of message restrictions.
Valid types are: 'external' (bypass +n), moderated (bypass +m/+M),
'filter' (bypass +G), 'color' (bypass +S/+c) and 'notice' (bypass +T).
Some examples:
* Let LAN users bypass +m: +e ~m:moderated:*!*@192.168.*
* Make GitHub commit bot bypass +n: +e ~m:external:*!*@ipmask
* Allow a services account to use color: +e ~m:color:~a:ColorBot
2017-11-19 16:40:39 +01:00
Bram Matthys 704487e124 Fix numerous crash bugs in server to server code.
In 3.2.x we didn't fix these bugs since servers are trusted and
should send correct commands. In 4.0.x we changed this so we would
fix them when we come across such issues at normal priority (not
consider them security issues). I now took it a step further and
actively checked/looked for these issues and a bunch of them were
found. Almost all are NULL pointer dereferences, with some exceptions.
* S2S: MODE: check conv_param return value (NULL ptr crash)
* S2S: MODE: floodprot: More checks (NULL ptr crash)
* S2S: MODE: OOB write of NULL (write NULL past last element in an array)
* S2S: NICK: old compat fixes (NULL ptr crash)
* S2S: PROTOCTL: Check for double SID=
* S2S: SERVER: require at least 3 parameters (NULL ptr crash)
* S2S: SJOIN: require at least 3 parameters (NULL ptr crash)
* S2S: SJOIN: Fix OOB read (read 1 byte past buffer)
* S2S: TKL: validate set_at and expire_at (NULL ptr crash)
* S2S: TKL: require at least 9 parameters for spamf, not 8 (NULL ptr crash)
* S2S: TKL: ignore invalid spamfilter matching type (remove abort() call)
* S2S: TOPIC: querying for topic is not permitted (NULL ptr crash)
* S2S: UID: require 12 parameters (NULL ptr crash)
* S2S: WATCH: this is not a server command (NULL ptr crash)
* Fix OOB read (1 byte beyond string) for timevals. This was reachable
  from config code, TKL (S2S) and /*LINE (Oper). In practice no crash.
* MODE: make code less confusing (effectively no change)
* TRACE: remove strange output in case of 0 lines of output
* Fix unimportant memory leak on boot (#4713, reported by dg)
* Fix small memory leak upon 'DNS i' (oper only command)
* Always work on a copy in clean_ban_mask(). This fixes a bug that could
  result in a strlcpy(buf, buf, sizeof(buf)). So, overlapping strings,
  which is undefined behavior.
2017-10-29 11:20:52 +01:00
Bram Matthys 77234b2b8d API change for HOOKTYPE_PRE_INVITE and fix #5023:
* API change for HOOKTYPE_PRE_INVITE:
  (aClient *sptr, aClient *target, aChannel *chptr, int *override)
  Modules must now send the error message instead of only returning
  HOOK_DENY. Also check for operoverride and set *override=1.

This so modules can send their own error messages instead of the
default message being sent ("channel is +V" - which is not true).

Reported by Gottem (#5023).
2017-10-23 10:07:33 +02:00
Bram Matthys 1d659296c2 Fix Windows compile problem 2017-10-11 17:33:39 +02:00
Bram Matthys 5c7d89a642 Add support for "CAP extended-join". 2017-10-07 18:33:25 +02:00
Bram Matthys 6dd147b941 Fix 2nd crash bug. Found when searching for related crash issues. 2017-10-01 13:19:12 +02:00
Bram Matthys e6a02003f5 Delayjoin (chanmode +D): When people are de-oped we now part 'hidden' users.
Prevents client desynch.
2017-03-22 08:25:03 +01:00
Bram Matthys cb59538309 Fix chanmode +f issue where unsetting parts were not effective.
For example: '+f [5j#i1,5m#m1,3n]:3' and then '+f [5j#i1,5m]:3'
In that case the '3n' was not removed and still effective, as
could be seen by a '/MODE #chan'. Reported by The_Myth (#4883).
2017-03-06 10:05:30 +01:00
Bram Matthys 2a83066f67 Channel modes were not working. 2017-02-10 22:14:41 +01:00
Bram Matthys 5fcff0dd90 Make +z in set::modes-on-join work (and auto +Z setting). Reported by FwdInTime (#4841). 2017-02-10 14:24:10 +01:00
Bram Matthys bff5e39d67 Fix crash on PART if chanmodes/nocolor module is not loaded or loadmodule
line reordered so nocolor is above m_part. Reported by FwdInTime (#4783).
2016-12-30 16:27:35 +01:00
Bram Matthys 1f1ac6c4ee Less duplicate code: add internal function invisible_user_in_channel()
and remove many calls to HOOKTYPE_VISIBLE_IN_CHANNEL + flag checking.
2016-12-27 20:22:12 +01:00
Bram Matthys 99e087d50c Remove temporary workaround and actually fix stuff in QUIT for delayjoin. Add new function user_can_see_member()... 2016-12-27 20:02:35 +01:00
Adam c5af738273 Fix delayjoin 2016-12-19 17:39:25 -05:00
Bram Matthys 52df9937be Re-indent / conform to existing code style 2016-10-01 10:20:01 +02:00
Bram Matthys 5bc9b63855 Delayjoin (+D): JOIN user before message and not after. 2016-10-01 10:15:04 +02:00
blank4 4153df7f8f use #include "unrealircd.h" in modules/chanmodes 2016-01-13 11:38:21 +00:00
Bram Matthys db70f68f5e Fix module description. Reported by DBoyz. 2015-12-28 15:11:33 +01:00
Bram Matthys b2da8251d8 Fix crash on boot if set::modes-on-join contains channel mode 'f'. Reported by LinkServ (#4461). 2015-11-11 10:23:56 +01:00
Bram Matthys 9dc97a0324 Destroy channel when oper does (SA)MODE #channel -P on a channel with 0 users. Reported by blank (#4442). 2015-10-30 09:36:01 +01:00
Matt Ullman cf34e4dbe8 Fix error message in delayjoin 2015-10-13 11:49:26 -04:00
Bram Matthys 8b45169f82 Get rid of $Id$ in /MODULE (version) output. Just report as "4.0" 2015-10-11 18:18:31 +02:00
Bram Matthys 9ba9d65c7e Add GCC typechecking: we now validate HookAdd... calls, making sure the function (pointer) is as it should. This to avoid crashes and weird behavior in case of a mismatch.
This resulted in 5-10 changes in the existing code where parameters were off.
Hopefully I didn't make too many mistakes when writing the hook prototypes as it was a tedious job.
An (unintentional) benefit of this new system is that you can see the hook prototypes in include/modules.h like:
/* Hook prototypes */
int hooktype_local_quit(aClient *sptr, char *comment);
....
Though, the wiki is likely a better place: https://www.unrealircd.org/docs/Dev:Hook_API
2015-09-21 11:52:00 +02:00
Bram Matthys 2bd5345eec quick fix for flood counters being reset on /REHASH. will use moddata later so we can reload ok again. 2015-07-29 13:13:09 +02:00
Bram Matthys a613a29b02 Ensure people don't run 'make' from the wrong directory. Reported by hyperi0n. 2015-07-26 14:14:39 +02:00
Bram Matthys 2a53499610 Get rid of useless DLLFUNC prefixes (at places where they were not needed) 2015-07-25 20:23:37 +02:00
Bram Matthys 55af9ec0a9 don't +b if banlist is full @ chanmode +f textflood kickban 2015-07-25 18:09:52 +02:00
Bram Matthys 6347b0ca95 Channel mode +O had the join check reversed (rejecting ircops, allowing regular users) 2015-07-22 08:51:41 +02:00
Bram Matthys 88aa91eb94 rather than copying the string result, why not work on the buffer directly.. 2015-07-16 21:01:27 +02:00
Bram Matthys 6ee1773fbe Not sure if this will ever happen as there's a lot of code called beforehand, but ah well.. (memleak). 2015-07-16 16:32:43 +02:00
Bram Matthys b33a461e9a re-indent 2015-07-16 16:28:14 +02:00
Bram Matthys f715ee37cc uninitialized read (won't actually happen as other routines check before this) 2015-07-16 16:27:53 +02:00
Bram Matthys 405ede44c2 ircfree -> safefree. ircstrdrup -> safestrdrup 2015-07-10 10:22:02 +02:00
Travis McArthur 925c3585f1 Update permissions in floodprot 2015-07-09 13:18:21 -07:00
Travis McArthur 2450909c26 Change name of OperEval... 2015-07-09 12:31:45 -07:00
Bram Matthys 60356bd97c typo (l -> L) 2015-07-08 18:06:30 +02:00
Bram Matthys fe14e21175 Update all MOD_TEST/MOD_INIT/MOD_LOAD/MOD_UNLOAD calls to new format 2015-07-08 18:02:19 +02:00
Bram Matthys 0cad63a232 For some reason this file was in CRLF format 2015-07-08 17:20:23 +02:00
Bram Matthys 83268d31bb Convert all HookAddEx to HookAdd with new priority syntax (and same for HookAddVoidEx.. etc...) 2015-07-08 17:19:47 +02:00
Travis McArthur 3059adf668 Refactor regonlyspeak permissions 2015-07-05 12:04:40 -07:00
Travis McArthur 3a87459f91 Refactor permissions in secureonly 2015-07-05 12:04:39 -07:00
Bram Matthys 1b2849d818 remove 'make custommodule' from other makefiles 2015-07-05 20:07:10 +02:00
Bram Matthys f58402365c Moved jointhrottle from channel mode +j to set::anti-flood::join-flood
with a default of 3:90 (3 joins per 90 seconds). There's rarely any need
to configure this on a per-channel basis and this way it's enabled by
default for everyone (unless you decide not to load load the module)
2015-07-05 13:31:56 +02:00
Travis McArthur 5943dd8c09 Remove some IsOper/IsAnOper 2015-06-27 11:25:22 -07:00
Bram Matthys aa7553abe2 new extban ~O:operclassname. Enables you to make a netadmin only channel like +iI ~O:netadmin*
&remove old adminonly (+A) channel mode a bit more
2015-06-26 16:08:50 +02:00
Bram Matthys d01ba1b3b6 remove adminonly (+A) channel mode. as there is no admin anymore. 2015-06-26 15:51:02 +02:00
Bram Matthys e3f70594f2 Fix compile problem / upgrade op_can_override() 2015-06-26 09:17:24 +02:00
Bram Matthys 80362e0d9c Fix compile warnings (and possibly a crash in dcc deny code introduced a week or so ago) 2015-06-25 22:38:22 +02:00
Travis McArthur 527a00dafa More ACL work, rip out *admin support (mostly...)
Not totally tested - I validated it built, I validated ACL validation worked, I validated that most of the ripped out functionality seemed to be absent, eg: we still set the modes (backwards compat w/ services?) but we don't actually check them anywhere, or add them to your whois.
2015-06-24 19:17:40 -04:00