X-Git-Url: http://git.silcnet.org/gitweb/?p=silc.git;a=blobdiff_plain;f=lib%2Fsilccore%2Fsilcargument.c;h=9c088b51cd67fb3b94311e7d193e3c26d8a4314b;hp=d492ed742576b6e4442812568c86d0634581f679;hb=413da0f8686910f5e627393157566ae729ca99c4;hpb=050bd9d9e5d843220f3f393a18ab5011622237b9 diff --git a/lib/silccore/silcargument.c b/lib/silccore/silcargument.c index d492ed74..9c088b51 100644 --- a/lib/silccore/silcargument.c +++ b/lib/silccore/silcargument.c @@ -71,15 +71,12 @@ SilcArgumentPayload silc_argument_payload_parse(const unsigned char *payload, SILC_STR_UI_SHORT(&p_len), SILC_STR_UI_CHAR(&arg_type), SILC_STR_END); - if (ret == -1) + if (ret == -1 || p_len > buffer.len - 3) goto err; - + newp->argv_lens[i] = p_len; newp->argv_types[i] = arg_type; - if (p_len > buffer.len - 3) - break; - /* Get argument data */ silc_buffer_pull(&buffer, 3); ret = silc_buffer_unformat(&buffer,