owasp-amass/amass · error
failed to get absolute path for resolver file: %w
Error message
failed to get absolute path for resolver file: %w
What it means
When a resolver entry is not an IP, loadResolverSettings treats it as a file path of resolvers and resolves it to an absolute path via c.AbsPathFromConfigDir. If that helper errors, the failure is wrapped in this error.
Source
Thrown at config/resolvers.go:194
var resolversList []string
for _, r := range resolvers {
// Type assert the resolver to string
rStr, ok := r.(string)
if !ok {
return fmt.Errorf("resolver entry %v is not a string", r)
}
// Check if rStr is an IP address.
ip := net.ParseIP(rStr)
if ip != nil {
resolversList = append(resolversList, rStr)
continue
}
// rStr is not an IP address, so we assume it is a file path.
absPath, err := c.AbsPathFromConfigDir(rStr)
if err != nil {
return fmt.Errorf("failed to get absolute path for resolver file: %w", err)
}
fileResolvers, err := c.loadResolversFromFile(absPath)
if err != nil {
return fmt.Errorf("failed to load resolvers from file: %w", err)
}
resolversList = append(resolversList, fileResolvers...)
}
// Deduplicate the list of resolvers and assign to c.Resolvers.
resolverIPs := stringset.Deduplicate(resolversList)
if len(resolverIPs) == 0 {
return errors.New("no valid resolvers were found")
}
View on GitHub (pinned to 79299dce87)
Solutions
- Use an absolute path for the resolver file in the config (e.g. /etc/amass/resolvers.txt).
- Verify the config directory is correctly set/discoverable and that AbsPathFromConfigDir's wrapped cause (available via errors.Unwrap) is addressed.
- Ensure the referenced file exists relative to the config directory, or create it.
Example fix
// before resolvers: - "my-resolvers.txt" // after resolvers: - "/home/user/.config/amass/my-resolvers.txt"
Defensive patterns
Strategy: validation
Validate before calling
if !filepath.IsAbs(rStr) {
if _, err := os.Stat(filepath.Join(configDir, rStr)); err != nil {
return fmt.Errorf("resolver file %s not found in config dir", rStr)
}
} Try / catch
if err := loadResolverSettings(); err != nil {
if strings.Contains(err.Error(), "absolute path for resolver file") {
return fmt.Errorf("use absolute path for resolver file: %w", err)
}
} Prevention
- Use absolute paths for resolver files in configs
- Ensure the config directory exists and is discoverable
- Pre-check referenced files exist at startup
When it happens
Trigger: A resolver entry like 'resolvers.txt' whose relative path cannot be resolved against the config directory — e.g. the config dir is unknown/empty or path computation fails inside AbsPathFromConfigDir.
Common situations: Running with a custom config location the tool cannot anchor; referring to a resolver file by name that does not exist relative to the config dir; permissions preventing directory traversal.
Understand the failure class
Background: "File not found" and ENOENT errors: why libraries can't find a file that should exist — this error's family across 50 libraries.
Related errors
- failed to obtain the output directory
- failed to obtain the path for the output directory
- failed to load resolvers from file: %w
- failed to get absolute path: %v
- failed to obtain the Amass output directory
AI-assisted analysis of owasp-amass/amass@79299dce87 (2026-09-06).
Data as JSON: /api/errors/5d835dfc72bdfb83.
Report an issue: GitHub.