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.
About UnrealIRCd
UnrealIRCd is an Open Source IRC Server, serving thousands of networks since 1999. It runs on Linux, OS X and Windows and is currently the most widely deployed IRCd with a market share of over 50%. UnrealIRCd is a highly advanced IRCd with a strong focus on modularity, an advanced and highly configurable configuration file. Key features include SSL, cloaking, its advanced anti-flood and anti-spam systems, swear filtering and module support. We are also particularly proud on our extensive online documentation.
How to get started
Please consult our excellent online documentation at https://www.unrealircd.org/docs/ when setting up the IRCd!
Step 1: Installation
Windows
Simply download the UnrealIRCd Windows version from www.unrealircd.org
Alternatively you can compile UnrealIRCd for Windows yourself. However this is not straightforward and thus not recommended.
*BSD/Linux/OS X
First you must compile the IRCd:
- Run
./Config - Run
make - Run
make install - Now change to the directory where you installed UnrealIRCd, e.g.
cd /home/xxxx/unrealircd
Step 2: Configuration
Configuration files are stored in the conf/ folder by default (eg: /home/xxxx/unrealircd/conf)
Create a configuration file
If you are new, then you need to create your own configuration file: Copy conf/examples/example.conf to conf/ and call it unrealircd.conf. Then open it in an editor and carefully modify it using the documentation and FAQ as a guide (see below).
Step 3: Booting
Linux/*BSD/OS X
Run ./unrealircd start in the directory where you installed UnrealIRCd.
Windows
Start -> All Programs -> UnrealIRCd -> UnrealIRCd
Documentation & FAQ
You can find the documentation online at: https://www.unrealircd.org/docs/
We also have a good FAQ: https://www.unrealircd.org/docs/FAQ
Website, support, and other links
- https://www.unrealircd.org - Our main website
- https://forums.unrealircd.org - Support
- https://bugs.unrealircd.org - Bug tracker
- ircs://irc.unrealircd.org:6697/unreal-support - IRC support