Fixed memory leaks.
authorPekka Riikonen <priikone@silcnet.org>
Wed, 30 Mar 2005 19:55:35 +0000 (19:55 +0000)
committerPekka Riikonen <priikone@silcnet.org>
Wed, 30 Mar 2005 19:55:35 +0000 (19:55 +0000)
apps/silcd/command.c
apps/silcd/server_query.c

index d0cf76a3830531402db7d9eeee89ec69bbf14c72..b16e413706da11e50b4d804054366c90ddbe6b7a 100644 (file)
@@ -696,7 +696,7 @@ SILC_SERVER_CMD_FUNC(nick)
   client->id = new_id;
 
   silc_free(client->nickname);
-  client->nickname = nick;
+  client->nickname = strdup(nick);
 
   /* Update client cache */
   silc_idcache_add(server->local_list->clients, nickc,
@@ -2567,6 +2567,7 @@ SILC_SERVER_CMD_FUNC(join)
   silc_free(client_id);
 
  out:
+  silc_free(channel_namec);
   silc_server_command_free(cmd);
 }
 
index 7ccdd809da4d79dd84afbdf50e34a7415e841d2e..db8634fcb930a65986c7d8d7bfc1a6b844f70843 100644 (file)
@@ -515,14 +515,14 @@ void silc_server_query_parse(SilcServer server, SilcServerQuery query)
        /* Check nickname */
        tmp = silc_identifier_check(query->nickname, strlen(query->nickname),
                                    SILC_STRING_UTF8, 128, &tmp_len);
-       silc_free(query->nickname);
        if (!tmp) {
-         silc_server_query_add_error(server, query, 1, 1,
-                                     SILC_STATUS_ERR_BAD_NICKNAME);
-         query->nickname = NULL;
-       } else {
-         query->nickname = tmp;
+         silc_server_query_send_error(server, query,
+                                      SILC_STATUS_ERR_BAD_NICKNAME, 0);
+         silc_server_query_free(query);
+         return;
        }
+       silc_free(query->nickname);
+       query->nickname = tmp;
       }
 
       /* Try get server name */
@@ -531,11 +531,13 @@ void silc_server_query_parse(SilcServer server, SilcServerQuery query)
        /* Check server name */
        tmp = silc_identifier_check(tmp, tmp_len, SILC_STRING_UTF8,
                                    256, &tmp_len);
-       if (!tmp)
-         silc_server_query_add_error(server, query, 1, 1,
-                                     SILC_STATUS_ERR_BAD_SERVER);
-       else
-         query->server_name = tmp;
+       if (!tmp) {
+         silc_server_query_send_error(server, query,
+                                      SILC_STATUS_ERR_BAD_SERVER, 0);
+         silc_server_query_free(query);
+         return;
+       }
+       query->server_name = tmp;
       }
 
       /* Get channel name */
@@ -544,11 +546,13 @@ void silc_server_query_parse(SilcServer server, SilcServerQuery query)
        /* Check channel name */
        tmp = silc_identifier_check(tmp, tmp_len, SILC_STRING_UTF8,
                                    256, &tmp_len);
-       if (!tmp)
-         silc_server_query_add_error(server, query, 1, 1,
-                                     SILC_STATUS_ERR_BAD_SERVER);
-       else
-         query->channel_name = tmp;
+       if (!tmp) {
+         silc_server_query_send_error(server, query,
+                                      SILC_STATUS_ERR_BAD_CHANNEL, 0);
+         silc_server_query_free(query);
+         return;
+       }
+       query->channel_name = tmp;
       }
 
       if (!query->nickname && !query->server_name && !query->channel_name) {