]> jfr.im git - solanum.git/blobdiff - ircd/client.c
strcpy: mass-migrate to strlcpy where appropriate
[solanum.git] / ircd / client.c
index 268f61b230450cd75e13f7c8372546af5807f23f..9ec5c6cc759414fa464462a10985daefab82e1a7 100644 (file)
@@ -32,7 +32,7 @@
 #include "ircd.h"
 #include "numeric.h"
 #include "packet.h"
-#include "s_auth.h"
+#include "authproc.h"
 #include "s_conf.h"
 #include "s_newconf.h"
 #include "logger.h"
 #include "hook.h"
 #include "msg.h"
 #include "monitor.h"
-#include "blacklist.h"
 #include "reject.h"
 #include "scache.h"
 #include "rb_dictionary.h"
 #include "sslproc.h"
+#include "wsproc.h"
 #include "s_assert.h"
 
 #define DEBUG_EXITED_CLIENTS
@@ -140,8 +140,8 @@ init_client(void)
 uint32_t
 connid_get(struct Client *client_p)
 {
-       s_assert(MyClient(client_p));
-       if (!MyClient(client_p))
+       s_assert(MyConnect(client_p));
+       if (!MyConnect(client_p))
                return 0;
 
        /* find a connid that is available */
@@ -194,8 +194,10 @@ client_release_connids(struct Client *client_p)
 {
        rb_dlink_node *ptr, *ptr2;
 
-       s_assert(MyClient(client_p));
-       if (!MyClient(client_p))
+       if (client_p->localClient->connids.head)
+               s_assert(MyConnect(client_p));
+
+       if (!MyConnect(client_p))
                return;
 
        RB_DLINK_FOREACH_SAFE(ptr, ptr2, client_p->localClient->connids.head)
@@ -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;
 }
@@ -253,17 +255,15 @@ make_client(struct Client *from)
 void
 free_pre_client(struct Client *client_p)
 {
-       struct Blacklist *blptr;
-
        s_assert(NULL != client_p);
 
        if(client_p->preClient == NULL)
                return;
 
-       blptr = client_p->preClient->dnsbl_listed;
-       if (blptr != NULL)
-               unref_blacklist(blptr);
-       s_assert(rb_dlink_list_length(&client_p->preClient->dnsbl_queries) == 0);
+       s_assert(client_p->preClient->auth.cid == 0);
+
+       rb_free(client_p->preClient->auth.data);
+       rb_free(client_p->preClient->auth.reason);
 
        rb_bh_free(pclient_heap, client_p->preClient);
        client_p->preClient = NULL;
@@ -311,11 +311,14 @@ free_local_client(struct Client *client_p)
        if (client_p->localClient->privset)
                privilegeset_unref(client_p->localClient->privset);
 
-       if(IsSSL(client_p))
-           ssld_decrement_clicount(client_p->localClient->ssl_ctl);
+       if (IsSSL(client_p))
+               ssld_decrement_clicount(client_p->localClient->ssl_ctl);
+
+       if (IsCapable(client_p, CAP_ZIP))
+               ssld_decrement_clicount(client_p->localClient->z_ctl);
 
-       if(IsCapable(client_p, CAP_ZIP))
-           ssld_decrement_clicount(client_p->localClient->z_ctl);
+       if (client_p->localClient->ws_ctl != NULL)
+               wsockd_decrement_clicount(client_p->localClient->ws_ctl);
 
        rb_bh_free(lclient_heap, client_p->localClient);
        client_p->localClient = NULL;
@@ -454,9 +457,8 @@ check_unknowns_list(rb_dlink_list * list)
                if(IsDead(client_p) || IsClosing(client_p))
                        continue;
 
-               /* still has DNSbls to validate against */
-               if(client_p->preClient != NULL &&
-                               rb_dlink_list_length(&client_p->preClient->dnsbl_queries) > 0)
+               /* Still querying with authd */
+               if(client_p->preClient != NULL && client_p->preClient->auth.cid != 0)
                        continue;
 
                /*
@@ -1077,9 +1079,9 @@ free_exited_clients(void *unused)
                                {
                                        s_assert(0);
                                        sendto_realops_snomask(SNO_GENERAL, L_ALL,
-                                               "On abort_list: %s stat: %u flags: %u/%u handler: %c",
+                                               "On abort_list: %s stat: %u flags: %llu handler: %c",
                                                target_p->name, (unsigned int) target_p->status,
-                                               target_p->flags, target_p->flags2, target_p->handler);
+                                               (unsigned long long)target_p->flags,  target_p->handler);
                                        sendto_realops_snomask(SNO_GENERAL, L_ALL,
                                                "Please report this to the charybdis developers!");
                                        found++;
@@ -1221,9 +1223,9 @@ exit_aborted_clients(void *unused)
                        {
                                s_assert(0);
                                sendto_realops_snomask(SNO_GENERAL, L_ALL,
-                                       "On dead_list: %s stat: %u flags: %u/%u handler: %c",
+                                       "On dead_list: %s stat: %u flags: %llu handler: %c",
                                        abt->client->name, (unsigned int) abt->client->status,
-                                       abt->client->flags, abt->client->flags2, abt->client->handler);
+                                       (unsigned long long)abt->client->flags, abt->client->handler);
                                sendto_realops_snomask(SNO_GENERAL, L_ALL,
                                        "Please report this to the charybdis developers!");
                                continue;
@@ -1352,11 +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)
 {
-       delete_auth_queries(source_p);
-       abort_blacklist_queries(source_p);
+       authd_abort_client(source_p);
        rb_dlinkDelete(&source_p->localClient->tnode, &unknown_list);
 
        if(!IsIOError(source_p))