Don't create a hole in the array of configs if there's a directory. Such a hole would be mistaken for the end of the array.
Signed-off-by: Michal 'vorner' Vaner <michal.va...@nic.cz> --- file.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/file.c b/file.c index 81047a4..6fc46bb 100644 --- a/file.c +++ b/file.c @@ -829,7 +829,7 @@ static char **uci_list_config_files(struct uci_context *ctx) { char **configs; glob_t globbuf; - int size, i; + int size, i, j, skipped; char *buf; char *dir; @@ -841,18 +841,22 @@ static char **uci_list_config_files(struct uci_context *ctx) } size = sizeof(char *) * (globbuf.gl_pathc + 1); + skipped = 0; for(i = 0; i < globbuf.gl_pathc; i++) { char *p; p = get_filename(globbuf.gl_pathv[i]); - if (!p) + if (!p) { + skipped++; continue; + } size += strlen(p) + 1; } - configs = uci_malloc(ctx, size); - buf = (char *) &configs[globbuf.gl_pathc + 1]; + configs = uci_malloc(ctx, size - skipped); + buf = (char *) &configs[globbuf.gl_pathc + 1 - skipped]; + j = 0; for(i = 0; i < globbuf.gl_pathc; i++) { char *p; @@ -863,7 +867,7 @@ static char **uci_list_config_files(struct uci_context *ctx) if (!uci_validate_package(p)) continue; - configs[i] = buf; + configs[j++] = buf; strcpy(buf, p); buf += strlen(buf) + 1; } -- 2.11.0.rc2 _______________________________________________ Lede-dev mailing list Lede-dev@lists.infradead.org http://lists.infradead.org/mailman/listinfo/lede-dev