updates.
authorPekka Riikonen <priikone@silcnet.org>
Mon, 23 Jul 2001 08:19:43 +0000 (08:19 +0000)
committerPekka Riikonen <priikone@silcnet.org>
Mon, 23 Jul 2001 08:19:43 +0000 (08:19 +0000)
CHANGES
apps/silcd/server.c
lib/silcske/groups.c

diff --git a/CHANGES b/CHANGES
index e4cc027b63373b8ee0b7472b8d2d5cccaf79b1cf..b2cf8ffdb89bef1b5228719c42f937c717a7bd58 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,12 @@
+Mon Jul 23 10:12:37 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Fixed a double free in disconnection in the server.  Affected
+         file is silcd/server.c.
+
+       * Fixed the lib/silcske/groups.c to work now also with GMP
+         MP library.  The string conversion did not work when using
+         specific base and the base is indicated in the string as well.
+
 Sun Jul 22 19:40:30 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
 
        * Changed the key material distribution function in case when
index 4265845e253f94c5d8e27e77e958aca050e5a23c..f3d00f16cf7d48dbf1d9777a529cf11331b9cbff 100644 (file)
@@ -2098,30 +2098,32 @@ SILC_TASK_CALLBACK(silc_server_close_connection_final)
 void silc_server_close_connection(SilcServer server,
                                  SilcSocketConnection sock)
 {
+  /* We won't listen for this connection anymore */
+  silc_schedule_unset_listen_fd(server->schedule, sock->sock);
+
+  /* Unregister all tasks */
+  silc_schedule_task_del_by_fd(server->schedule, sock->sock);
+  silc_schedule_task_del_by_fd(server->schedule, sock->sock);
+
+  /* Close the actual connection */
+  silc_net_close_connection(sock->sock);
+  server->sockets[sock->sock] = NULL;
+
   /* If sock->user_data is NULL then we'll check for active protocols
      here since the silc_server_free_sock_user_data has not been called
      for this connection. */
   if (!sock->user_data) {
-    /* If any protocol is active cancel its execution */
+    /* If any protocol is active cancel its execution. It will call
+       the final callback which will finalize the disconnection. */
     if (sock->protocol) {
       silc_protocol_cancel(sock->protocol, server->schedule);
       sock->protocol->state = SILC_PROTOCOL_STATE_ERROR;
       silc_protocol_execute_final(sock->protocol, server->schedule);
       sock->protocol = NULL;
+      return;
     }
   }
 
-  /* We won't listen for this connection anymore */
-  silc_schedule_unset_listen_fd(server->schedule, sock->sock);
-
-  /* Unregister all tasks */
-  silc_schedule_task_del_by_fd(server->schedule, sock->sock);
-  silc_schedule_task_del_by_fd(server->schedule, sock->sock);
-
-  /* Close the actual connection */
-  silc_net_close_connection(sock->sock);
-  server->sockets[sock->sock] = NULL;
-
   silc_schedule_task_add(server->schedule, 0, 
                     silc_server_close_connection_final,
                     (void *)sock, 0, 1, SILC_TASK_TIMEOUT, 
index 17a34c9111bd6d69d3e6d6a4cecea01aa9b63cdb..0c83343dc4b945aea813b00f31b9448c6392eadf 100644 (file)
@@ -29,25 +29,25 @@ const struct SilcSKEDiffieHellmanGroupDefStruct silc_ske_groups[] =
 {
   /* 1024 bits modulus (Mandatory group) */
   { 1, "diffie-hellman-group1",
-    "0x"
+
     "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1"
     "29024E088A67CC74020BBEA63B139B22514A08798E3404DD"
     "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245"
     "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED"
     "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE65381"
     "FFFFFFFFFFFFFFFF",
-    "0x"
+
     "7FFFFFFFFFFFFFFFE487ED5110B4611A62633145C06E0E68"
     "948127044533E63A0105DF531D89CD9128A5043CC71A026E"
     "F7CA8CD9E69D218D98158536F92F8A1BA7F09AB6B6A8E122"
     "F242DABB312F3F637A262174D31BF6B585FFAE5B7A035BF6"
     "F71C35FDAD44CFD2D74F9208BE258FF324943328F67329C0"
     "FFFFFFFFFFFFFFFF",
-    "0x2" },
+    "2" },
 
   /* 1536 bits modulus (Optional group) */
   { 2, "diffie-hellman-group2",
-    "0x"
+
     "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1"
     "29024E088A67CC74020BBEA63B139B22514A08798E3404DD"
     "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245"
@@ -56,7 +56,7 @@ const struct SilcSKEDiffieHellmanGroupDefStruct silc_ske_groups[] =
     "C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F"
     "83655D23DCA3AD961C62F356208552BB9ED529077096966D"
     "670C354E4ABC9804F1746C08CA237327FFFFFFFFFFFFFFFF",
-    "0x"
+
     "7FFFFFFFFFFFFFFFE487ED5110B4611A62633145C06E0E68"
     "948127044533E63A0105DF531D89CD9128A5043CC71A026E"
     "F7CA8CD9E69D218D98158536F92F8A1BA7F09AB6B6A8E122"
@@ -65,7 +65,7 @@ const struct SilcSKEDiffieHellmanGroupDefStruct silc_ske_groups[] =
     "E1003E5C50B1DF82CC6D241B0E2AE9CD348B1FD47E9267AF"
     "C1B2AE91EE51D6CB0E3179AB1042A95DCF6A9483B84B4B36"
     "B3861AA7255E4C0278BA36046511B993FFFFFFFFFFFFFFFF",
-    "0x2" },
+    "2" },
 
   { 0, NULL, NULL, NULL }
 };