X-Git-Url: http://git.silcnet.org/gitweb/?p=silc.git;a=blobdiff_plain;f=lib%2Fsilcutil%2Fsilcmime.c;h=c0817ec0f594d1eaed43c27d1f88fac673929116;hp=f719e77961694509b9868e4dd8c4b966576315bd;hb=52e57c880aba9c5e89f59d962eb9af75670b76e0;hpb=ae1482a76c29db9fdcd6ed6cf63d312a37a5cb01 diff --git a/lib/silcutil/silcmime.c b/lib/silcutil/silcmime.c index f719e779..c0817ec0 100644 --- a/lib/silcutil/silcmime.c +++ b/lib/silcutil/silcmime.c @@ -198,6 +198,7 @@ SilcMime silc_mime_decode(SilcMime mime, const unsigned char *data, if (field && strstr(field, "multipart")) { char b[1024]; SilcMime p; + unsigned int len; mime->multiparts = silc_dlist_init(); if (!mime->multiparts) @@ -213,7 +214,10 @@ SilcMime silc_mime_decode(SilcMime mime, const unsigned char *data, if (!strchr(field, ';')) goto err; memset(b, 0, sizeof(b)); - strncat(b, value, strchr(field, ';') - value); + len = (unsigned int)(strchr(field, ';') - value); + if (len > sizeof(b) - 1) + goto err; + strncpy(b, value, len); if (strchr(b, '"')) *strchr(b, '"') = '\0'; mime->multitype = silc_memdup(b, strlen(b));