You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
In a directory that has a recursive symbolic link, the duckscript glob_array command performs a cyclic recursion.
To Reproduce
Create a symbolic link that points at its parent directory
Use glob_array
Commentary
This is a bug in glob, not duckscript, but duckscript isn't completely off the hook because the glob crate has had an issue open since 2017 (rust-lang/glob#62), and a PR to fix it, but the crate hasn't been updated in several years. There are other glob-like crates in the ecosystem now with better options, including ones to ignore symlinks. It might be worthwhile migrating to one of them.
The text was updated successfully, but these errors were encountered:
globset unfortunately only provides glob matching. It does not also provide directory traversal, which glob does. The ignore crate does directory traversal and has a very complicated API, but does support glob matching too (and relies on globset). There is also globwalk, which is built on top of ignore and has a simpler API.
The glob situation in Rust is not so great. I built globset specifically to be able to efficiently handle gitignore files, but kind of just stopped there and I haven't gotten a chance to revisit the situation. (Which I still hope to do.)
Anything that's built on walkdir (or ignore) should not have the cyclic symlink problem. It has specific logic for detecting loops.
Describe The Bug
In a directory that has a recursive symbolic link, the duckscript
glob_array
command performs a cyclic recursion.To Reproduce
glob_array
Commentary
This is a bug in
glob
, notduckscript
, butduckscript
isn't completely off the hook because theglob
crate has had an issue open since 2017 (rust-lang/glob#62), and a PR to fix it, but the crate hasn't been updated in several years. There are other glob-like crates in the ecosystem now with better options, including ones to ignore symlinks. It might be worthwhile migrating to one of them.The text was updated successfully, but these errors were encountered: