updates.
[silc.git] / lib / silccore / silcprivate.c
index 48a31b65f72d1429b9eb008e43a6400c685b2cef..64c6f4d9c5a6caf1f9a83838a7d18c3330cbdcf8 100644 (file)
@@ -61,8 +61,10 @@ silc_private_message_payload_parse(SilcBuffer buffer, SilcCipher cipher)
                             SILC_STR_UI16_NSTRING_ALLOC(&new->message, 
                                                         &new->message_len),
                             SILC_STR_END);
-  if (ret == -1)
+  if (ret == -1) {
+    SILC_LOG_ERROR(("Incorrect private message payload"));
     goto err;
+  }
 
   if ((new->message_len < 1 || new->message_len > buffer->len)) {
     SILC_LOG_ERROR(("Incorrect private message payload in packet, "
@@ -88,7 +90,7 @@ SilcBuffer silc_private_message_payload_encode(uint16 flags,
 {
   int i;
   SilcBuffer buffer;
-  uint32 len, pad_len = 0;
+  uint32 len, pad_len = 0, block_len;
   unsigned char pad[SILC_PACKET_MAX_PADLEN];
 
   SILC_LOG_DEBUG(("Encoding private message payload"));
@@ -97,7 +99,8 @@ SilcBuffer silc_private_message_payload_encode(uint16 flags,
 
   if (cipher) {
     /* Calculate length of padding. */
-    pad_len = SILC_PACKET_PADLEN((len + 2));
+    block_len = silc_cipher_get_block_len(cipher);
+    pad_len = SILC_PACKET_PADLEN(len, block_len);
     len += pad_len;
 
     /* Generate padding */