1
0
mirror of https://github.com/unrealircd/unrealircd.git synced 2026-06-28 10:56:38 +02:00
Commit Graph

37 Commits

Author SHA1 Message Date
Bram Matthys 0d2d4d5bca Rename match() and _match() to match_simple() -AND- invert the return value
of match_simple() and match_esc(). So, developers, be aware, this is how
you should use the function in a correct way:
if (match_simple("*fun*", str))
    printf("It was fun\n");

Rationale:
I've always been annoyed by the inversed logic, even though it was similar
to strcmp. So I've reverted it.
I could have chosen to maintain match() rather than this match_simple()
name, but this way I force (3rd party module) devs to update their function,
while otherwise everything would mysteriously fail due to the inverted logic.
2019-08-17 09:20:49 +02:00
Bram Matthys e1fcc3a667 Rename match() and _match() both to match_simple()
and get rid of the "bahamut optimized version".
Stage 1 of 2.
2019-08-17 09:15:34 +02:00
Bram Matthys c01c9248f5 Revert e428c77c47 (only to try again later) 2019-08-17 09:05:09 +02:00
Bram Matthys e428c77c47 match() -> match_nuh() and _match -> match_simple() 2019-08-17 08:56:18 +02:00
Bram Matthys 1108b58951 Remove old TRE regex engine. Hasn't been maintained since 2010
and has various outstanding crash and 100% CPU issues.
We have been encouraging the PCRE2 engine since the start of
UnrealIRCd 4 already.
TRE is being phased out of U4 by the end of the year, so we can
safely remove it in U5 already.
2019-05-25 10:42:46 +02:00
Bram Matthys 5c30d1af6d * Badword blocks now use PCRE2 if using regex at all (rare,
usually the fast badwords system is used instead)
* Code deduplication in src/modules/{chanmodes,usermodes}/censor.c
  to src/match.c -- which may be moved later again to efuncs.
* Add --without-tre:
  This means USE_TRE will be enabled by default right now
  but if using --without-tre it will be undef'ed. This so we
  can prepare for the TRE phase-out in 2020.
* Remove include/badwords.h, put contents in include/struct.h
2019-04-05 18:19:23 +02: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 ec9db8fd5f Move match_user() to module (efunc in m_tkl) 2017-03-18 15:00:34 +01:00
Bram Matthys 03b74f6163 Include string.h / silence warnings. 2016-12-30 15:30:59 +01:00
Bram Matthys 73ec3e3305 Fix IPv6 ban bug + fix a crash bug 2016-07-28 14:15:09 +02:00
Bram Matthys 67c998dc9f Adding a GLINE or KLINE on usermask@ did not have any effect. Reported by soretna (#4680).
Tizen, DBoyz and Valdebrick helped tracing the issue.
Removed MATCH_USE_IDENT since it had no useful purpose.. for all cases one has to check identd first and then non-identd anyway.
2016-05-22 15:44:28 +02:00
Bram Matthys 58b864edd5 Re-do CIDR and at the same time all the user matching stuff. Introducing match_user(mask, acptr, options): this should be used everywhere rather than the many DIY routines everywhere that create a nick!user@host and then run a match() on it.
The match_user() function is not been fully tested yet, at this point I'm happy we can compile again.
2015-07-28 13:26:03 +02:00
Bram Matthys 3cfee0f384 fix a number of /REHASH memleaks 2015-07-10 10:40:07 +02:00
Bram Matthys e1b7c34c96 Fix various warnings, including one reported by Adam: possible crash in aliases (introduced 1-2wks ago) 2015-06-07 22:07:00 +02:00
Bram Matthys 0eb9c9a36b PCRE2: enable JIT, free when no longer needed, fix & improve error message when an invalid regex is specified 2015-06-01 10:09:25 +02:00
Bram Matthys ecd06aa530 Now actually use PCRE2. 2015-06-01 09:51:33 +02:00
Travis McArthur 3b98eac4a9 Remove unnecessary gotos 2015-05-31 21:46:32 -04:00
Bram Matthys 58bd3cf60b Preparations for #4356 (experimental / on-going):
* add general matching framework (aMatch type, unreal_match_xxx functions)
* change spamfilter { } block syntax
* add support for simple wildcard matching (non-regex, just '?' and '*')
This is the initial commit so the new lib is not in yet, 'regex' is not
functional (but 'posix' and 'simple' are working), linking has not been
fully tested and no warnings are printed yet. IOTW: work in progress!
2015-05-30 21:11:11 +02:00
Bram Matthys fa9cf506e7 - The '?' wildcard was completely broken in 3.2.4, reported by tabrisnet (#0002797). 2006-02-05 17:20:36 +00:00
Bram Matthys dc19350c70 - Redid glob matching. Escaping is now ripped out for normal bans (as it should be), this
means no longer weird issues with +b *\* etc not banning nicks with \ in it.
  ExtBan ~c/~r get special treatment and will use our match_esc [match with escaping]
  routine, that way you can ban channels such as "#f*ck" via "+b ~c:#f\*ck".
  Fix triggered by bugreport of vonitsanet (#0002782).
2006-01-30 20:14:39 +00:00
Bram Matthys 6e70facb1e - Fixed(?) bug due to match() rewrite: we now use our old rules with escaping again, due to
the switchover we were accidently using different ones which caused funny kill messages
  like "You were killed by a.b.c (a!a.b.c (SOMENICK[N\A](?) <- d.e.f))." This also broke
  some bans in pre2/rc1. Bug reported by HERZ (#0002772).
2006-01-26 14:02:21 +00:00
Bram Matthys 5f272b56e7 - Switched over to an older match() routine based on hybrid, this one is a bit less optimized
but is actually understandable and has less bugs. This fixes +b ~c:#c\*t not properly
  matching #c*t, reported by Jason (#0002752). Initial results look good, but this needs
  some good testing ;).
2006-01-23 22:05:50 +00:00
Bram Matthys 8a9bae11fa - Made '?*' work correctly in wildcard matches, reported by Bugz (#2585). 2005-07-05 20:26:18 +00:00
Bram Matthys 8650c97cd3 - No longer cutoff nick upon illegal character -- just reject the whole nick. The nick is
still cutoff if the nick is too long. Basically this is the same way as Hybrid does it
  so it should work ok :).
- Added nick character system. This allows you to choose which (additional) characters
  to allow in nicks via set::allowed-nickchars. See unreal32docs.html -> section 3.16
  for a list of available languages and more info on how to use it.
  Current list: dutch, french, german, italian, spanish, euro-west, chinese-trad,
  chinese-simp, chinese-ja, chinese.
  If you wonder why your language is not yet included or why a certain mistake is present,
  then please understand that we are most likely not experienced (at all) in your language.
  If you are a native of your language (or know the language well), and your language
  is not included yet or you have some corrections, then contact syzop@vulnscan.org or
  report it as a bug on http://bugs.unrealircd.org/
2005-02-19 20:47:41 +00:00
codemastr 2b3fda5a10 Documented the default behavior of snomasks when /mode nick +s is used and added 'const' to the functions in match.c 2004-11-05 21:26:38 +00:00
Bram Matthys 426fbd9663 - Added "extended bans". An idea from SorceryNet ircd.
These bans look like ~<type>:<stuff>. Currently the following bans are available:
  ~q: quiet bans (ex: ~q:*!*@blah.blah.com). People matching these bans can join
      but are unable to speak, unless they have +v or higher.
  ~c: channel bans (ex: ~c:#idiots). People in #idiots are unable to join the channel.
  ~r: gecos (realname) bans (ex: ~r:*Stupid_bot_script*). If the realname of a user
      matches this then (s)he is unable to join.
      NOTE: an underscore ('_') matches both a space (' ') and an underscore ('_'),
            so this ban would match 'Stupid bot script v1.4'.

  These bantypes can also be used in the channel exception list (+e).
  +e ~r:*w00t* makes anyone with 'w00t' in their realname able to join,
  and +e ~c:#admin makes anyone in #admin able to join, etc..

  This system allows modules to add extended bantypes too.

  This feature requires some additional testing, also the module interface will
  probably be changed in the next few weeks, and perhaps more extended bans will
  be added before next release.. we'll see...
2003-12-19 23:39:30 +00:00
Bram Matthys 45e2b69a07 - Fixed a match() bug
In case of a mask like '*\' it was trying to read out of bounds data.
2003-03-09 03:07:59 +00:00
codemastr 3095782cfd Various fixes 2003-01-14 21:25:04 +00:00
codemastr fed61efcdb Misc. fixes 2003-01-11 19:33:42 +00:00
griever 3debe8680a -Wall -Wno-implicit 2002-02-16 21:31:51 +00:00
codemastr bd6729ad93 More -Wall cleanups 2002-02-03 17:15:37 +00:00
codemastr 8be7cbab05 Made all functiosn use new-style parameter lists 2002-01-28 00:38:02 +00:00
codemastr 63a3ef308d Made match() a little bit faster 2001-06-06 20:05:16 +00:00
codemastr b1306a3040 Updated match() to have some optimizations from bahamut 2001-01-19 21:10:41 +00:00
stskeeps d33f4a8120 Index: Changes
===================================================================
RCS file: /home/cmunk/ircsystems/cvsroot/unreal/Changes,v
retrieving revision 1.1.1.1.2.1.2.1.2.179
diff -u -r1.1.1.1.2.1.2.1.2.179 Changes
--- Changes	2000/08/07 16:16:14	1.1.1.1.2.1.2.1.2.179
+++ Changes	2000/08/07 16:56:17
@@ -530,3 +530,4 @@
   Config, and all the things we want them to read/do to compile the IRCd
 - Updated PREFIX Client Protoctl
 - Added ^MrMike^'s command list, this one will be updated
+- Removed ID_CVS, hopefully fixing some bastard stuff
2000-08-07 16:56:31 +00:00
cmunk 0d30ef8540 Import of Unreal3.1-beta3 2000-05-28 08:55:44 +00:00
cmunk f110f47e65 Import of Unreal3.0 (STABLE) 2000-02-28 22:45:44 +00:00