[Pkg-silc-commits] r286 - in /silc-server/trunk: ./ apps/ apps/silcd/ debian/ doc/ includes/ lib/ lib/contrib/ lib/silcapputil/ lib/silcasn1/ lib/silccore/ lib/silccrypt/ lib/silchttp/ lib/silcmath/ lib/silcske/ lib/silcskr/ lib/silcutil/ lib/silcutil/unix/

lunar at users.alioth.debian.org lunar at users.alioth.debian.org
Sat Jul 5 19:07:40 UTC 2008


Author: lunar
Date: Sat Jul  5 19:07:40 2008
New Revision: 286

URL: http://svn.debian.org/wsvn/pkg-silc/?sc=1&rev=286
Log:
New upstream release (1.1.11)

Modified:
    silc-server/trunk/ChangeLog
    silc-server/trunk/Makefile.am
    silc-server/trunk/Makefile.in
    silc-server/trunk/apps/Makefile.am
    silc-server/trunk/apps/Makefile.in
    silc-server/trunk/apps/silcd/command_reply.c
    silc-server/trunk/apps/silcd/idlist.c
    silc-server/trunk/apps/silcd/packet_receive.c
    silc-server/trunk/apps/silcd/packet_send.c
    silc-server/trunk/apps/silcd/server.c
    silc-server/trunk/apps/silcd/server_util.c
    silc-server/trunk/apps/silcd/silc-server.spec
    silc-server/trunk/configure
    silc-server/trunk/configure.ac
    silc-server/trunk/debian/changelog
    silc-server/trunk/doc/Makefile.am
    silc-server/trunk/doc/Makefile.in
    silc-server/trunk/includes/Makefile.am
    silc-server/trunk/includes/Makefile.in
    silc-server/trunk/includes/silcdistdefs.h
    silc-server/trunk/lib/Makefile.am
    silc-server/trunk/lib/Makefile.in
    silc-server/trunk/lib/contrib/Makefile.am
    silc-server/trunk/lib/contrib/Makefile.in
    silc-server/trunk/lib/silcapputil/Makefile.am
    silc-server/trunk/lib/silcapputil/Makefile.in
    silc-server/trunk/lib/silcasn1/Makefile.am
    silc-server/trunk/lib/silcasn1/Makefile.in
    silc-server/trunk/lib/silccore/Makefile.am
    silc-server/trunk/lib/silccore/Makefile.in
    silc-server/trunk/lib/silccore/silcpacket.c
    silc-server/trunk/lib/silccrypt/Makefile.am
    silc-server/trunk/lib/silccrypt/Makefile.in
    silc-server/trunk/lib/silccrypt/aes_x86.asm
    silc-server/trunk/lib/silccrypt/aes_x86_64.asm
    silc-server/trunk/lib/silchttp/Makefile.am
    silc-server/trunk/lib/silchttp/Makefile.in
    silc-server/trunk/lib/silcmath/Makefile.am
    silc-server/trunk/lib/silcmath/Makefile.in
    silc-server/trunk/lib/silcske/Makefile.am
    silc-server/trunk/lib/silcske/Makefile.in
    silc-server/trunk/lib/silcskr/Makefile.am
    silc-server/trunk/lib/silcskr/Makefile.in
    silc-server/trunk/lib/silcutil/Makefile.am
    silc-server/trunk/lib/silcutil/Makefile.in
    silc-server/trunk/lib/silcutil/silcbuffmt.c
    silc-server/trunk/lib/silcutil/silcutil.c
    silc-server/trunk/lib/silcutil/unix/silcunixnet.c

Modified: silc-server/trunk/ChangeLog
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/ChangeLog?rev=286&op=diff
==============================================================================
--- silc-server/trunk/ChangeLog (original)
+++ silc-server/trunk/ChangeLog Sat Jul  5 19:07:40 2008
@@ -1,8 +1,17 @@
-commit e10fb3ff712f60100846064c196d5f69921d1b43
+commit 4d26d9f598384d7cd49c6238ea4a81b9f4e6f212
 Author: Pekka Riikonen <priikone at silcnet.org>
-Date:   Sun Apr 20 22:53:47 2008 +0300
+Date:   Sun Jun 22 17:42:40 2008 +0300
 
-    Cancel rekey timeout when closing connection.
+    Remove client from expired client list before deleting it
 
- apps/silcd/server.c |    3 ++-
- 1 files changed, 2 insertions(+), 1 deletions(-)
+commit 32607f5db7ea3393765be5421e754ef191894dd5
+Author: Pekka Riikonen <priikone at silcnet.org>
+Date:   Sun Jun 22 16:56:36 2008 +0300
+
+    Fixed the silc_parse_userqfdn argument handling, again.
+
+ apps/silcd/command_reply.c  |    2 ++
+ apps/silcd/packet_receive.c |    7 ++++++-
+ apps/silcd/server_util.c    |    3 +++
+ lib/silcutil/silcutil.c     |    8 +++++---
+ 4 files changed, 16 insertions(+), 4 deletions(-)

Modified: silc-server/trunk/Makefile.am
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/Makefile.am?rev=286&op=diff
==============================================================================
--- silc-server/trunk/Makefile.am (original)
+++ silc-server/trunk/Makefile.am Sat Jul  5 19:07:40 2008
@@ -2,7 +2,7 @@
 # To make changes edit the ./Makefile.ad file in the source tree.
 
 # Source: ./Makefile.ad
-# Generated: Tue Apr 22 15:25:36 EEST 2008 by priikone
+# Generated: Sun Jun 22 18:32:15 EEST 2008 by priikone
 # Distribution: Server
 # License: 
 

Modified: silc-server/trunk/Makefile.in
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/Makefile.in?rev=286&op=diff
==============================================================================
--- silc-server/trunk/Makefile.in (original)
+++ silc-server/trunk/Makefile.in Sat Jul  5 19:07:40 2008
@@ -18,7 +18,7 @@
 # To make changes edit the ./Makefile.ad file in the source tree.
 
 # Source: ./Makefile.ad
-# Generated: Tue Apr 22 15:25:36 EEST 2008 by priikone
+# Generated: Sun Jun 22 18:32:15 EEST 2008 by priikone
 # Distribution: Server
 # License: 
 

Modified: silc-server/trunk/apps/Makefile.am
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/apps/Makefile.am?rev=286&op=diff
==============================================================================
--- silc-server/trunk/apps/Makefile.am (original)
+++ silc-server/trunk/apps/Makefile.am Sat Jul  5 19:07:40 2008
@@ -2,7 +2,7 @@
 # To make changes edit the ./apps/Makefile.ad file in the source tree.
 
 # Source: ./apps/Makefile.ad
-# Generated: Tue Apr 22 15:25:38 EEST 2008 by priikone
+# Generated: Sun Jun 22 18:32:16 EEST 2008 by priikone
 # Distribution: Server
 # License: 
 

Modified: silc-server/trunk/apps/Makefile.in
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/apps/Makefile.in?rev=286&op=diff
==============================================================================
--- silc-server/trunk/apps/Makefile.in (original)
+++ silc-server/trunk/apps/Makefile.in Sat Jul  5 19:07:40 2008
@@ -18,7 +18,7 @@
 # To make changes edit the ./apps/Makefile.ad file in the source tree.
 
 # Source: ./apps/Makefile.ad
-# Generated: Tue Apr 22 15:25:38 EEST 2008 by priikone
+# Generated: Sun Jun 22 18:32:16 EEST 2008 by priikone
 # Distribution: Server
 # License: 
 

Modified: silc-server/trunk/apps/silcd/command_reply.c
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/apps/silcd/command_reply.c?rev=286&op=diff
==============================================================================
--- silc-server/trunk/apps/silcd/command_reply.c (original)
+++ silc-server/trunk/apps/silcd/command_reply.c Sat Jul  5 19:07:40 2008
@@ -152,6 +152,7 @@
 
       silc_server_remove_from_channels(server, NULL, client, TRUE,
 				       NULL, TRUE, FALSE);
+      silc_dlist_del(server->expired_clients, client);
       silc_idlist_del_data(client);
       silc_idlist_del_client(server->global_list, client);
     }
@@ -533,6 +534,7 @@
     client->servername = servername[0] ? strdup(servername) : NULL;
     client->data.status |= SILC_IDLIST_STATUS_RESOLVED;
     client->data.status &= ~SILC_IDLIST_STATUS_RESOLVING;
+    client->data.status &= ~SILC_IDLIST_STATUS_REGISTERED;
 
     /* Update cache entry */
     silc_idcache_update_by_context(global ? server->global_list->clients :
@@ -543,10 +545,13 @@
   /* If client is global and is not on any channel then add that we'll
      expire the entry after a while. */
   if (global) {
-    silc_idlist_find_client_by_id(server->global_list, client->id,
-				  FALSE, &cache);
-    if (!silc_hash_table_count(client->channels))
+    client = silc_idlist_find_client_by_id(server->global_list, client->id,
+					   FALSE, &cache);
+    if (client && !silc_hash_table_count(client->channels)) {
+      client->data.created = silc_time();
+      silc_dlist_del(server->expired_clients, client);
       silc_dlist_add(server->expired_clients, client);
+    }
   }
 
   return TRUE;

Modified: silc-server/trunk/apps/silcd/idlist.c
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/apps/silcd/idlist.c?rev=286&op=diff
==============================================================================
--- silc-server/trunk/apps/silcd/idlist.c (original)
+++ silc-server/trunk/apps/silcd/idlist.c Sat Jul  5 19:07:40 2008
@@ -326,7 +326,7 @@
     int ret;
 
     ret = silc_parse_userfqdn(username, u, sizeof(u), h, sizeof(h));
-    if (!u)
+    if (!ret)
       return NULL;
     if (!silc_identifier_verify(u, strlen(u), SILC_STRING_UTF8, 128))
       return NULL;

Modified: silc-server/trunk/apps/silcd/packet_receive.c
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/apps/silcd/packet_receive.c?rev=286&op=diff
==============================================================================
--- silc-server/trunk/apps/silcd/packet_receive.c (original)
+++ silc-server/trunk/apps/silcd/packet_receive.c Sat Jul  5 19:07:40 2008
@@ -356,6 +356,8 @@
     client->mode = 0;
     client->router = NULL;
     client->connection = NULL;
+    client->data.created = silc_time();
+    silc_dlist_del(server->expired_clients, client);
     silc_dlist_add(server->expired_clients, client);
     break;
 
@@ -1263,6 +1265,7 @@
 	      silc_server_del_from_watcher_list(server, client);
 
 	    /* Remove the client */
+	    silc_dlist_del(server->expired_clients, client);
 	    silc_idlist_del_data(client);
 	    silc_idlist_del_client(local ? server->local_list :
 				   server->global_list, client);
@@ -1504,6 +1507,8 @@
       client->mode = 0;
       client->router = NULL;
       client->connection = NULL;
+      client->data.created = silc_time();
+      silc_dlist_del(server->expired_clients, client);
       silc_dlist_add(server->expired_clients, client);
       break;
     }
@@ -1664,6 +1669,7 @@
 
 	silc_server_remove_from_channels(server, NULL, client, TRUE,
 					 NULL, TRUE, FALSE);
+	silc_dlist_del(server->expired_clients, client);
 	silc_idlist_del_data(client);
 	silc_idlist_del_client(server->global_list, client);
       }
@@ -3715,6 +3721,7 @@
     detached_client->data.status &= ~SILC_IDLIST_STATUS_RESUME_RES;
     detached_client->mode &= ~SILC_UMODE_DETACHED;
     server->stat.my_detached--;
+    silc_dlist_del(server->expired_clients, detached_client);
 
     /* We are finished - reset resuming client */
     detached_client->resuming_client = NULL;
@@ -3732,6 +3739,7 @@
     silc_server_remove_from_channels(server, NULL, client, FALSE,
 				     NULL, FALSE, FALSE);
     silc_server_del_from_watcher_list(server, client);
+    silc_dlist_del(server->expired_clients, client);
     if (!silc_idlist_del_client(server->local_list, client))
       silc_idlist_del_client(server->global_list, client);
     client = detached_client;

Modified: silc-server/trunk/apps/silcd/packet_send.c
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/apps/silcd/packet_send.c?rev=286&op=diff
==============================================================================
--- silc-server/trunk/apps/silcd/packet_send.c (original)
+++ silc-server/trunk/apps/silcd/packet_send.c Sat Jul  5 19:07:40 2008
@@ -1442,10 +1442,11 @@
   tmp_len = strlen(cipher);
   packet = silc_channel_key_payload_encode(cid_len, cid, tmp_len, cipher,
                                            channel->key_len / 8, channel->key);
-  silc_server_packet_send_to_channel(server, sender, channel,
-				     SILC_PACKET_CHANNEL_KEY,
-                                     route, TRUE, packet->data,
-				     silc_buffer_len(packet));
+  if (packet)
+    silc_server_packet_send_to_channel(server, sender, channel,
+				       SILC_PACKET_CHANNEL_KEY,
+                                       route, TRUE, packet->data,
+				       silc_buffer_len(packet));
   silc_buffer_free(packet);
 }
 

Modified: silc-server/trunk/apps/silcd/server.c
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/apps/silcd/server.c?rev=286&op=diff
==============================================================================
--- silc-server/trunk/apps/silcd/server.c (original)
+++ silc-server/trunk/apps/silcd/server.c Sat Jul  5 19:07:40 2008
@@ -194,7 +194,7 @@
   SilcServer server = callback_context;
   SilcIDListData idata = silc_packet_get_context(stream);
 
-  SILC_LOG_DEBUG(("End of stream received"));
+  SILC_LOG_DEBUG(("End of stream received, sock %p", stream));
 
   if (!idata)
     return;
@@ -258,6 +258,8 @@
   SilcStream sock = silc_packet_stream_get_stream(stream);
   const char *ip;
   SilcUInt16 port;
+
+  SILC_LOG_DEBUG(("Packet error, sock %p", stream));
 
   if (!idata || !sock)
     return;
@@ -1261,13 +1263,10 @@
 
   silc_dlist_start(server->expired_clients);
   while ((client = silc_dlist_get(server->expired_clients))) {
-    if (client->data.status & SILC_IDLIST_STATUS_REGISTERED)
-      continue;
-
     /* For unregistered clients the created timestamp is actually
        unregistered timestamp.  Make sure client remains in history
        at least 500 seconds. */
-    if (curtime - client->data.created < 500)
+    if (client->data.created && curtime - client->data.created < 500)
       continue;
 
     id_list = (client->data.status & SILC_IDLIST_STATUS_LOCAL ?
@@ -1290,6 +1289,8 @@
 
 void silc_server_connection_free(SilcServerConnection sconn)
 {
+  if (!sconn)
+    return;
   SILC_LOG_DEBUG(("Free connection %p", sconn));
   silc_dlist_del(sconn->server->conns, sconn);
   silc_server_config_unref(&sconn->conn);
@@ -1345,7 +1346,8 @@
   SilcID remote_id;
   const char *ip;
 
-  SILC_LOG_DEBUG(("Connection %p authentication completed", sconn));
+  SILC_LOG_DEBUG(("Connection %p authentication completed, entry %p",
+		  sconn, entry));
 
   entry->op = NULL;
 
@@ -1353,12 +1355,11 @@
     /* Authentication failed */
     /* XXX retry connecting */
 
-    silc_server_disconnect_remote(server, sconn->sock,
-				  SILC_STATUS_ERR_AUTH_FAILED, NULL);
     if (sconn->callback)
       (*sconn->callback)(server, NULL, sconn->callback_context);
     silc_server_free_sock_user_data(server, sconn->sock, NULL);
-    silc_server_connection_free(sconn);
+    silc_server_disconnect_remote(server, sconn->sock,
+				  SILC_STATUS_ERR_AUTH_FAILED, NULL);
     return;
   }
 
@@ -1380,13 +1381,11 @@
 				      strdup(sconn->remote_host),
 				      SILC_SERVER, NULL, NULL, sconn->sock);
     if (!id_entry) {
-      silc_server_disconnect_remote(server, sconn->sock,
-				    SILC_STATUS_ERR_RESOURCE_LIMIT, NULL);
       if (sconn->callback)
 	(*sconn->callback)(server, NULL, sconn->callback_context);
       silc_server_free_sock_user_data(server, sconn->sock, NULL);
-      silc_server_connection_free(sconn);
-      silc_free(entry);
+      silc_server_disconnect_remote(server, sconn->sock,
+				    SILC_STATUS_ERR_RESOURCE_LIMIT, NULL);
       return;
     }
 
@@ -1411,13 +1410,11 @@
 			     SILC_STR_DATA(server->server_name,
 					   strlen(server->server_name)),
 			     SILC_STR_END)) {
-      silc_server_disconnect_remote(server, sconn->sock,
-				    SILC_STATUS_ERR_RESOURCE_LIMIT, NULL);
       if (sconn->callback)
 	(*sconn->callback)(server, NULL, sconn->callback_context);
       silc_server_free_sock_user_data(server, sconn->sock, NULL);
-      silc_server_connection_free(sconn);
-      silc_free(entry);
+      silc_server_disconnect_remote(server, sconn->sock,
+				    SILC_STATUS_ERR_RESOURCE_LIMIT, NULL);
       return;
     }
 
@@ -1451,13 +1448,11 @@
 						  SILC_ID_SERVER),
 				      NULL, sconn->sock);
     if (!id_entry) {
-      silc_server_disconnect_remote(server, sconn->sock,
-				    SILC_STATUS_ERR_RESOURCE_LIMIT, NULL);
       if (sconn->callback)
 	(*sconn->callback)(server, NULL, sconn->callback_context);
       silc_server_free_sock_user_data(server, sconn->sock, NULL);
-      silc_server_connection_free(sconn);
-      silc_free(entry);
+      silc_server_disconnect_remote(server, sconn->sock,
+				    SILC_STATUS_ERR_RESOURCE_LIMIT, NULL);
       return;
     }
 
@@ -1516,12 +1511,11 @@
 	/* We already have primary router.  Disconnect this connection */
 	SILC_LOG_DEBUG(("We already have primary router, disconnect"));
 	silc_idlist_del_server(server->global_list, id_entry);
+	if (sconn->callback)
+	  (*sconn->callback)(server, NULL, sconn->callback_context);
+	silc_server_free_sock_user_data(server, sconn->sock, NULL);
 	silc_server_disconnect_remote(server, sconn->sock,
 				      SILC_STATUS_ERR_RESOURCE_LIMIT, NULL);
-	if (sconn->callback)
-	  (*sconn->callback)(server, NULL, sconn->callback_context);
-	silc_server_connection_free(sconn);
-	silc_free(entry);
 	return;
 #endif /* 0 */
       }
@@ -1535,13 +1529,11 @@
     break;
 
   default:
-    silc_server_disconnect_remote(server, sconn->sock,
-				  SILC_STATUS_ERR_AUTH_FAILED, NULL);
     if (sconn->callback)
       (*sconn->callback)(server, NULL, sconn->callback_context);
     silc_server_free_sock_user_data(server, sconn->sock, NULL);
-    silc_server_connection_free(sconn);
-    silc_free(entry);
+    silc_server_disconnect_remote(server, sconn->sock,
+				  SILC_STATUS_ERR_AUTH_FAILED, NULL);
     return;
   }
 
@@ -1581,7 +1573,7 @@
 {
   SilcPacketStream sock = context;
   SilcUnknownEntry entry = silc_packet_get_context(sock);
-  SilcServerConnection sconn = silc_ske_get_context(ske);
+  SilcServerConnection sconn = entry->data.sconn;
   SilcServer server = entry->server;
   SilcServerConfigRouter *conn = sconn->conn.ref_ptr;
   SilcAuthMethod auth_meth = SILC_AUTH_NONE;
@@ -1592,7 +1584,7 @@
   SilcHmac hmac_send, hmac_receive;
   SilcHash hash;
 
-  SILC_LOG_DEBUG(("Connection %p, SKE completed", sconn));
+  SILC_LOG_DEBUG(("Connection %p, SKE completed, entry %p", sconn, entry));
 
   entry->op = NULL;
 
@@ -1603,12 +1595,11 @@
 
     /* XXX retry connecting */
     silc_ske_free(ske);
-    silc_server_disconnect_remote(server, sconn->sock,
-				  SILC_STATUS_ERR_KEY_EXCHANGE_FAILED, NULL);
     if (sconn->callback)
       (*sconn->callback)(server, NULL, sconn->callback_context);
     silc_server_free_sock_user_data(server, sconn->sock, NULL);
-    silc_server_connection_free(sconn);
+    silc_server_disconnect_remote(server, sconn->sock,
+				  SILC_STATUS_ERR_KEY_EXCHANGE_FAILED, NULL);
     return;
   }
 
@@ -1622,12 +1613,11 @@
 
     /* Error setting keys */
     silc_ske_free(ske);
-    silc_server_disconnect_remote(server, sconn->sock,
-				  SILC_STATUS_ERR_KEY_EXCHANGE_FAILED, NULL);
     if (sconn->callback)
       (*sconn->callback)(server, NULL, sconn->callback_context);
     silc_server_free_sock_user_data(server, sconn->sock, NULL);
-    silc_server_connection_free(sconn);
+    silc_server_disconnect_remote(server, sconn->sock,
+				  SILC_STATUS_ERR_KEY_EXCHANGE_FAILED, NULL);
     return;
   }
   silc_packet_set_keys(sconn->sock, send_key, receive_key, hmac_send,
@@ -1642,12 +1632,11 @@
 
     /** Error allocating auth protocol */
     silc_ske_free(ske);
-    silc_server_disconnect_remote(server, sconn->sock,
-				  SILC_STATUS_ERR_RESOURCE_LIMIT, NULL);
     if (sconn->callback)
       (*sconn->callback)(server, NULL, sconn->callback_context);
     silc_server_free_sock_user_data(server, sconn->sock, NULL);
-    silc_server_connection_free(sconn);
+    silc_server_disconnect_remote(server, sconn->sock,
+				  SILC_STATUS_ERR_RESOURCE_LIMIT, NULL);
     return;
   }
 
@@ -1709,9 +1698,9 @@
   /* Set source ID to packet stream */
   if (!silc_packet_set_ids(sconn->sock, SILC_ID_SERVER, server->id,
 			   0, NULL)) {
-    silc_packet_stream_destroy(sconn->sock);
     if (sconn->callback)
       (*sconn->callback)(server, NULL, sconn->callback_context);
+    silc_packet_stream_destroy(sconn->sock);
     silc_server_connection_free(sconn);
     return;
   }
@@ -1724,7 +1713,10 @@
     return;
   }
   entry->server = server;
+  entry->data.sconn = sconn;
   silc_packet_set_context(sconn->sock, entry);
+
+  SILC_LOG_DEBUG(("Created unknown connection %p", entry));
 
   /* Set Key Exchange flags from configuration, but fall back to global
      settings too. */
@@ -1739,9 +1731,9 @@
 		       server->public_key, server->private_key, sconn);
   if (!ske) {
     silc_free(entry);
-    silc_packet_stream_destroy(sconn->sock);
     if (sconn->callback)
       (*sconn->callback)(server, NULL, sconn->callback_context);
+    silc_packet_stream_destroy(sconn->sock);
     silc_server_connection_free(sconn);
     return;
   }
@@ -2155,6 +2147,9 @@
     server->stat.auth_failures++;
     silc_server_disconnect_remote(server, sock,
 				  SILC_STATUS_ERR_KEY_EXCHANGE_FAILED, NULL);
+    silc_server_config_unref(&entry->cconfig);
+    silc_server_config_unref(&entry->sconfig);
+    silc_server_config_unref(&entry->rconfig);
     silc_server_free_sock_user_data(server, sock, NULL);
     goto out;
   }
@@ -2194,6 +2189,9 @@
 					SILC_STATUS_ERR_PERM_DENIED,
 					"We do not have connection to backup "
 					"router established, try later");
+	  silc_server_config_unref(&entry->cconfig);
+	  silc_server_config_unref(&entry->sconfig);
+	  silc_server_config_unref(&entry->rconfig);
 	  silc_server_free_sock_user_data(server, sock, NULL);
 	  server->stat.auth_failures++;
 
@@ -2219,6 +2217,9 @@
 	server->stat.auth_failures++;
 	silc_server_disconnect_remote(server, sock,
 				      SILC_STATUS_ERR_AUTH_FAILED, NULL);
+	silc_server_config_unref(&entry->cconfig);
+	silc_server_config_unref(&entry->sconfig);
+	silc_server_config_unref(&entry->rconfig);
 	silc_server_free_sock_user_data(server, sock, NULL);
 	goto out;
       }
@@ -2286,6 +2287,9 @@
 				      SILC_STATUS_ERR_PERM_DENIED,
 				      "We do not have connection to primary "
 				      "router established, try later");
+	silc_server_config_unref(&entry->cconfig);
+	silc_server_config_unref(&entry->sconfig);
+	silc_server_config_unref(&entry->rconfig);
 	silc_server_free_sock_user_data(server, sock, NULL);
 	server->stat.auth_failures++;
 	goto out;
@@ -2298,6 +2302,9 @@
 					    &server->config->param,
 					    rconn ? rconn->param : NULL,
 					    silc_connauth_get_ske(connauth))) {
+	  silc_server_config_unref(&entry->cconfig);
+	  silc_server_config_unref(&entry->sconfig);
+	  silc_server_config_unref(&entry->rconfig);
 	  server->stat.auth_failures++;
 	  goto out;
 	}
@@ -2374,6 +2381,9 @@
 					SILC_STATUS_ERR_PERM_DENIED,
 					"We do not have connection to backup "
 					"router established, try later");
+	  silc_server_config_unref(&entry->cconfig);
+	  silc_server_config_unref(&entry->sconfig);
+	  silc_server_config_unref(&entry->rconfig);
 	  silc_server_free_sock_user_data(server, sock, NULL);
 	  server->stat.auth_failures++;
 
@@ -2415,6 +2425,9 @@
 	SILC_LOG_ERROR(("Could not add new server to cache"));
 	silc_server_disconnect_remote(server, sock,
 				      SILC_STATUS_ERR_AUTH_FAILED, NULL);
+	silc_server_config_unref(&entry->cconfig);
+	silc_server_config_unref(&entry->sconfig);
+	silc_server_config_unref(&entry->rconfig);
 	silc_server_free_sock_user_data(server, sock, NULL);
 	server->stat.auth_failures++;
 	goto out;
@@ -2539,6 +2552,9 @@
     silc_ske_free(ske);
     silc_server_disconnect_remote(server, sock,
 				  SILC_STATUS_ERR_KEY_EXCHANGE_FAILED, NULL);
+    silc_server_config_unref(&entry->cconfig);
+    silc_server_config_unref(&entry->sconfig);
+    silc_server_config_unref(&entry->rconfig);
     silc_server_free_sock_user_data(server, sock, NULL);
     return;
   }
@@ -2575,6 +2591,9 @@
     silc_ske_free(ske);
     silc_server_disconnect_remote(server, sock,
 				  SILC_STATUS_ERR_RESOURCE_LIMIT, NULL);
+    silc_server_config_unref(&entry->cconfig);
+    silc_server_config_unref(&entry->sconfig);
+    silc_server_config_unref(&entry->rconfig);
     silc_server_free_sock_user_data(server, sock, NULL);
     return;
   }
@@ -2634,6 +2653,8 @@
     return;
   }
   server->stat.conn_num++;
+
+  SILC_LOG_DEBUG(("Created packet stream %p", packet_stream));
 
   /* Set source ID to packet stream */
   if (!silc_packet_set_ids(packet_stream, SILC_ID_SERVER, server->id,
@@ -2693,6 +2714,8 @@
   entry->data.conn_type = SILC_CONN_UNKNOWN;
   silc_packet_set_context(packet_stream, entry);
 
+  SILC_LOG_DEBUG(("Created unknown connection %p", entry));
+
   silc_server_config_ref(&entry->cconfig, server->config, cconfig);
   silc_server_config_ref(&entry->sconfig, server->config, sconfig);
   silc_server_config_ref(&entry->rconfig, server->config, rconfig);
@@ -2842,9 +2865,9 @@
   SilcIDListData idata = silc_packet_get_context(sock);
   SilcSKE ske;
 
-  SILC_LOG_DEBUG(("Executing rekey protocol with %s:%d [%s]",
+  SILC_LOG_DEBUG(("Executing rekey protocol with %s:%d [%s], sock %p",
 		  idata->sconn->remote_host, idata->sconn->remote_port,
-		  SILC_CONNTYPE_STRING(idata->conn_type)));
+		  SILC_CONNTYPE_STRING(idata->conn_type), sock));
 
   /* Allocate SKE */
   ske = silc_ske_alloc(server->rng, server->schedule, NULL,
@@ -2928,7 +2951,7 @@
   if (!sock)
     return;
 
-  SILC_LOG_DEBUG(("Disconnecting remote host"));
+  SILC_LOG_DEBUG(("Disconnecting remote host, sock %p", sock));
 
   va_start(ap, status);
   cp = va_arg(ap, char *);
@@ -3010,6 +3033,7 @@
     client->router = NULL;
     client->connection = NULL;
     client->data.created = silc_time();
+    silc_dlist_del(server->expired_clients, client);
     silc_dlist_add(server->expired_clients, client);
   } else {
     /* Delete directly since we're shutting down server */
@@ -3027,12 +3051,16 @@
 				     SilcPacketStream sock,
 				     const char *signoff_message)
 {
-  SilcIDListData idata = silc_packet_get_context(sock);
+  SilcIDListData idata;
   const char *ip;
   SilcUInt16 port;
 
-  SILC_LOG_DEBUG(("Start"));
-
+  if (!sock)
+    return;
+
+  SILC_LOG_DEBUG(("Start, sock %p", sock));
+
+  idata = silc_packet_get_context(sock);
   if (!idata)
     return;
 
@@ -3220,8 +3248,10 @@
       }
       server->backup_noswitch = FALSE;
 
-      if (idata->sconn)
+      if (idata->sconn) {
 	silc_server_connection_free(idata->sconn);
+	idata->sconn = NULL;
+      }
 
       /* Statistics */
       if (idata->conn_type == SILC_CONN_SERVER) {
@@ -3265,10 +3295,18 @@
     {
       SilcUnknownEntry entry = (SilcUnknownEntry)idata;
 
-      SILC_LOG_DEBUG(("Freeing unknown connection data"));
-
-      if (idata->sconn)
+      SILC_LOG_DEBUG(("Freeing unknown connection data %p", entry));
+
+      if (idata->sconn) {
+	if (server->router_conn == idata->sconn) {
+	  if (!server->no_reconnect)
+	    silc_server_create_connections(server);
+	  server->router_conn = NULL;
+	}
+
 	silc_server_connection_free(idata->sconn);
+	idata->sconn = NULL;
+      }
       silc_idlist_del_data(idata);
       silc_free(entry);
       silc_packet_set_context(sock, NULL);
@@ -3941,6 +3979,7 @@
   SilcIDCacheEntry id_cache;
   SilcServerEntry entry;
   SilcBuffer idp;
+  void *tmp;
 
   /* Go through all clients in the list */
   if (silc_idcache_get_all(id_list->servers, &list)) {
@@ -3957,11 +3996,14 @@
 
       idp = silc_id_payload_encode(entry->id, SILC_ID_SERVER);
 
-      *servers = silc_buffer_realloc(*servers,
-				     (*servers ?
-				      silc_buffer_truelen((*servers)) +
-				      silc_buffer_len(idp) :
-				      silc_buffer_len(idp)));
+      tmp = silc_buffer_realloc(*servers,
+				(*servers ?
+				 silc_buffer_truelen((*servers)) +
+				 silc_buffer_len(idp) :
+				 silc_buffer_len(idp)));
+      if (!tmp)
+	return;
+      *servers = tmp;
       silc_buffer_pull_tail(*servers, ((*servers)->end - (*servers)->data));
       silc_buffer_put(*servers, idp->data, silc_buffer_len(idp));
       silc_buffer_pull(*servers, silc_buffer_len(idp));
@@ -4035,6 +4077,7 @@
   SilcBuffer idp;
   SilcBuffer tmp;
   unsigned char mode[4];
+  void *tmp2;
 
   /* Go through all clients in the list */
   if (silc_idcache_get_all(id_list->clients, &list)) {
@@ -4053,12 +4096,17 @@
 		      silc_id_render(client->id, SILC_ID_CLIENT)));
 
       idp = silc_id_payload_encode(client->id, SILC_ID_CLIENT);
-
-      *clients = silc_buffer_realloc(*clients,
-				     (*clients ?
-				      silc_buffer_truelen((*clients)) +
-				      silc_buffer_len(idp) :
-				      silc_buffer_len(idp)));
+      if (!idp)
+	return;
+
+      tmp2 = silc_buffer_realloc(*clients,
+				(*clients ?
+				 silc_buffer_truelen((*clients)) +
+				 silc_buffer_len(idp) :
+				 silc_buffer_len(idp)));
+      if (!tmp2)
+	return;
+      *clients = tmp2;
       silc_buffer_pull_tail(*clients, ((*clients)->end - (*clients)->data));
       silc_buffer_put(*clients, idp->data, silc_buffer_len(idp));
       silc_buffer_pull(*clients, silc_buffer_len(idp));
@@ -4068,11 +4116,14 @@
 	silc_server_announce_encode_notify(SILC_NOTIFY_TYPE_UMODE_CHANGE,
 					   2, idp->data, silc_buffer_len(idp),
 					   mode, 4);
-      *umodes = silc_buffer_realloc(*umodes,
-				    (*umodes ?
-				     silc_buffer_truelen((*umodes)) +
-				     silc_buffer_len(tmp) :
-				     silc_buffer_len(tmp)));
+      tmp2 = silc_buffer_realloc(*umodes,
+				 (*umodes ?
+				  silc_buffer_truelen((*umodes)) +
+				  silc_buffer_len(tmp) :
+				  silc_buffer_len(tmp)));
+      if (!tmp2)
+	return;
+      *umodes = tmp2;
       silc_buffer_pull_tail(*umodes, ((*umodes)->end - (*umodes)->data));
       silc_buffer_put(*umodes, tmp->data, silc_buffer_len(tmp));
       silc_buffer_pull(*umodes, silc_buffer_len(tmp));
@@ -4228,6 +4279,7 @@
   int len;
   unsigned char mode[4], ulimit[4];
   char *hmac;
+  void *tmp2;
 
   SILC_LOG_DEBUG(("Start"));
 
@@ -4264,10 +4316,13 @@
 					SILC_CHANNEL_MODE_ULIMIT ?
 					sizeof(ulimit) : 0));
   len = silc_buffer_len(tmp);
-  *channel_modes =
+  tmp2 =
     silc_buffer_realloc(*channel_modes,
 			(*channel_modes ?
 			 silc_buffer_truelen((*channel_modes)) + len : len));
+  if (!tmp2)
+    return;
+  *channel_modes = tmp2;
   silc_buffer_pull_tail(*channel_modes,
 			((*channel_modes)->end -
 			 (*channel_modes)->data));
@@ -4292,10 +4347,13 @@
 					     chidp->data,
 					     silc_buffer_len(chidp));
     len = silc_buffer_len(tmp);
-    *channel_users =
+    tmp2 =
       silc_buffer_realloc(*channel_users,
 			  (*channel_users ?
 			   silc_buffer_truelen((*channel_users)) + len : len));
+    if (!tmp2)
+      return;
+    *channel_users = tmp2;
     silc_buffer_pull_tail(*channel_users,
 			  ((*channel_users)->end -
 			   (*channel_users)->data));
@@ -4317,11 +4375,14 @@
 					     fkey ? fkey->data : NULL,
 					     fkey ? silc_buffer_len(fkey) : 0);
     len = silc_buffer_len(tmp);
-    *channel_users_modes =
+    tmp2 =
       silc_buffer_realloc(*channel_users_modes,
 			  (*channel_users_modes ?
 			   silc_buffer_truelen((*channel_users_modes)) +
 			   len : len));
+    if (!tmp2)
+      return;
+    *channel_users_modes = tmp2;
     silc_buffer_pull_tail(*channel_users_modes,
 			  ((*channel_users_modes)->end -
 			   (*channel_users_modes)->data));
@@ -4363,6 +4424,7 @@
   SilcUInt16 name_len;
   int len;
   int i = *channel_users_modes_c;
+  void *tmp;
   SilcBool announce;
 
   SILC_LOG_DEBUG(("Start"));
@@ -4386,11 +4448,15 @@
 
       if (announce) {
 	len = 4 + name_len + id_len + 4;
-	*channels =
+	tmp =
 	  silc_buffer_realloc(*channels,
 			      (*channels ?
 			       silc_buffer_truelen((*channels)) +
 			       len : len));
+	if (!tmp)
+	  break;
+	*channels = tmp;
+
 	silc_buffer_pull_tail(*channels,
 			      ((*channels)->end - (*channels)->data));
 	silc_buffer_format(*channels,
@@ -4411,15 +4477,23 @@
 
       if (announce) {
 	/* Channel user modes */
-	*channel_users_modes = silc_realloc(*channel_users_modes,
-					    sizeof(**channel_users_modes) *
-					    (i + 1));
+	tmp = silc_realloc(*channel_users_modes,
+			    sizeof(**channel_users_modes) * (i + 1));
+	if (!tmp)
+	  break;
+	*channel_users_modes = tmp;
 	(*channel_users_modes)[i] = NULL;
-	*channel_modes = silc_realloc(*channel_modes,
-				      sizeof(**channel_modes) * (i + 1));
+	tmp = silc_realloc(*channel_modes,
+			   sizeof(**channel_modes) * (i + 1));
+	if (!tmp)
+	  break;
+	*channel_modes = tmp;
 	(*channel_modes)[i] = NULL;
-	*channel_ids = silc_realloc(*channel_ids,
-				      sizeof(**channel_ids) * (i + 1));
+	tmp = silc_realloc(*channel_ids,
+			   sizeof(**channel_ids) * (i + 1));
+	if (!tmp)
+	  break;
+	*channel_ids = tmp;
 	(*channel_ids)[i] = NULL;
 	silc_server_announce_get_channel_users(server, channel,
 					       &(*channel_modes)[i],
@@ -4428,18 +4502,27 @@
 	(*channel_ids)[i] = channel->id;
 
 	/* Channel's topic */
-	*channel_topics = silc_realloc(*channel_topics,
-				       sizeof(**channel_topics) * (i + 1));
+	tmp = silc_realloc(*channel_topics,
+			   sizeof(**channel_topics) * (i + 1));
+	if (!tmp)
+	  break;
+	*channel_topics = tmp;
 	(*channel_topics)[i] = NULL;
 	silc_server_announce_get_channel_topic(server, channel,
 					       &(*channel_topics)[i]);
 
 	/* Channel's invite and ban list */
-	*channel_invites = silc_realloc(*channel_invites,
-					sizeof(**channel_invites) * (i + 1));
+	tmp = silc_realloc(*channel_invites,
+			   sizeof(**channel_invites) * (i + 1));
+	if (!tmp)
+	  break;
+	*channel_invites = tmp;
 	(*channel_invites)[i] = NULL;
-	*channel_bans = silc_realloc(*channel_bans,
-				     sizeof(**channel_bans) * (i + 1));
+	tmp = silc_realloc(*channel_bans,
+			   sizeof(**channel_bans) * (i + 1));
+	if (!tmp)
+	  break;
+	*channel_bans = tmp;
 	(*channel_bans)[i] = NULL;
 	silc_server_announce_get_inviteban(server, channel,
 					   &(*channel_invites)[i],

Modified: silc-server/trunk/apps/silcd/server_util.c
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/apps/silcd/server_util.c?rev=286&op=diff
==============================================================================
--- silc-server/trunk/apps/silcd/server_util.c (original)
+++ silc-server/trunk/apps/silcd/server_util.c Sat Jul  5 19:07:40 2008
@@ -228,6 +228,8 @@
 	client->mode = 0;
 	client->router = NULL;
 	client->connection = NULL;
+	client->data.created = silc_time();
+	silc_dlist_del(server->expired_clients, client);
 	silc_dlist_add(server->expired_clients, client);
       } else {
 	silc_idlist_del_data(client);
@@ -289,6 +291,8 @@
 	client->mode = 0;
 	client->router = NULL;
 	client->connection = NULL;
+	client->data.created = silc_time();
+	silc_dlist_del(server->expired_clients, client);
 	silc_dlist_add(server->expired_clients, client);
       } else {
 	silc_idlist_del_data(client);
@@ -1566,6 +1570,7 @@
     }
 
     /* Remove remote client */
+    silc_dlist_del(server->expired_clients, remote_client);
     silc_idlist_del_data(remote_client);
     if (!silc_idlist_del_client(server->global_list, remote_client)) {
       /* Remove this client from watcher list if it is */
@@ -2107,6 +2112,8 @@
   silc_hash_table_list(channel->channel_pubkeys, &htl);
   while (silc_hash_table_get(&htl, NULL, (void *)&pk)) {
     pkp = silc_public_key_payload_encode(pk);
+    if (!pkp)
+      continue;
     list = silc_argument_payload_encode_one(list, pkp->data,
 					    silc_buffer_len(pkp),
 					    announce ? 0x03 :

Modified: silc-server/trunk/apps/silcd/silc-server.spec
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/apps/silcd/silc-server.spec?rev=286&op=diff
==============================================================================
--- silc-server/trunk/apps/silcd/silc-server.spec (original)
+++ silc-server/trunk/apps/silcd/silc-server.spec Sat Jul  5 19:07:40 2008
@@ -1,6 +1,6 @@
 Summary: SILC Server
 Name: silc-server
-Version: 1.1.6
+Version: 1.1.11
 Release: 0.fc8
 License: GPL
 Group: Applications/Communications

Modified: silc-server/trunk/configure
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/configure?rev=286&op=diff
==============================================================================
--- silc-server/trunk/configure (original)
+++ silc-server/trunk/configure Sat Jul  5 19:07:40 2008
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.61 for Server 1.1.6.
+# Generated by GNU Autoconf 2.61 for Server 1.1.11.
 #
 # Report bugs to <silc-devel at lists.silcnet.org>.
 #
@@ -728,8 +728,8 @@
 # Identity of this package.
 PACKAGE_NAME='Server'
 PACKAGE_TARNAME='silc-server'
-PACKAGE_VERSION='1.1.6'
-PACKAGE_STRING='Server 1.1.6'
+PACKAGE_VERSION='1.1.11'
+PACKAGE_STRING='Server 1.1.11'
 PACKAGE_BUGREPORT='silc-devel at lists.silcnet.org'
 
 # Factoring default headers for most tests.
@@ -1474,7 +1474,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures Server 1.1.6 to adapt to many kinds of systems.
+\`configure' configures Server 1.1.11 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1545,7 +1545,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of Server 1.1.6:";;
+     short | recursive ) echo "Configuration of Server 1.1.11:";;
    esac
   cat <<\_ACEOF
 
@@ -1668,7 +1668,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-Server configure 1.1.6
+Server configure 1.1.11
 generated by GNU Autoconf 2.61
 
 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -1682,7 +1682,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by Server $as_me 1.1.6, which was
+It was created by Server $as_me 1.1.11, which was
 generated by GNU Autoconf 2.61.  Invocation command line was
 
   $ $0 $@
@@ -2498,7 +2498,7 @@
 
 # Define the identity of the package.
  PACKAGE='silc-server'
- VERSION='1.1.6'
+ VERSION='1.1.11'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -31728,7 +31728,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by Server $as_me 1.1.6, which was
+This file was extended by Server $as_me 1.1.11, which was
 generated by GNU Autoconf 2.61.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -31781,7 +31781,7 @@
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF
 ac_cs_version="\\
-Server config.status 1.1.6
+Server config.status 1.1.11
 configured by $0, generated by GNU Autoconf 2.61,
   with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
 

Modified: silc-server/trunk/configure.ac
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/configure.ac?rev=286&op=diff
==============================================================================
--- silc-server/trunk/configure.ac (original)
+++ silc-server/trunk/configure.ac Sat Jul  5 19:07:40 2008
@@ -2,7 +2,7 @@
 # To make changes edit the configure.ad file in the source tree.
 
 # Source: configure.ad
-# Generated: Tue Apr 22 15:25:38 EEST 2008 by priikone
+# Generated: Sun Jun 22 18:32:16 EEST 2008 by priikone
 # Distribution: Server
 # License: 
 
@@ -23,7 +23,7 @@
 #  GNU General Public License for more details.
 #
 
-AC_INIT([Server], [1.1.6], [silc-devel at lists.silcnet.org], [silc-server])
+AC_INIT([Server], [1.1.11], [silc-devel at lists.silcnet.org], [silc-server])
 AC_CANONICAL_SYSTEM
 AM_INIT_AUTOMAKE
 AC_PREREQ(2.52)

Modified: silc-server/trunk/debian/changelog
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/debian/changelog?rev=286&op=diff
==============================================================================
--- silc-server/trunk/debian/changelog (original)
+++ silc-server/trunk/debian/changelog Sat Jul  5 19:07:40 2008
@@ -1,3 +1,9 @@
+silc-server (1.1.11-1) UNRELEASED; urgency=low
+
+  * New upstream release.
+
+ -- Jérémy Bobbio <lunar at debian.org>  Sat, 05 Jul 2008 21:02:36 +0200
+
 silc-server (1.1.6-1) unstable; urgency=low
 
   * New upstream release.

Modified: silc-server/trunk/doc/Makefile.am
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/doc/Makefile.am?rev=286&op=diff
==============================================================================
--- silc-server/trunk/doc/Makefile.am (original)
+++ silc-server/trunk/doc/Makefile.am Sat Jul  5 19:07:40 2008
@@ -2,7 +2,7 @@
 # To make changes edit the ./doc/Makefile.ad file in the source tree.
 
 # Source: ./doc/Makefile.ad
-# Generated: Tue Apr 22 15:25:38 EEST 2008 by priikone
+# Generated: Sun Jun 22 18:32:16 EEST 2008 by priikone
 # Distribution: Server
 # License: 
 

Modified: silc-server/trunk/doc/Makefile.in
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/doc/Makefile.in?rev=286&op=diff
==============================================================================
--- silc-server/trunk/doc/Makefile.in (original)
+++ silc-server/trunk/doc/Makefile.in Sat Jul  5 19:07:40 2008
@@ -18,7 +18,7 @@
 # To make changes edit the ./doc/Makefile.ad file in the source tree.
 
 # Source: ./doc/Makefile.ad
-# Generated: Tue Apr 22 15:25:38 EEST 2008 by priikone
+# Generated: Sun Jun 22 18:32:16 EEST 2008 by priikone
 # Distribution: Server
 # License: 
 

Modified: silc-server/trunk/includes/Makefile.am
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/includes/Makefile.am?rev=286&op=diff
==============================================================================
--- silc-server/trunk/includes/Makefile.am (original)
+++ silc-server/trunk/includes/Makefile.am Sat Jul  5 19:07:40 2008
@@ -2,7 +2,7 @@
 # To make changes edit the ./includes/Makefile.ad file in the source tree.
 
 # Source: ./includes/Makefile.ad
-# Generated: Tue Apr 22 15:25:36 EEST 2008 by priikone
+# Generated: Sun Jun 22 18:32:15 EEST 2008 by priikone
 # Distribution: Server
 # License: 
 

Modified: silc-server/trunk/includes/Makefile.in
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/includes/Makefile.in?rev=286&op=diff
==============================================================================
--- silc-server/trunk/includes/Makefile.in (original)
+++ silc-server/trunk/includes/Makefile.in Sat Jul  5 19:07:40 2008
@@ -18,7 +18,7 @@
 # To make changes edit the ./includes/Makefile.ad file in the source tree.
 
 # Source: ./includes/Makefile.ad
-# Generated: Tue Apr 22 15:25:36 EEST 2008 by priikone
+# Generated: Sun Jun 22 18:32:15 EEST 2008 by priikone
 # Distribution: Server
 # License: 
 

Modified: silc-server/trunk/includes/silcdistdefs.h
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/includes/silcdistdefs.h?rev=286&op=diff
==============================================================================
--- silc-server/trunk/includes/silcdistdefs.h (original)
+++ silc-server/trunk/includes/silcdistdefs.h Sat Jul  5 19:07:40 2008
@@ -1,7 +1,7 @@
 /*
   Automatically generated by Autodist 1.4.  Do not edit.
 
-  Generated: Tue Apr 22 15:25:35 EEST 2008 by priikone
+  Generated: Sun Jun 22 18:32:15 EEST 2008 by priikone
   Distribution: Server
   License: 
 */

Modified: silc-server/trunk/lib/Makefile.am
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/lib/Makefile.am?rev=286&op=diff
==============================================================================
--- silc-server/trunk/lib/Makefile.am (original)
+++ silc-server/trunk/lib/Makefile.am Sat Jul  5 19:07:40 2008
@@ -2,7 +2,7 @@
 # To make changes edit the ./lib/Makefile.ad file in the source tree.
 
 # Source: ./lib/Makefile.ad
-# Generated: Tue Apr 22 15:25:37 EEST 2008 by priikone
+# Generated: Sun Jun 22 18:32:15 EEST 2008 by priikone
 # Distribution: Server
 # License: 
 

Modified: silc-server/trunk/lib/Makefile.in
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/lib/Makefile.in?rev=286&op=diff
==============================================================================
--- silc-server/trunk/lib/Makefile.in (original)
+++ silc-server/trunk/lib/Makefile.in Sat Jul  5 19:07:40 2008
@@ -18,7 +18,7 @@
 # To make changes edit the ./lib/Makefile.ad file in the source tree.
 
 # Source: ./lib/Makefile.ad
-# Generated: Tue Apr 22 15:25:37 EEST 2008 by priikone
+# Generated: Sun Jun 22 18:32:15 EEST 2008 by priikone
 # Distribution: Server
 # License: 
 

Modified: silc-server/trunk/lib/contrib/Makefile.am
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/lib/contrib/Makefile.am?rev=286&op=diff
==============================================================================
--- silc-server/trunk/lib/contrib/Makefile.am (original)
+++ silc-server/trunk/lib/contrib/Makefile.am Sat Jul  5 19:07:40 2008
@@ -2,7 +2,7 @@
 # To make changes edit the ./lib/contrib/Makefile.ad file in the source tree.
 
 # Source: ./lib/contrib/Makefile.ad
-# Generated: Tue Apr 22 15:25:37 EEST 2008 by priikone
+# Generated: Sun Jun 22 18:32:15 EEST 2008 by priikone
 # Distribution: Server
 # License: 
 

Modified: silc-server/trunk/lib/contrib/Makefile.in
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/lib/contrib/Makefile.in?rev=286&op=diff
==============================================================================
--- silc-server/trunk/lib/contrib/Makefile.in (original)
+++ silc-server/trunk/lib/contrib/Makefile.in Sat Jul  5 19:07:40 2008
@@ -18,7 +18,7 @@
 # To make changes edit the ./lib/contrib/Makefile.ad file in the source tree.
 
 # Source: ./lib/contrib/Makefile.ad
-# Generated: Tue Apr 22 15:25:37 EEST 2008 by priikone
+# Generated: Sun Jun 22 18:32:15 EEST 2008 by priikone
 # Distribution: Server
 # License: 
 

Modified: silc-server/trunk/lib/silcapputil/Makefile.am
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/lib/silcapputil/Makefile.am?rev=286&op=diff
==============================================================================
--- silc-server/trunk/lib/silcapputil/Makefile.am (original)
+++ silc-server/trunk/lib/silcapputil/Makefile.am Sat Jul  5 19:07:40 2008
@@ -2,7 +2,7 @@
 # To make changes edit the ./lib/silcapputil/Makefile.ad file in the source tree.
 
 # Source: ./lib/silcapputil/Makefile.ad
-# Generated: Tue Apr 22 15:25:37 EEST 2008 by priikone
+# Generated: Sun Jun 22 18:32:15 EEST 2008 by priikone
 # Distribution: Server
 # License: 
 

Modified: silc-server/trunk/lib/silcapputil/Makefile.in
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/lib/silcapputil/Makefile.in?rev=286&op=diff
==============================================================================
--- silc-server/trunk/lib/silcapputil/Makefile.in (original)
+++ silc-server/trunk/lib/silcapputil/Makefile.in Sat Jul  5 19:07:40 2008
@@ -18,7 +18,7 @@
 # To make changes edit the ./lib/silcapputil/Makefile.ad file in the source tree.
 
 # Source: ./lib/silcapputil/Makefile.ad
-# Generated: Tue Apr 22 15:25:37 EEST 2008 by priikone
+# Generated: Sun Jun 22 18:32:15 EEST 2008 by priikone
 # Distribution: Server
 # License: 
 

Modified: silc-server/trunk/lib/silcasn1/Makefile.am
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/lib/silcasn1/Makefile.am?rev=286&op=diff
==============================================================================
--- silc-server/trunk/lib/silcasn1/Makefile.am (original)
+++ silc-server/trunk/lib/silcasn1/Makefile.am Sat Jul  5 19:07:40 2008
@@ -2,7 +2,7 @@
 # To make changes edit the ./lib/silcasn1/Makefile.ad file in the source tree.
 
 # Source: ./lib/silcasn1/Makefile.ad
-# Generated: Tue Apr 22 15:25:37 EEST 2008 by priikone
+# Generated: Sun Jun 22 18:32:15 EEST 2008 by priikone
 # Distribution: Server
 # License: 
 

Modified: silc-server/trunk/lib/silcasn1/Makefile.in
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/lib/silcasn1/Makefile.in?rev=286&op=diff
==============================================================================
--- silc-server/trunk/lib/silcasn1/Makefile.in (original)
+++ silc-server/trunk/lib/silcasn1/Makefile.in Sat Jul  5 19:07:40 2008
@@ -18,7 +18,7 @@
 # To make changes edit the ./lib/silcasn1/Makefile.ad file in the source tree.
 
 # Source: ./lib/silcasn1/Makefile.ad
-# Generated: Tue Apr 22 15:25:37 EEST 2008 by priikone
+# Generated: Sun Jun 22 18:32:15 EEST 2008 by priikone
 # Distribution: Server
 # License: 
 

Modified: silc-server/trunk/lib/silccore/Makefile.am
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/lib/silccore/Makefile.am?rev=286&op=diff
==============================================================================
--- silc-server/trunk/lib/silccore/Makefile.am (original)
+++ silc-server/trunk/lib/silccore/Makefile.am Sat Jul  5 19:07:40 2008
@@ -2,7 +2,7 @@
 # To make changes edit the ./lib/silccore/Makefile.ad file in the source tree.
 
 # Source: ./lib/silccore/Makefile.ad
-# Generated: Tue Apr 22 15:25:37 EEST 2008 by priikone
+# Generated: Sun Jun 22 18:32:16 EEST 2008 by priikone
 # Distribution: Server
 # License: 
 

Modified: silc-server/trunk/lib/silccore/Makefile.in
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/lib/silccore/Makefile.in?rev=286&op=diff
==============================================================================
--- silc-server/trunk/lib/silccore/Makefile.in (original)
+++ silc-server/trunk/lib/silccore/Makefile.in Sat Jul  5 19:07:40 2008
@@ -18,7 +18,7 @@
 # To make changes edit the ./lib/silccore/Makefile.ad file in the source tree.
 
 # Source: ./lib/silccore/Makefile.ad
-# Generated: Tue Apr 22 15:25:37 EEST 2008 by priikone
+# Generated: Sun Jun 22 18:32:16 EEST 2008 by priikone
 # Distribution: Server
 # License: 
 

Modified: silc-server/trunk/lib/silccore/silcpacket.c
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/lib/silccore/silcpacket.c?rev=286&op=diff
==============================================================================
--- silc-server/trunk/lib/silccore/silcpacket.c (original)
+++ silc-server/trunk/lib/silccore/silcpacket.c Sat Jul  5 19:07:40 2008
@@ -721,8 +721,8 @@
 			    (void *)&ps->sc)) {
     ps->sc = silc_calloc(1, sizeof(*ps->sc));
     if (!ps->sc) {
+      silc_mutex_unlock(engine->lock);
       silc_packet_stream_destroy(ps);
-      silc_mutex_unlock(engine->lock);
       return NULL;
     }
     ps->sc->engine = engine;
@@ -733,8 +733,8 @@
     if (!inbuf) {
       silc_free(ps->sc);
       ps->sc = NULL;
+      silc_mutex_unlock(engine->lock);
       silc_packet_stream_destroy(ps);
-      silc_mutex_unlock(engine->lock);
       return NULL;
     }
     silc_buffer_reset(inbuf);
@@ -744,8 +744,8 @@
       silc_buffer_free(inbuf);
       silc_free(ps->sc);
       ps->sc = NULL;
+      silc_mutex_unlock(engine->lock);
       silc_packet_stream_destroy(ps);
-      silc_mutex_unlock(engine->lock);
       return NULL;
     }
     silc_dlist_add(ps->sc->inbufs, inbuf);
@@ -756,8 +756,8 @@
       silc_dlist_del(ps->sc->inbufs, inbuf);
       silc_free(ps->sc);
       ps->sc = NULL;
+      silc_mutex_unlock(engine->lock);
       silc_packet_stream_destroy(ps);
-      silc_mutex_unlock(engine->lock);
       return NULL;
     }
   }
@@ -901,17 +901,18 @@
 
   if (!stream->udp) {
     /* Delete from engine */
-    engine = stream->sc->engine;
-    silc_mutex_lock(engine->lock);
-    silc_list_del(engine->streams, stream);
-
-    /* Remove per scheduler context, if it is not used anymore */
     if (stream->sc) {
+      engine = stream->sc->engine;
+      silc_mutex_lock(engine->lock);
+      silc_list_del(engine->streams, stream);
+
+      /* Remove per scheduler context, if it is not used anymore */
       stream->sc->stream_count--;
       if (!stream->sc->stream_count)
 	silc_hash_table_del(engine->contexts, stream->sc->schedule);
-    }
-    silc_mutex_unlock(engine->lock);
+
+      silc_mutex_unlock(engine->lock);
+    }
 
     /* Destroy the underlaying stream */
     if (stream->stream)

Modified: silc-server/trunk/lib/silccrypt/Makefile.am
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/lib/silccrypt/Makefile.am?rev=286&op=diff
==============================================================================
--- silc-server/trunk/lib/silccrypt/Makefile.am (original)
+++ silc-server/trunk/lib/silccrypt/Makefile.am Sat Jul  5 19:07:40 2008
@@ -2,7 +2,7 @@
 # To make changes edit the ./lib/silccrypt/Makefile.ad file in the source tree.
 
 # Source: ./lib/silccrypt/Makefile.ad
-# Generated: Tue Apr 22 15:25:37 EEST 2008 by priikone
+# Generated: Sun Jun 22 18:32:15 EEST 2008 by priikone
 # Distribution: Server
 # License: 
 

Modified: silc-server/trunk/lib/silccrypt/Makefile.in
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/lib/silccrypt/Makefile.in?rev=286&op=diff
==============================================================================
--- silc-server/trunk/lib/silccrypt/Makefile.in (original)
+++ silc-server/trunk/lib/silccrypt/Makefile.in Sat Jul  5 19:07:40 2008
@@ -18,7 +18,7 @@
 # To make changes edit the ./lib/silccrypt/Makefile.ad file in the source tree.
 
 # Source: ./lib/silccrypt/Makefile.ad
-# Generated: Tue Apr 22 15:25:37 EEST 2008 by priikone
+# Generated: Sun Jun 22 18:32:15 EEST 2008 by priikone
 # Distribution: Server
 # License: 
 

Modified: silc-server/trunk/lib/silccrypt/aes_x86.asm
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/lib/silccrypt/aes_x86.asm?rev=286&op=diff
==============================================================================
--- silc-server/trunk/lib/silccrypt/aes_x86.asm (original)
+++ silc-server/trunk/lib/silccrypt/aes_x86.asm Sat Jul  5 19:07:40 2008
@@ -595,3 +595,7 @@
 %endif
 
     end
+
+%ifidn __OUTPUT_FORMAT__,elf
+section .note.GNU-stack noalloc noexec nowrite progbits
+%endif

Modified: silc-server/trunk/lib/silccrypt/aes_x86_64.asm
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/lib/silccrypt/aes_x86_64.asm?rev=286&op=diff
==============================================================================
--- silc-server/trunk/lib/silccrypt/aes_x86_64.asm (original)
+++ silc-server/trunk/lib/silccrypt/aes_x86_64.asm Sat Jul  5 19:07:40 2008
@@ -864,3 +864,7 @@
 %endif
 
     end
+
+%ifidn __OUTPUT_FORMAT__,elf
+section .note.GNU-stack noalloc noexec nowrite progbits
+%endif

Modified: silc-server/trunk/lib/silchttp/Makefile.am
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/lib/silchttp/Makefile.am?rev=286&op=diff
==============================================================================
--- silc-server/trunk/lib/silchttp/Makefile.am (original)
+++ silc-server/trunk/lib/silchttp/Makefile.am Sat Jul  5 19:07:40 2008
@@ -2,7 +2,7 @@
 # To make changes edit the ./lib/silchttp/Makefile.ad file in the source tree.
 
 # Source: ./lib/silchttp/Makefile.ad
-# Generated: Tue Apr 22 15:25:38 EEST 2008 by priikone
+# Generated: Sun Jun 22 18:32:16 EEST 2008 by priikone
 # Distribution: Server
 # License: 
 

Modified: silc-server/trunk/lib/silchttp/Makefile.in
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/lib/silchttp/Makefile.in?rev=286&op=diff
==============================================================================
--- silc-server/trunk/lib/silchttp/Makefile.in (original)
+++ silc-server/trunk/lib/silchttp/Makefile.in Sat Jul  5 19:07:40 2008
@@ -18,7 +18,7 @@
 # To make changes edit the ./lib/silchttp/Makefile.ad file in the source tree.
 
 # Source: ./lib/silchttp/Makefile.ad
-# Generated: Tue Apr 22 15:25:38 EEST 2008 by priikone
+# Generated: Sun Jun 22 18:32:16 EEST 2008 by priikone
 # Distribution: Server
 # License: 
 

Modified: silc-server/trunk/lib/silcmath/Makefile.am
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/lib/silcmath/Makefile.am?rev=286&op=diff
==============================================================================
--- silc-server/trunk/lib/silcmath/Makefile.am (original)
+++ silc-server/trunk/lib/silcmath/Makefile.am Sat Jul  5 19:07:40 2008
@@ -2,7 +2,7 @@
 # To make changes edit the ./lib/silcmath/Makefile.ad file in the source tree.
 
 # Source: ./lib/silcmath/Makefile.ad
-# Generated: Tue Apr 22 15:25:37 EEST 2008 by priikone
+# Generated: Sun Jun 22 18:32:15 EEST 2008 by priikone
 # Distribution: Server
 # License: 
 

Modified: silc-server/trunk/lib/silcmath/Makefile.in
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/lib/silcmath/Makefile.in?rev=286&op=diff
==============================================================================
--- silc-server/trunk/lib/silcmath/Makefile.in (original)
+++ silc-server/trunk/lib/silcmath/Makefile.in Sat Jul  5 19:07:40 2008
@@ -18,7 +18,7 @@
 # To make changes edit the ./lib/silcmath/Makefile.ad file in the source tree.
 
 # Source: ./lib/silcmath/Makefile.ad
-# Generated: Tue Apr 22 15:25:37 EEST 2008 by priikone
+# Generated: Sun Jun 22 18:32:15 EEST 2008 by priikone
 # Distribution: Server
 # License: 
 

Modified: silc-server/trunk/lib/silcske/Makefile.am
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/lib/silcske/Makefile.am?rev=286&op=diff
==============================================================================
--- silc-server/trunk/lib/silcske/Makefile.am (original)
+++ silc-server/trunk/lib/silcske/Makefile.am Sat Jul  5 19:07:40 2008
@@ -2,7 +2,7 @@
 # To make changes edit the ./lib/silcske/Makefile.ad file in the source tree.
 
 # Source: ./lib/silcske/Makefile.ad
-# Generated: Tue Apr 22 15:25:37 EEST 2008 by priikone
+# Generated: Sun Jun 22 18:32:15 EEST 2008 by priikone
 # Distribution: Server
 # License: 
 

Modified: silc-server/trunk/lib/silcske/Makefile.in
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/lib/silcske/Makefile.in?rev=286&op=diff
==============================================================================
--- silc-server/trunk/lib/silcske/Makefile.in (original)
+++ silc-server/trunk/lib/silcske/Makefile.in Sat Jul  5 19:07:40 2008
@@ -18,7 +18,7 @@
 # To make changes edit the ./lib/silcske/Makefile.ad file in the source tree.
 
 # Source: ./lib/silcske/Makefile.ad
-# Generated: Tue Apr 22 15:25:37 EEST 2008 by priikone
+# Generated: Sun Jun 22 18:32:15 EEST 2008 by priikone
 # Distribution: Server
 # License: 
 

Modified: silc-server/trunk/lib/silcskr/Makefile.am
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/lib/silcskr/Makefile.am?rev=286&op=diff
==============================================================================
--- silc-server/trunk/lib/silcskr/Makefile.am (original)
+++ silc-server/trunk/lib/silcskr/Makefile.am Sat Jul  5 19:07:40 2008
@@ -2,7 +2,7 @@
 # To make changes edit the ./lib/silcskr/Makefile.ad file in the source tree.
 
 # Source: ./lib/silcskr/Makefile.ad
-# Generated: Tue Apr 22 15:25:37 EEST 2008 by priikone
+# Generated: Sun Jun 22 18:32:15 EEST 2008 by priikone
 # Distribution: Server
 # License: 
 

Modified: silc-server/trunk/lib/silcskr/Makefile.in
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/lib/silcskr/Makefile.in?rev=286&op=diff
==============================================================================
--- silc-server/trunk/lib/silcskr/Makefile.in (original)
+++ silc-server/trunk/lib/silcskr/Makefile.in Sat Jul  5 19:07:40 2008
@@ -18,7 +18,7 @@
 # To make changes edit the ./lib/silcskr/Makefile.ad file in the source tree.
 
 # Source: ./lib/silcskr/Makefile.ad
-# Generated: Tue Apr 22 15:25:37 EEST 2008 by priikone
+# Generated: Sun Jun 22 18:32:15 EEST 2008 by priikone
 # Distribution: Server
 # License: 
 

Modified: silc-server/trunk/lib/silcutil/Makefile.am
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/lib/silcutil/Makefile.am?rev=286&op=diff
==============================================================================
--- silc-server/trunk/lib/silcutil/Makefile.am (original)
+++ silc-server/trunk/lib/silcutil/Makefile.am Sat Jul  5 19:07:40 2008
@@ -2,7 +2,7 @@
 # To make changes edit the ./lib/silcutil/Makefile.ad file in the source tree.
 
 # Source: ./lib/silcutil/Makefile.ad
-# Generated: Tue Apr 22 15:25:38 EEST 2008 by priikone
+# Generated: Sun Jun 22 18:32:16 EEST 2008 by priikone
 # Distribution: Server
 # License: 
 

Modified: silc-server/trunk/lib/silcutil/Makefile.in
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/lib/silcutil/Makefile.in?rev=286&op=diff
==============================================================================
--- silc-server/trunk/lib/silcutil/Makefile.in (original)
+++ silc-server/trunk/lib/silcutil/Makefile.in Sat Jul  5 19:07:40 2008
@@ -18,7 +18,7 @@
 # To make changes edit the ./lib/silcutil/Makefile.ad file in the source tree.
 
 # Source: ./lib/silcutil/Makefile.ad
-# Generated: Tue Apr 22 15:25:38 EEST 2008 by priikone
+# Generated: Sun Jun 22 18:32:16 EEST 2008 by priikone
 # Distribution: Server
 # License: 
 

Modified: silc-server/trunk/lib/silcutil/silcbuffmt.c
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/lib/silcutil/silcbuffmt.c?rev=286&op=diff
==============================================================================
--- silc-server/trunk/lib/silcutil/silcbuffmt.c (original)
+++ silc-server/trunk/lib/silcutil/silcbuffmt.c Sat Jul  5 19:07:40 2008
@@ -365,7 +365,8 @@
 	UNFORMAT_HAS_SPACE(src, len2);
 	if (silc_likely(len2 && x)) {
 	  *x = silc_scalloc(stack, len2 + 1, sizeof(unsigned char));
-	  memcpy(*x, src->data, len2);
+	  if (*x)
+	    memcpy(*x, src->data, len2);
 	}
 	silc_buffer_pull(src, len2);
 	break;
@@ -478,7 +479,8 @@
 	UNFORMAT_HAS_SPACE(src, len2);
 	if (silc_likely(x && len2)) {
 	  *x = silc_scalloc(stack, len2 + 1, sizeof(unsigned char));
-	  memcpy(*x, src->data, len2);
+	  if (*x)
+	    memcpy(*x, src->data, len2);
 	}
 	silc_buffer_pull(src, len2);
 	break;
@@ -493,7 +495,8 @@
 	UNFORMAT_HAS_SPACE(src, len2);
 	if (silc_likely(x && len2)) {
 	  *x = silc_scalloc(stack, len2 + 1, sizeof(unsigned char));
-	  memcpy(*x, src->data, len2);
+	  if (*x)
+	    memcpy(*x, src->data, len2);
 	}
 	silc_buffer_pull(src, len2);
 	break;
@@ -521,7 +524,8 @@
 	UNFORMAT_HAS_SPACE(src, len2);
 	if (silc_likely(x && len2)) {
 	  *x = silc_scalloc(stack, len2 + 1, sizeof(unsigned char));
-	  memcpy(*x, src->data, len2);
+	  if (*x)
+	    memcpy(*x, src->data, len2);
 	}
 	silc_buffer_pull(src, len2);
 	break;
@@ -571,7 +575,8 @@
 	  *len3 = len2;
 	if (x && len2) {
 	  *x = silc_scalloc(stack, len2 + 1, sizeof(unsigned char));
-	  memcpy(*x, src->data, len2);
+	  if (*x)
+	    memcpy(*x, src->data, len2);
 	}
 	silc_buffer_pull(src, len2);
 	break;
@@ -589,7 +594,8 @@
 	  *len3 = len2;
 	if (x && len2) {
 	  *x = silc_scalloc(stack, len2 + 1, sizeof(unsigned char));
-	  memcpy(*x, src->data, len2);
+	  if (*x)
+	    memcpy(*x, src->data, len2);
 	}
 	silc_buffer_pull(src, len2);
 	break;
@@ -630,9 +636,10 @@
 	SILC_GET32_MSB(len2, src->data);
 	silc_buffer_pull(src, 4);
 	UNFORMAT_HAS_SPACE(src, len2);
-	silc_buffer_sformat(stack, x,
-			    SILC_STR_DATA(src->data, len2),
-			    SILC_STR_END);
+	if (silc_buffer_sformat(stack, x,
+				SILC_STR_DATA(src->data, len2),
+				SILC_STR_END) < 0)
+	  goto fail;
 	silc_buffer_pull(src, len2);
       }
       break;

Modified: silc-server/trunk/lib/silcutil/silcutil.c
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/lib/silcutil/silcutil.c?rev=286&op=diff
==============================================================================
--- silc-server/trunk/lib/silcutil/silcutil.c (original)
+++ silc-server/trunk/lib/silcutil/silcutil.c Sat Jul  5 19:07:40 2008
@@ -119,8 +119,10 @@
   if (!user && !fqdn)
     return 0;
 
-  memset(user, 0, user_size);
-  memset(fqdn, 0, fqdn_size);
+  if (user)
+    memset(user, 0, user_size);
+  if (user)
+    memset(fqdn, 0, fqdn_size);
 
   if (!string)
     return 0;
@@ -469,7 +471,7 @@
 {
   unsigned char *fingerprint, *cp;
   unsigned int len, blocks, i;
-  
+
   if (!data || !data_len)
     return NULL;
 
@@ -484,7 +486,7 @@
   cp = fingerprint = silc_calloc(len, sizeof(*fingerprint));
   if (!cp)
     return NULL;
-  
+
   for (i = 0; i < data_len; i++) {
     silc_snprintf(cp, len, "%02X", data[i]);
     cp += 2;
@@ -497,7 +499,7 @@
   }
   i--;
   if ((i + 1) % 10 == 0)
-    *(--cp) = '\0';  
+    *(--cp) = '\0';
   if ((i + 1) % 2 == 0)
     *(--cp) = '\0';
 

Modified: silc-server/trunk/lib/silcutil/unix/silcunixnet.c
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/lib/silcutil/unix/silcunixnet.c?rev=286&op=diff
==============================================================================
--- silc-server/trunk/lib/silcutil/unix/silcunixnet.c (original)
+++ silc-server/trunk/lib/silcutil/unix/silcunixnet.c Sat Jul  5 19:07:40 2008
@@ -701,6 +701,9 @@
       silc_async_free(conn->op);
   }
 
+  if (conn->sock && conn->status != SILC_NET_OK)
+    silc_net_close_connection(conn->sock);
+
   return SILC_FSM_FINISH;
 }
 




More information about the Pkg-silc-commits mailing list