mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
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:
parent
c51864b826
commit
77e416b711
@ -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.
|
||||
|
@ -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 */);
|
||||
|
Loading…
Reference in New Issue
Block a user