Check that the values specified in <limits> are reasonable.

This commit is contained in:
Sadie Powell 2020-09-30 17:21:52 +01:00
parent 49a165ef13
commit 5c06a0f335
2 changed files with 13 additions and 13 deletions

View File

@ -95,6 +95,8 @@ class CoreExport ConfigTag : public refcountbase
class ServerLimits
{
public:
/** Maximum line length */
size_t MaxLine;
/** Maximum nickname length */
size_t NickMax;
/** Maximum channel length */
@ -113,8 +115,6 @@ class ServerLimits
size_t MaxReal;
/** Maximum away message length */
size_t MaxAway;
/** Maximum line length */
size_t MaxLine;
/** Maximum hostname length */
size_t MaxHost;

View File

@ -38,17 +38,17 @@
#include <iostream>
ServerLimits::ServerLimits(ConfigTag* tag)
: NickMax(tag->getUInt("maxnick", 30))
, ChanMax(tag->getUInt("maxchan", 64))
, MaxModes(tag->getUInt("maxmodes", 20))
, IdentMax(tag->getUInt("maxident", 10))
, MaxQuit(tag->getUInt("maxquit", 255))
, MaxTopic(tag->getUInt("maxtopic", 307))
, MaxKick(tag->getUInt("maxkick", 255))
, MaxReal(tag->getUInt("maxreal", tag->getUInt("maxgecos", 128)))
, MaxAway(tag->getUInt("maxaway", 200))
, MaxLine(tag->getUInt("maxline", 512))
, MaxHost(tag->getUInt("maxhost", 64))
: MaxLine(tag->getUInt("maxline", 512, 512))
, NickMax(tag->getUInt("maxnick", 30, 1, MaxLine))
, ChanMax(tag->getUInt("maxchan", 64, 1, MaxLine))
, MaxModes(tag->getUInt("maxmodes", 20, 1))
, IdentMax(tag->getUInt("maxident", 10, 1))
, MaxQuit(tag->getUInt("maxquit", 255, 0, MaxLine))
, MaxTopic(tag->getUInt("maxtopic", 307, 1, MaxLine))
, MaxKick(tag->getUInt("maxkick", 255, 1, MaxLine))
, MaxReal(tag->getUInt("maxreal", tag->getUInt("maxgecos", 128), 1, MaxLine))
, MaxAway(tag->getUInt("maxaway", 200, 1, MaxLine))
, MaxHost(tag->getUInt("maxhost", 64, 1, MaxLine))
{
}