updates.
authorPekka Riikonen <priikone@silcnet.org>
Wed, 3 Apr 2002 10:05:46 +0000 (10:05 +0000)
committerPekka Riikonen <priikone@silcnet.org>
Wed, 3 Apr 2002 10:05:46 +0000 (10:05 +0000)
CHANGES
lib/silcske/payload.c
lib/silcske/silcske.c

diff --git a/CHANGES b/CHANGES
index dfa84daa4c51e4b761a4517509cf20ae4bbe02bc..7611885ccbe17f72fa3a9bfe78d30e6cddc473ee 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -4,6 +4,12 @@ Wed Apr  3 09:57:47 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
          of a socket connection.  The affected file is 
          lib/silcutil/silcsockconn.h.
 
+       * Added better error logging in rekey protocol.  Affected file
+         silcd/protocol.c.
+
+       * Do not check public key types in SKE during rekey.  Affected
+         file lib/silcske/payload.c.
+
 Tue Apr  2 14:55:06 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
 
        * Some client implementations quit network by doing first LEAVE
index 9bf2aa862e9346096871103aa27c50fa43c6941d..eafbd873330404b36fe711a529c9476671b556db 100644 (file)
@@ -265,7 +265,9 @@ SilcSKEStatus silc_ske_payload_ke_decode(SilcSKE ske,
     goto err;
   }
 
-  if (payload->pk_type == 0) {
+  if (ske->start_payload && 
+      (payload->pk_type < SILC_SKE_PK_TYPE_SILC || 
+       payload->pk_type > SILC_SKE_PK_TYPE_SPKI)) {
     status = SILC_SKE_STATUS_BAD_PAYLOAD;
     goto err;
   }
@@ -304,7 +306,7 @@ SilcSKEStatus silc_ske_payload_ke_decode(SilcSKE ske,
   }
 
   if (tot_len != len2) {
-    status = SILC_SKE_STATUS_BAD_PAYLOAD;
+    status = SILC_SKE_STATUS_BAD_PAYLOAD_LENGTH;
     goto err;
   }
   
index 56b38eb44ca9db766e974a0bcec903131e6db83e..4694104599e0ad2afe2586cf8cceb6c72bd3d190 100644 (file)
@@ -1100,6 +1100,9 @@ SilcSKEStatus silc_ske_abort(SilcSKE ske, SilcSKEStatus status)
 
   SILC_LOG_DEBUG(("Start"));
 
+  if (status > SILC_SKE_STATUS_INVALID_COOKIE)
+    status = SILC_SKE_STATUS_BAD_PAYLOAD;
+
   packet = silc_buffer_alloc(4);
   silc_buffer_pull_tail(packet, SILC_BUFFER_END(packet));
   silc_buffer_format(packet,