From: Pekka Riikonen Date: Fri, 3 Oct 2003 07:50:35 +0000 (+0000) Subject: Better checks for error conditions. X-Git-Tag: silc.toolkit.0.9.10~21 X-Git-Url: http://git.silcnet.org/gitweb/?a=commitdiff_plain;h=5c1c7d7cfdba3c01cfcb032056890faefe5c75ed;p=silc.git Better checks for error conditions. --- diff --git a/lib/silccore/silcmessage.c b/lib/silccore/silcmessage.c index 08ec1fef..2876ab56 100644 --- a/lib/silccore/silcmessage.c +++ b/lib/silccore/silcmessage.c @@ -78,7 +78,7 @@ bool silc_message_payload_decrypt(unsigned char *data, if (!private_message || (private_message && static_key)) iv_len = silc_cipher_get_block_len(cipher); - if (data_len < mac_len) + if (data_len <= (mac_len + iv_len)) return FALSE; if (check_mac) { @@ -514,7 +514,7 @@ silc_message_signed_payload_parse(const unsigned char *data, SILC_STR_UI16_NSTRING_ALLOC(&sig->sign_data, &sig->sign_len), SILC_STR_END); - if (ret == -1) { + if (ret == -1 || sig->sign_len > buffer.len - sig->pk_len - 2) { silc_message_signed_payload_free(sig); SILC_LOG_DEBUG(("Malformed SILC_MESSAGE_FLAG_SIGNED Payload")); return NULL;