From: Pekka Riikonen Date: Fri, 11 Oct 2002 14:20:33 +0000 (+0000) Subject: Buffer overflow fixes. X-Git-Tag: silc.client.0.9.6~32 X-Git-Url: http://git.silcnet.org/gitweb/?a=commitdiff_plain;h=369c5d0d48ccb333120206a42c96ef56e2ce6338;p=silc.git Buffer overflow fixes. --- diff --git a/lib/silcutil/silcconfig.c b/lib/silcutil/silcconfig.c index 692846f6..f179dc1d 100644 --- a/lib/silcutil/silcconfig.c +++ b/lib/silcutil/silcconfig.c @@ -336,13 +336,9 @@ char *silc_config_read_line(SilcConfigFile *file, SilcUInt32 line) found: if ((endbuf = strchr(p, '\n'))) { len = endbuf - p; - ret = silc_calloc(len, sizeof(*ret)); - strncpy(ret, p, len); - ret[len] = '\0'; - } - else { - ret = silc_calloc(strlen(p), sizeof(*ret)); - strcpy(ret, p); + ret = silc_memdup(p, len); + } else { + ret = silc_memdup(p, strlen(p)); } return ret; } diff --git a/lib/silcutil/silclog.c b/lib/silcutil/silclog.c index 8ce34c09..14d31d54 100644 --- a/lib/silcutil/silclog.c +++ b/lib/silcutil/silclog.c @@ -117,7 +117,8 @@ static void silc_log_checksize(SilcLog log) log->filename, oldfp)); return; } - if (size < log->maxsize) return; + if (size < log->maxsize) + return; /* It's too big */ fprintf(log->fp, "[%s] [%s] Cycling log file, over max " @@ -125,7 +126,8 @@ static void silc_log_checksize(SilcLog log) silc_get_time(0), log->typename, log->maxsize / 1024); fflush(log->fp); fclose(log->fp); - snprintf(newname, sizeof(newname), "%s.old", log->filename); + memset(newname, 0, sizeof(newname)); + snprintf(newname, sizeof(newname) - 1, "%s.old", log->filename); unlink(newname); /* I heard the following syscall may cause portability issues, but I don't