X-Git-Url: http://git.silcnet.org/gitweb/?p=silc.git;a=blobdiff_plain;f=lib%2Fsilccore%2Fsilcchannel.c;h=aa31637823cda4b995bb29c60a0a453a7f62e099;hp=5c83bbb422801ac4b472c19a18409a4ac8bde860;hb=413da0f8686910f5e627393157566ae729ca99c4;hpb=050bd9d9e5d843220f3f393a18ab5011622237b9 diff --git a/lib/silccore/silcchannel.c b/lib/silccore/silcchannel.c index 5c83bbb4..aa316378 100644 --- a/lib/silccore/silcchannel.c +++ b/lib/silccore/silcchannel.c @@ -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; }