- irc.c: cleaned up userinfo_create()
authormichael <michael@82007160-df01-0410-b94d-b575c5fd34c7>
Sat, 14 Mar 2015 19:02:51 +0000 (19:02 +0000)
committermichael <michael@82007160-df01-0410-b94d-b575c5fd34c7>
Sat, 14 Mar 2015 19:02:51 +0000 (19:02 +0000)
git-svn-id: svn://svn.ircd-hybrid.org/svnroot/hopm/trunk@5691 82007160-df01-0410-b94d-b575c5fd34c7

src/irc.c

index 9b0d73b469acde2d6e1bc563d41b45715cd95870..ee0e185c5f84093de426bc10492c6c3f343656d2 100644 (file)
--- a/src/irc.c
+++ b/src/irc.c
@@ -60,7 +60,7 @@ static void irc_parse(void);
 
 static const struct ChannelConf *get_channel(const char *);
 
-static struct UserInfo *userinfo_create(char *);
+static struct UserInfo *userinfo_create(const char *);
 static void userinfo_free(struct UserInfo *source);
 
 static void m_ping(char *[], unsigned int, const char *, const struct UserInfo *);
@@ -587,18 +587,16 @@ get_channel(const char *channel)
  *    pointer to new UserInfo struct, or NULL if parsing failed
  */
 static struct UserInfo *
-userinfo_create(char *source)
+userinfo_create(const char *source)
 {
   struct UserInfo *ret;
-  char *nick;
-  char *username;
-  char *hostname;
-  char *tmp;
-  int i, len;
-
-  nick = username = hostname = NULL;
-  tmp = xstrdup(source);
-  len = strlen(tmp);
+  char *nick = NULL;
+  char *username = NULL;
+  char *hostname = NULL;
+  char tmp[MSGLENMAX];
+  size_t i, len;
+
+  len = strlcpy(tmp, source, sizeof(tmp));
   nick = tmp;
 
   for (i = 0; i < len; ++i)
@@ -616,19 +614,14 @@ userinfo_create(char *source)
     }
   }
 
-  if (nick == NULL || username == NULL || hostname == NULL)
-  {
-    xfree(tmp);
+  if (username == NULL || hostname == NULL)
     return NULL;
-  }
 
   ret = xcalloc(sizeof *ret);
   ret->irc_nick     = xstrdup(nick);
   ret->irc_username = xstrdup(username);
   ret->irc_hostname = xstrdup(hostname);
 
-  xfree(tmp);
-
   return ret;
 };