aboutsummaryrefslogtreecommitdiffstats
path: root/src/modules/m_spanningtree/uid.cpp
diff options
context:
space:
mode:
authorGravatar Sadie Powell2022-08-10 22:04:19 +0100
committerGravatar Sadie Powell2022-08-10 22:04:19 +0100
commit2dc07dbc067b5f88b8172622fb98b63ba9468380 (patch)
tree2090a3caad1fa0768637446b0e7bc8ba913febd0 /src/modules/m_spanningtree/uid.cpp
parentMerge branch 'insp3' into master. (diff)
parentDeprecate the string variant of SetClientIP. (diff)
Merge branch 'insp3' into master.
Diffstat (limited to 'src/modules/m_spanningtree/uid.cpp')
-rw-r--r--src/modules/m_spanningtree/uid.cpp14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/modules/m_spanningtree/uid.cpp b/src/modules/m_spanningtree/uid.cpp
index 7cf345dfd..e83528137 100644
--- a/src/modules/m_spanningtree/uid.cpp
+++ b/src/modules/m_spanningtree/uid.cpp
@@ -70,6 +70,14 @@ CmdResult CommandUID::HandleServer(TreeServer* remoteserver, CommandBase::Params
}
}
+ irc::sockets::sockaddrs sa;
+ if (params[6].find('/') != std::string::npos)
+ irc::sockets::untosa(params[6], sa);
+ else
+ irc::sockets::aptosa(params[6], 0, sa);
+ if (sa.family() == AF_UNSPEC)
+ throw ProtocolException("Invalid IP address or UNIX socket path");
+
/* For remote users, we pass the UUID they sent to the constructor.
* If the UUID already exists User::User() throws an exception which causes this connection to be closed.
*/
@@ -79,13 +87,13 @@ CmdResult CommandUID::HandleServer(TreeServer* remoteserver, CommandBase::Params
_new->ChangeRealHost(params[3], false);
_new->ChangeDisplayedHost(params[4]);
_new->ident = params[5];
+ _new->SetClientIP(sa);
_new->ChangeRealName(params.back());
_new->registered = REG_ALL;
_new->signon = signon;
_new->age = age_ts;
- unsigned int paramptr = 9;
-
+ size_t paramptr = 9;
for (const auto& modechr : modestr)
{
// Accept more '+' chars, for now
@@ -122,8 +130,6 @@ CmdResult CommandUID::HandleServer(TreeServer* remoteserver, CommandBase::Params
_new->SetMode(mh, true);
}
- _new->SetClientIP(params[6]);
-
ServerInstance->Users.AddClone(_new);
remoteserver->UserCount++;