X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=lib%2Fsilcske%2Fpayload.c;h=835613ae030e35be58f81522d63eb8b8eff9eb24;hb=73583bd1ba302719fa687b8fa6b7619205ac4f33;hp=fe03125f78edd4b9236fed0cb015d86a4906c38d;hpb=5159d7204e05ab1fbefdc5fd351ec4da021ce577;p=silc.git diff --git a/lib/silcske/payload.c b/lib/silcske/payload.c index fe03125f..835613ae 100644 --- a/lib/silcske/payload.c +++ b/lib/silcske/payload.c @@ -196,7 +196,8 @@ SilcSKEStatus silc_ske_payload_ke_encode(SilcSKE ske, if (!payload) return SILC_SKE_STATUS_ERROR; - if (ske->start_payload->flags & SILC_SKE_SP_FLAG_MUTUAL && + if (ske->start_payload && + ske->start_payload->flags & SILC_SKE_SP_FLAG_MUTUAL && !payload->sign_data) { SILC_LOG_DEBUG(("Signature data is missing")); return SILC_SKE_STATUS_ERROR; @@ -273,7 +274,7 @@ SilcSKEStatus silc_ske_payload_ke_decode(SilcSKE ske, goto err; } - if (payload->pk_len < 5) { + if (payload->pk_type == 0) { status = SILC_SKE_STATUS_BAD_PAYLOAD; goto err; } @@ -302,7 +303,8 @@ SilcSKEStatus silc_ske_payload_ke_decode(SilcSKE ske, goto err; } - if ((ske->start_payload->flags & SILC_SKE_SP_FLAG_MUTUAL) && + if (ske->start_payload && + (ske->start_payload->flags & SILC_SKE_SP_FLAG_MUTUAL) && (payload->sign_len < 3 || !payload->sign_data)) { SILC_LOG_DEBUG(("The signature data is missing - both parties are " "required to do authentication"));