Sign payload buffer fixes.
authorPekka Riikonen <priikone@silcnet.org>
Thu, 29 Jun 2006 21:18:00 +0000 (21:18 +0000)
committerPekka Riikonen <priikone@silcnet.org>
Thu, 29 Jun 2006 21:18:00 +0000 (21:18 +0000)
lib/silccore/silcmessage.c
lib/silccore/silcmessage.h

index 67be2e1476cc650c31a864085f36794d85bbcd58..15ab266efaa90c721a5392545b2e01f4e6eada4d 100644 (file)
@@ -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;
index 356a2ad81a742ca5785a9dce2258f2c6d68850f4..3ffa7ba12ffcac6cf7c563281ba7fa0f80d709ef 100644 (file)
@@ -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 */
 /***/