Validate access to derived host roots

This commit is contained in:
2026-11-09 21:20:02 +00:00
parent 367fe4120f
commit f0198f865d
4 changed files with 71 additions and 6 deletions

View File

@@ -17,23 +17,30 @@ func validateFilesystemContext(source Source, context *FilesystemContext, main p
}
return resolvedFilesystemContext{}, diagnostic
}
if diagnostic := validateResolvedFilesystemDirectories(resolved); diagnostic != nil {
if diagnostic := validateResolvedFilesystemContext(resolved); diagnostic != nil {
return resolvedFilesystemContext{}, diagnostic
}
return resolved, nil
}
func validateResolvedFilesystemContext(resolved resolvedFilesystemContext) *Diagnostic {
if diagnostic := validateResolvedFilesystemDirectories(resolved); diagnostic != nil {
return diagnostic
}
if resolved.native != nil {
return resolved, nil
return nil
}
root, err := os.OpenRoot(resolved.rootPath)
if err != nil {
value := globFilesystemDiagnostic(err, "configuration root could not be opened", Location{})
value.Primary = nil
return resolvedFilesystemContext{}, &value
return &value
}
if err := root.Close(); err != nil {
value := importDiagnostic(CodeImportRead, "configuration root could not be closed", nil)
return resolvedFilesystemContext{}, &value
return &value
}
return resolved, nil
return nil
}
func filesystemOptionDiagnostics(source Source, context *FilesystemContext) []Diagnostic {