From 9ef42621e007086d545a356f5b3e4390b986668f Mon Sep 17 00:00:00 2001 From: Sergey Lyubka Date: Sun, 15 Dec 2013 10:12:19 +0000 Subject: [PATCH] Fixed wrong memset() in scan_directory() --- mongoose.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/mongoose.c b/mongoose.c index a96c38fb..fbbb4958 100644 --- a/mongoose.c +++ b/mongoose.c @@ -1858,9 +1858,10 @@ static int scan_directory(struct connection *conn, const char *dir, char path[MAX_PATH_SIZE]; struct dir_entry *p; struct dirent *dp; - int arr_size = 0, arr_ind = 0; + int arr_size = 0, arr_ind = 0, inc = 100; DIR *dirp; + *arr = NULL; if ((dirp = (opendir(dir))) == NULL) return 0; while ((dp = readdir(dirp)) != NULL) { @@ -1873,16 +1874,16 @@ static int scan_directory(struct connection *conn, const char *dir, mg_snprintf(path, sizeof(path), "%s%c%s", dir, '/', dp->d_name); // Resize the array if nesessary - if (arr_ind >= arr_size - 1) { + if (arr_ind >= arr_size) { if ((p = (struct dir_entry *) - realloc(*arr, (100 + arr_size) * sizeof(**arr))) != NULL) { - // Memset struct to zero, otherwize st_mtime will have garbage which + realloc(*arr, (inc + arr_size) * sizeof(**arr))) != NULL) { + // Memset new chunk to zero, otherwize st_mtime will have garbage which // can make strftime() segfault, see // http://code.google.com/p/mongoose/issues/detail?id=79 - memset(p + arr_size, 0, sizeof(**arr) * arr_size); + memset(p + arr_size, 0, sizeof(**arr) * inc); *arr = p; - arr_size += 100; + arr_size += inc; } }