]> jfr.im git - solanum.git/blobdiff - modules/m_signon.c
strcpy: mass-migrate to strlcpy where appropriate
[solanum.git] / modules / m_signon.c
index 4b4d83073da08854db95defc236609dd6642785d..6aeecc4714a10918897768bb6e808a732307632b 100644 (file)
@@ -25,8 +25,6 @@
  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  * POSSIBILITY OF SUCH DAMAGE.
- *
- * $Id: m_signon.c 1192 2006-04-21 16:21:02Z jilles $
  */
 
 #include "stdinc.h"
@@ -34,8 +32,7 @@
 #include "send.h"
 #include "channel.h"
 #include "client.h"
-#include "common.h"
-#include "config.h"
+#include "defaults.h"
 #include "ircd.h"
 #include "numeric.h"
 #include "s_conf.h"
 #include "match.h"
 #include "s_user.h"
 
-static int me_svslogin(struct MsgBuf *, struct Client *, struct Client *, int, const char **);
-static int ms_signon(struct MsgBuf *, struct Client *, struct Client *, int, const char **);
+static const char signon_desc[] = "Provides account login/logout support for services";
+
+static void me_svslogin(struct MsgBuf *, struct Client *, struct Client *, int, const char **);
+static void ms_signon(struct MsgBuf *, struct Client *, struct Client *, int, const char **);
 
 static void send_signon(struct Client *, struct Client *, const char *, const char *, const char *, unsigned int, const char *);
 
@@ -69,13 +68,13 @@ mapi_clist_av1 signon_clist[] = {
        &svslogin_msgtab, &signon_msgtab, NULL
 };
 
-DECLARE_MODULE_AV1(signon, NULL, NULL, signon_clist, NULL, NULL, "$Revision: 1192 $");
+DECLARE_MODULE_AV2(signon, NULL, NULL, signon_clist, NULL, NULL, NULL, NULL, signon_desc);
 
 #define NICK_VALID     1
 #define USER_VALID     2
 #define HOST_VALID     4
 
-static int
+static bool
 clean_username(const char *username)
 {
        int len = 0;
@@ -85,16 +84,16 @@ clean_username(const char *username)
                len++;
 
                if(!IsUserChar(*username))
-                       return 0;
+                       return false;
        }
 
        if(len > USERLEN)
-               return 0;
+               return false;
 
-       return 1;
+       return true;
 }
 
-static int
+static bool
 clean_host(const char *host)
 {
        int len = 0;
@@ -104,16 +103,16 @@ clean_host(const char *host)
                len++;
 
                if(!IsHostChar(*host))
-                       return 0;
+                       return false;
        }
 
        if(len > HOSTLEN)
-               return 0;
+               return false;
 
-       return 1;
+       return true;
 }
 
-static int
+static void
 me_svslogin(struct MsgBuf *msgbuf_p, struct Client *client_p, struct Client *source_p,
        int parc, const char *parv[])
 {
@@ -126,14 +125,14 @@ me_svslogin(struct MsgBuf *msgbuf_p, struct Client *client_p, struct Client *sou
        {
                sendto_realops_snomask(SNO_GENERAL, L_ALL,
                        "Non-service server %s attempting to execute services-only command SVSLOGIN", source_p->name);
-               return 0;
+               return;
        }
 
        if((target_p = find_client(parv[1])) == NULL)
-               return 0;
+               return;
 
        if(!MyClient(target_p) && !IsUnknown(target_p))
-               return 0;
+               return;
 
        if(clean_nick(parv[2], 0))
        {
@@ -175,7 +174,7 @@ me_svslogin(struct MsgBuf *msgbuf_p, struct Client *client_p, struct Client *sou
 
        /* Login (mostly) follows nick rules. */
        if(*login && !clean_nick(login, 0))
-               return 0;
+               return;
 
        if((exist_p = find_person(nick)) && target_p != exist_p)
        {
@@ -195,7 +194,9 @@ me_svslogin(struct MsgBuf *msgbuf_p, struct Client *client_p, struct Client *sou
                snprintf(buf, sizeof(buf), "Killed (%s (Nickname regained by services))",
                        me.name);
                exit_client(NULL, exist_p, &me, buf);
-       }else if((exist_p = find_client(nick)) && IsUnknown(exist_p) && exist_p != target_p) {
+       }
+       else if((exist_p = find_client(nick)) && IsUnknown(exist_p) && exist_p != target_p)
+       {
                exit_client(NULL, exist_p, &me, "Overridden");
        }
 
@@ -220,13 +221,13 @@ me_svslogin(struct MsgBuf *msgbuf_p, struct Client *client_p, struct Client *sou
                struct User *user_p = make_user(target_p);
 
                if(valid & NICK_VALID)
-                       strcpy(target_p->preClient->spoofnick, nick);
+                       rb_strlcpy(target_p->preClient->spoofnick, nick, sizeof(target_p->preClient->spoofnick));
 
                if(valid & USER_VALID)
-                       strcpy(target_p->preClient->spoofuser, user);
+                       rb_strlcpy(target_p->preClient->spoofuser, user, sizeof(target_p->preClient->spoofuser));
 
                if(valid & HOST_VALID)
-                       strcpy(target_p->preClient->spoofhost, host);
+                       rb_strlcpy(target_p->preClient->spoofhost, host, sizeof(target_p->preClient->spoofhost));
 
                rb_strlcpy(user_p->suser, login, NICKLEN + 1);
        }
@@ -239,11 +240,9 @@ me_svslogin(struct MsgBuf *msgbuf_p, struct Client *client_p, struct Client *sou
                snprintf(note, NICKLEN + 10, "Nick: %s", target_p->name);
                rb_note(target_p->localClient->F, note);
        }
-
-       return 0;
 }
 
-static int
+static void
 ms_signon(struct MsgBuf *msgbuf_p, struct Client *client_p, struct Client *source_p,
        int parc, const char *parv[])
 {
@@ -266,7 +265,7 @@ ms_signon(struct MsgBuf *msgbuf_p, struct Client *client_p, struct Client *sourc
                                me.name);
                source_p->flags |= FLAGS_KILLED;
                exit_client(NULL, source_p, &me, "Bad nickname from SIGNON");
-               return 0;
+               return;
        }
 
        if(!clean_username(parv[2]) || !clean_host(parv[3]))
@@ -284,7 +283,7 @@ ms_signon(struct MsgBuf *msgbuf_p, struct Client *client_p, struct Client *sourc
                                me.name);
                source_p->flags |= FLAGS_KILLED;
                exit_client(NULL, source_p, &me, "Bad user@host from SIGNON");
-               return 0;
+               return;
        }
 
        newts = atol(parv[4]);
@@ -296,7 +295,7 @@ ms_signon(struct MsgBuf *msgbuf_p, struct Client *client_p, struct Client *sourc
                if (clean_nick(parv[5], 0))
                        rb_strlcpy(login, parv[5], NICKLEN + 1);
                else
-                       return 0;
+                       return;
        }
        else
                login[0] = '\0';
@@ -331,7 +330,7 @@ ms_signon(struct MsgBuf *msgbuf_p, struct Client *client_p, struct Client *sourc
                                exit_client(NULL, target_p, &me, "Nick collision(new)");
                                source_p->flags |= FLAGS_KILLED;
                                exit_client(client_p, source_p, &me, "Nick collision(old)");
-                               return 0;
+                               return;
                        }
                        else
                        {
@@ -367,7 +366,7 @@ ms_signon(struct MsgBuf *msgbuf_p, struct Client *client_p, struct Client *sourc
                                                exit_client(client_p, source_p, &me, "Nick collision(old)");
                                        else
                                                exit_client(client_p, source_p, &me, "Nick collision(new)");
-                                       return 0;
+                                       return;
                                }
                                else
                                {
@@ -400,7 +399,6 @@ ms_signon(struct MsgBuf *msgbuf_p, struct Client *client_p, struct Client *sourc
        }
 
        send_signon(client_p, source_p, parv[1], parv[2], parv[3], newts, login);
-       return 0;
 }
 
 static void
@@ -412,7 +410,7 @@ send_signon(struct Client *client_p, struct Client *target_p,
                        use_id(target_p), nick, user, host,
                        (long) target_p->tsinfo, *login ? login : "0");
 
-       strcpy(target_p->user->suser, login);
+       rb_strlcpy(target_p->user->suser, login, sizeof(target_p->user->suser));
 
        change_nick_user_host(target_p, nick, user, host, newts, "Signing %s (%s)", *login ?  "in" : "out", nick);
 }