Buffer overflow fixes.
authorPekka Riikonen <priikone@silcnet.org>
Fri, 11 Oct 2002 14:20:33 +0000 (14:20 +0000)
committerPekka Riikonen <priikone@silcnet.org>
Fri, 11 Oct 2002 14:20:33 +0000 (14:20 +0000)
lib/silcutil/silcconfig.c
lib/silcutil/silclog.c

index 692846f6e2b9fa08f01a2377520ea47d553bc404..f179dc1d03df1fa9c8d8aec63a99afe9a589e1c7 100644 (file)
@@ -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;
 }
index 8ce34c0970be2e5826597b055adc1301e896c094..14d31d545f519ca0caa9e7423b9094fdc7f16393 100644 (file)
@@ -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