updates. silc.server.0.7.7
authorPekka Riikonen <priikone@silcnet.org>
Sun, 27 Jan 2002 19:07:43 +0000 (19:07 +0000)
committerPekka Riikonen <priikone@silcnet.org>
Sun, 27 Jan 2002 19:07:43 +0000 (19:07 +0000)
CHANGES
apps/silcd/command.c
apps/silcd/packet_receive.c

diff --git a/CHANGES b/CHANGES
index 678aaa370e44ea4c5c69c8a37b09676f01a7f580..b33b52813d90b7dbb66920f5e695c5b6f36027e6 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,12 @@
+Sun Jan 27 21:04:19 EET 2002  Pekka Riikonen <priikone@silcnet.org>
+
+       * Check for NULL socket pointer in the function
+         silc_server_packet_send_to_channel_real.  Affected file
+         silcd/packet_send.c.
+
+       * Fixed the BAN notify handling to correctly remove ban
+         list.  Affected file silcd/packet_receive.c.
+
 Sat Jan 26 23:01:03 EET 2002  Pekka Riikonen <priikone@silcnet.org>
 
        * Fixed some header addition to Toolkit distribution in
index d413a946ebaa43bdd6f9efc132a38831c385af25..ab4d5cd080fe314c0c196812457e87c0df64a13b 100644 (file)
@@ -4823,7 +4823,11 @@ SILC_SERVER_CMD_FUNC(ban)
   }
 
   /* Get entry to the channel user list */
-  silc_hash_table_find(channel->user_list, client, NULL, (void *)&chl);
+  if (!silc_hash_table_find(channel->user_list, client, NULL, (void *)&chl)) {
+    silc_server_command_send_status_reply(cmd, SILC_COMMAND_BAN,
+                                         SILC_STATUS_ERR_NOT_ON_CHANNEL);
+    goto out;
+  }
 
   /* The client must be at least channel operator. */
   if (!(chl->mode & SILC_CHANNEL_UMODE_CHANOP)) {
@@ -4884,7 +4888,7 @@ SILC_SERVER_CMD_FUNC(ban)
                                         2, id, id_len,
                                         3, channel->ban_list, 
                                         channel->ban_list ? 
-                                        strlen(channel->ban_list) - 1 : 0);
+                                        strlen(channel->ban_list) : 0);
   silc_server_packet_send(server, cmd->sock, SILC_PACKET_COMMAND_REPLY, 0, 
                          packet->data, packet->len, FALSE);
     
index 6e8bf99a12214381012f6cc0691be6926568ebf7..e93774ae51d931c0766f9961a19986e9844fd9d1 100644 (file)
@@ -1143,7 +1143,7 @@ do {                                              \
     if (tmp && channel->ban_list) {
       char *start, *end, *n;
       
-      if (!strcmp(channel->ban_list, tmp)) {
+      if (!strncmp(channel->ban_list, tmp, strlen(channel->ban_list) - 1)) {
        silc_free(channel->ban_list);
        channel->ban_list = NULL;
       } else {