mirror of
https://github.com/safedep/pmg.git
synced 2026-08-03 07:24:09 +02:00
28 lines
912 B
Go
28 lines
912 B
Go
package sandbox
|
|||
|
|
|
||
|
|
// BuildAllOverrides maps every safe FS/exec violation in report to an
|
||
|
|
// OverrideSuggestion. Network violations are intentionally skipped because
|
||
|
|
// drivers do not classify network denials yet. Returns nil when the report is
|
||
|
|
// empty. Duplicates (same Kind+Target) are collapsed so callers do not have to
|
||
|
|
// de-dup against the existing overlay before passing the result through.
|
||
|
|
func BuildAllOverrides(report *ViolationReport) []OverrideSuggestion {
|
||
|
|
if report == nil || len(report.Violations) == 0 {
|
||
|
|
return nil
|
||
|
|
}
|
||
|
|
|
||
|
|
seen := make(map[OverrideSuggestion]struct{}, len(report.Violations))
|
||
|
|
out := make([]OverrideSuggestion, 0, len(report.Violations))
|
||
|
|
for i := range report.Violations {
|
||
|
|
sugg := overrideSuggestion(report.Violations[i])
|
||
|
|
if sugg == nil {
|
||
|
|
continue
|
||
|
|
}
|
||
|
|
if _, dup := seen[*sugg]; dup {
|
||
|
|
continue
|
||
|
|
}
|
||
|
|
seen[*sugg] = struct{}{}
|
||
|
|
out = append(out, *sugg)
|
||
|
|
}
|
||
|
|
return out
|
||
|
|
}
|