Fixed buffer overflow.
authorPekka Riikonen <priikone@silcnet.org>
Tue, 3 Dec 2002 17:53:08 +0000 (17:53 +0000)
committerPekka Riikonen <priikone@silcnet.org>
Tue, 3 Dec 2002 17:53:08 +0000 (17:53 +0000)
lib/silccore/silcmessage.c

index 555e0cae24cfea5077c8cf958b2e7fc7e75d7c61..66bd1b9849f8999b2f7c959445d55b6f6971335c 100644 (file)
@@ -114,20 +114,20 @@ bool silc_message_payload_decrypt(unsigned char *data,
   SILC_GET16_MSB(len, dec + totlen);
   totlen += 2 + len;
   if (totlen + iv_len + mac_len + 2 > data_len) {
-    memset(dec, 0, data_len);
+    memset(dec, 0, data_len - iv_len - mac_len);
     silc_free(dec);
     return FALSE;
   }
   SILC_GET16_MSB(len, dec + totlen);
   totlen += 2 + len;
   if (totlen + iv_len + mac_len > data_len) {
-    memset(dec, 0, data_len);
+    memset(dec, 0, data_len - iv_len - mac_len);
     silc_free(dec);
     return FALSE;
   }
 
   memcpy(data, dec, totlen);
-  memset(dec, 0, data_len);
+  memset(dec, 0, data_len - iv_len - mac_len);
   silc_free(dec);
 
   return TRUE;