zip_extensions/audit/handlers/
path.rs1use std::path::PathBuf;
2
3use crate::audit::entry_audit_handler::EntryAuditHandler;
4use crate::audit::entry_view::EntryView;
5use crate::audit::report::{SuspiciousEntry, SuspiciousReason, ZipAuditReport};
6
7pub struct PathHandler;
12
13impl EntryAuditHandler for PathHandler {
14 fn visit(&mut self, view: &EntryView, report: &mut ZipAuditReport) {
15 if view.has_abs {
16 report.has_absolute_paths = true;
17 }
18 if view.has_parent_components {
19 report.has_parent_components = true;
20 }
21 if view.depth_hint > report.max_depth_hint {
22 report.max_depth_hint = view.depth_hint;
23 }
24 if view.invalid_utf8 {
25 report.suspicious_entries.push(SuspiciousEntry {
26 name: PathBuf::from(String::from_utf8_lossy(&view.name_raw).into_owned()),
27 reason: SuspiciousReason::InvalidUtf8,
28 });
29 }
30 }
31}