projects
/
silc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merged silc_1_1_branch to trunk.
[silc.git]
/
lib
/
silcutil
/
silcmime.c
diff --git
a/lib/silcutil/silcmime.c
b/lib/silcutil/silcmime.c
index f719e77961694509b9868e4dd8c4b966576315bd..c0817ec0f594d1eaed43c27d1f88fac673929116 100644
(file)
--- 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;
if (field && strstr(field, "multipart")) {
char b[1024];
SilcMime p;
+ unsigned int len;
mime->multiparts = silc_dlist_init();
if (!mime->multiparts)
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));
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));
if (strchr(b, '"'))
*strchr(b, '"') = '\0';
mime->multitype = silc_memdup(b, strlen(b));