Commit 9ef42621 authored by Sergey Lyubka's avatar Sergey Lyubka

Fixed wrong memset() in scan_directory()

parent f5865886
...@@ -1858,9 +1858,10 @@ static int scan_directory(struct connection *conn, const char *dir, ...@@ -1858,9 +1858,10 @@ static int scan_directory(struct connection *conn, const char *dir,
char path[MAX_PATH_SIZE]; char path[MAX_PATH_SIZE];
struct dir_entry *p; struct dir_entry *p;
struct dirent *dp; struct dirent *dp;
int arr_size = 0, arr_ind = 0; int arr_size = 0, arr_ind = 0, inc = 100;
DIR *dirp; DIR *dirp;
*arr = NULL;
if ((dirp = (opendir(dir))) == NULL) return 0; if ((dirp = (opendir(dir))) == NULL) return 0;
while ((dp = readdir(dirp)) != NULL) { while ((dp = readdir(dirp)) != NULL) {
...@@ -1873,16 +1874,16 @@ static int scan_directory(struct connection *conn, const char *dir, ...@@ -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); mg_snprintf(path, sizeof(path), "%s%c%s", dir, '/', dp->d_name);
// Resize the array if nesessary // Resize the array if nesessary
if (arr_ind >= arr_size - 1) { if (arr_ind >= arr_size) {
if ((p = (struct dir_entry *) if ((p = (struct dir_entry *)
realloc(*arr, (100 + arr_size) * sizeof(**arr))) != NULL) { realloc(*arr, (inc + arr_size) * sizeof(**arr))) != NULL) {
// Memset struct to zero, otherwize st_mtime will have garbage which // Memset new chunk to zero, otherwize st_mtime will have garbage which
// can make strftime() segfault, see // can make strftime() segfault, see
// http://code.google.com/p/mongoose/issues/detail?id=79 // 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 = p;
arr_size += 100; arr_size += inc;
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment