X-Git-Url: https://jfr.im/git/solanum.git/blobdiff_plain/c6098ed35727a74f726e38be7960ae9c1fa9309e..4d5a902f0888f36c21597874373bc3fcd8ef9862:/ircd/client.c diff --git a/ircd/client.c b/ircd/client.c index bfa00dc2..9ec5c6cc 100644 --- a/ircd/client.c +++ b/ircd/client.c @@ -194,7 +194,9 @@ client_release_connids(struct Client *client_p) { rb_dlink_node *ptr, *ptr2; - s_assert(MyConnect(client_p)); + if (client_p->localClient->connids.head) + s_assert(MyConnect(client_p)); + if (!MyConnect(client_p)) return; @@ -245,7 +247,7 @@ make_client(struct Client *from) } SetUnknown(client_p); - strcpy(client_p->username, "unknown"); + rb_strlcpy(client_p->username, "unknown", sizeof(client_p->username)); return client_p; } @@ -1352,10 +1354,18 @@ exit_remote_client(struct Client *client_p, struct Client *source_p, struct Clie */ static int -exit_unknown_client(struct Client *client_p, struct Client *source_p, struct Client *from, - const char *comment) +exit_unknown_client(struct Client *client_p, /* The local client originating the + * exit or NULL, if this exit is + * generated by this server for + * internal reasons. + * This will not get any of the + * generated messages. */ + struct Client *source_p, /* Client exiting */ + struct Client *from, /* Client firing off this Exit, + * never NULL! */ + const char *comment) { - authd_abort_client(client_p); + authd_abort_client(source_p); rb_dlinkDelete(&source_p->localClient->tnode, &unknown_list); if(!IsIOError(source_p))