perf: Quick filter for paths that contain "/../" or "/./" or start with "./" or "../"

This commit is contained in:
Chris Hennick 2024-05-03 14:59:35 -07:00
parent 0fe12b2ec9
commit 2adbbccb82
No known key found for this signature in database
GPG key ID: DA47AABA4961C509

View file

@ -220,9 +220,12 @@ pub(crate) fn path_to_string<T: AsRef<Path>>(path: T) -> String {
let mut maybe_original = None;
if let Some(original) = path.as_ref().to_str() {
if (MAIN_SEPARATOR == '/' || !original.contains(MAIN_SEPARATOR))
&& !original.ends_with('.')
&& !original.ends_with('.')
&& !original.starts_with(['.', MAIN_SEPARATOR])
&& !original.starts_with(['.', '.', MAIN_SEPARATOR])
&& !original.contains([MAIN_SEPARATOR, MAIN_SEPARATOR])
&& !original.contains(['.', MAIN_SEPARATOR]) {
&& !original.contains([MAIN_SEPARATOR, '.', MAIN_SEPARATOR])
&& !original.contains([MAIN_SEPARATOR, '.', '.', MAIN_SEPARATOR]){
if original.starts_with(MAIN_SEPARATOR) {
maybe_original = Some(&original[1..]);
} else {