SKE: support for simplified key exchange
[silc.git] / lib / silcske / payload.c
index ad45ea8d74a1d14410310a722affb97e80a36506..9c5451be24b166cb87312be6790d1deddb3a0da4 100644 (file)
@@ -4,7 +4,7 @@
 
   Author: Pekka Riikonen <priikone@silcnet.org>
 
-  Copyright (C) 2000 - 2005 Pekka Riikonen
+  Copyright (C) 2000 - 2014 Pekka Riikonen
 
   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -156,6 +156,15 @@ silc_ske_payload_start_decode(SilcSKE ske,
     goto err;
   }
 
+  if (payload->len != 4 + payload->cookie_len + payload->version_len +
+      payload->ke_grp_len + payload->pkcs_alg_len + payload->enc_alg_len +
+      payload->hash_alg_len + payload->hmac_alg_len + payload->comp_alg_len +
+      (2 * 7)) {
+    SILC_LOG_ERROR(("Invalid fields in KE Start Payload"));
+    status = SILC_SKE_STATUS_BAD_PAYLOAD;
+    goto err;
+  }
+
   /* Return the payload */
   *return_payload = payload;