From: Pekka Riikonen Date: Thu, 29 Jun 2006 21:18:00 +0000 (+0000) Subject: Sign payload buffer fixes. X-Git-Tag: silc.client.1.1.beta1~306 X-Git-Url: http://git.silcnet.org/gitweb/?a=commitdiff_plain;h=f1640c58e892917ce912fc541b5239a32226530f;p=silc.git Sign payload buffer fixes. --- diff --git a/lib/silccore/silcmessage.c b/lib/silccore/silcmessage.c index 67be2e14..15ab266e 100644 --- a/lib/silccore/silcmessage.c +++ b/lib/silccore/silcmessage.c @@ -642,26 +642,25 @@ int silc_message_signed_verify(SilcMessageSignedPayload sig, SilcHash hash) { int ret = SILC_AUTH_FAILED; - SilcBuffer sign; - SilcBufferStruct tmp; + SilcBuffer sign, tmp; if (!sig || !remote_public_key || !hash) return ret; /* Generate the signature verification data, the Message Payload */ - memset(&tmp, 0, sizeof(tmp)); - silc_buffer_format(&tmp, + tmp = silc_buffer_alloc_size(6 + message->data_len + message->pad_len); + silc_buffer_format(tmp, SILC_STR_UI_SHORT(message->flags), SILC_STR_UI_SHORT(message->data_len), SILC_STR_UI_XNSTRING(message->data, message->data_len), SILC_STR_UI_SHORT(message->pad_len), SILC_STR_UI_XNSTRING(message->pad, message->pad_len), SILC_STR_END); - sign = silc_message_signed_encode_data(tmp.data, silc_buffer_len(&tmp), + sign = silc_message_signed_encode_data(tmp->data, silc_buffer_len(tmp), sig->pk_data, sig->pk_len, sig->pk_type); - silc_buffer_clear(&tmp); - silc_free(silc_buffer_steal(&tmp, NULL)); + silc_buffer_clear(tmp); + silc_buffer_free(tmp); if (!sign) return ret; diff --git a/lib/silccore/silcmessage.h b/lib/silccore/silcmessage.h index 356a2ad8..3ffa7ba1 100644 --- a/lib/silccore/silcmessage.h +++ b/lib/silccore/silcmessage.h @@ -97,7 +97,8 @@ typedef SilcUInt16 SilcMessageFlags; #define SILC_MESSAGE_FLAG_DATA 0x0080 /* MIME object */ #define SILC_MESSAGE_FLAG_UTF8 0x0100 /* UTF-8 string */ #define SILC_MESSAGE_FLAG_ACK 0x0200 /* ACK messages */ -#define SILC_MESSAGE_FLAG_RESERVED 0x0400 /* to 0x1000 */ +#define SILC_MESSAGE_FLAG_STOP 0x0400 /* Stop indication */ +#define SILC_MESSAGE_FLAG_RESERVED 0x0800 /* to 0x1000 */ #define SILC_MESSAGE_FLAG_PRIVATE 0x2000 /* to 0x8000 */ /***/