do_path_expand: Avoid non-readable directories. #3273

Closes https://github.com/neovim/neovim/issues/3164
Closes https://github.com/neovim/neovim/issues/3194
Closes https://github.com/neovim/neovim/issues/3221

Helped-by: @splinterofchaos
Helped-by: @oni-link
Helped-by: @justinmk
This commit is contained in:
Felipe Morales 2015-08-30 18:14:26 -03:00 committed by Justin M. Keyes
parent c51864b826
commit 77e416b711
2 changed files with 4 additions and 4 deletions

View File

@ -421,10 +421,10 @@ bool os_scandir(Directory *dir, const char *path)
FUNC_ATTR_NONNULL_ALL
{
int r = uv_fs_scandir(&fs_loop, &dir->request, path, 0, NULL);
if (r <= 0) {
if (r < 0) {
os_closedir(dir);
}
return r > 0;
return r >= 0;
}
/// Increments the directory pointer.

View File

@ -612,8 +612,8 @@ static size_t do_path_expand(garray_T *gap, const char_u *path,
*s = NUL;
Directory dir;
if (os_scandir(&dir, *buf == NUL ? "." : (char *)buf)
|| os_isdir(*buf == NUL ? (char_u *)"." : (char_u *)buf)) {
char *dirpath = (*buf == NUL ? "." : (char *)buf);
if (os_file_is_readable(dirpath) && os_scandir(&dir, dirpath)) {
// Find all matching entries.
char_u *name;
scandir_next_with_dots(NULL /* initialize */);