aboutsummaryrefslogtreecommitdiff
path: root/src/socket.cpp
diff options
context:
space:
mode:
authorGravatar Sadie Powell2022-11-18 17:55:14 +0000
committerGravatar Sadie Powell2022-11-18 19:04:48 +0000
commit25325ae75b24a4e192be0db33af71b3d111002be (patch)
tree219b0fcb7900ec1dac9c22d2cbbd39225ab70e16 /src/socket.cpp
parentUpdate the Windows dependencies. (diff)
Avoid using a CIDR range when it only represents a single IP.
Diffstat (limited to 'src/socket.cpp')
-rw-r--r--src/socket.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/socket.cpp b/src/socket.cpp
index 46be75b70..63e00bc93 100644
--- a/src/socket.cpp
+++ b/src/socket.cpp
@@ -402,16 +402,19 @@ std::string irc::sockets::cidr_mask::str() const
unsigned char* base;
size_t len;
+ unsigned char maxlen;
switch (type)
{
case AF_INET:
base = (unsigned char*)&sa.in4.sin_addr;
len = 4;
+ maxlen = 32;
break;
case AF_INET6:
base = (unsigned char*)&sa.in6.sin6_addr;
len = 16;
+ maxlen = 128;
break;
case AF_UNIX:
@@ -425,7 +428,14 @@ std::string irc::sockets::cidr_mask::str() const
}
memcpy(base, bits, len);
- return sa.addr() + "/" + ConvToStr((int)length);
+
+ std::string value = sa.addr();
+ if (length < maxlen)
+ {
+ value.push_back('/');
+ value.append(ConvToStr(static_cast<uint16_t>(length)));
+ }
+ return value;
}
bool irc::sockets::cidr_mask::operator==(const cidr_mask& other) const