Merged silc_1_0_branch to trunk.
[silc.git] / lib / silccore / silcchannel.c
index 5c83bbb422801ac4b472c19a18409a4ac8bde860..aa31637823cda4b995bb29c60a0a453a7f62e099 100644 (file)
@@ -109,8 +109,9 @@ SilcDList silc_channel_payload_parse_list(const unsigned char *payload,
     if (ret == -1)
       goto err;
 
-    if ((newp->name_len < 1 || newp->name_len > buffer.len) ||
-       (newp->id_len < 1 || newp->id_len > buffer.len)) {
+    if ((newp->name_len < 1 || newp->name_len > buffer.len - 8) ||
+       (newp->id_len < 1 || newp->id_len > buffer.len - 8) ||
+       (newp->id_len + newp->name_len > buffer.len - 8)) {
       SILC_LOG_ERROR(("Incorrect channel payload in packet, packet dropped"));
       goto err;
     }