{"record":{"id":"245b9c4d91d0caad","repo":"sigoden/dufs","slug":"failed-to-get-file-name-of","errorCode":null,"errorMessage":"Failed to get file name of `{}`","messagePattern":"Failed to get file name of `(.+?)`","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"src/utils.rs","lineNumber":37,"sourceCode":"    parts.join(\"/\")\n}\n\npub fn decode_uri(v: &str) -> Option<Cow<'_, str>> {\n    percent_encoding::percent_decode(v.as_bytes())\n        .decode_utf8()\n        .ok()\n}\n\npub fn get_file_name(path: &Path) -> &str {\n    path.file_name()\n        .and_then(|v| v.to_str())\n        .unwrap_or_default()\n}\n\npub fn try_get_file_name(path: &Path) -> Result<&str> {\n    path.file_name()\n        .and_then(|v| v.to_str())\n        .ok_or_else(|| anyhow!(\"Failed to get file name of `{}`\", path.display()))\n}\n\npub fn glob(pattern: &str, target: &str) -> bool {\n    let pat = match ::glob::Pattern::new(pattern) {\n        Ok(pat) => pat,\n        Err(_) => return false,\n    };\n    pat.matches(target)\n}\n\n// Load public certificate from file.\n#[cfg(feature = \"tls\")]\npub fn load_certs<T: AsRef<Path>>(file_name: T) -> Result<Vec<CertificateDer<'static>>> {\n    let mut certs = vec![];\n    for cert in CertificateDer::pem_file_iter(file_name.as_ref()).with_context(|| {\n        format!(\n            \"Failed to load cert file at `{}`\",\n            file_name.as_ref().display()","sourceCodeStart":19,"sourceCodeEnd":55,"githubUrl":"https://github.com/sigoden/dufs/blob/fe7fd564f80dfbac361c8e0589c3845638149d38/src/utils.rs#L19-L55","documentation":"Error from the try_get_file_name helper in utils.rs: `Path::file_name()` returned None or the final component is not valid UTF-8, so no usable file name can be extracted. It fires for paths like `..`, `/`, or paths ending in non-UTF-8 bytes, and propagates out of handle_zip_dir and handle_send_file when building zips or file responses.","triggerScenarios":"Thrown at src/utils.rs:37 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Ensure the requested path refers to an actual file with a valid name, not the root or `..`","Avoid non-UTF-8 file names in the served directory, or rename them","Use get_file_name (returns empty string) if a best-effort name is acceptable"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"fe7fd564f80dfbac361c8e0589c3845638149d38","analyzedAt":"2026-09-09T13:01:22.843Z","contentChangedAt":"2026-09-09T13:01:22.843Z","schemaVersion":2},"datasetVersion":"2026-09-16T04:17:20.429Z"}