{"record":{"id":"3b9618d903e5ccb7","repo":"t8y2/dbx","slug":"invalid-kerberos-file-path-w","errorCode":null,"errorMessage":"invalid Kerberos file path: %w","messagePattern":"invalid Kerberos file path: %w","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"agents/drivers/cassandra-go/kerberos.go","lineNumber":543,"sourceCode":"\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"invalid Kerberos credential cache path: %w\", err)\n\t}\n\treturn path, nil\n}\n\nfunc isWindowsDrivePath(value string) bool {\n\treturn len(value) >= 3 && ((value[0] >= 'A' && value[0] <= 'Z') || (value[0] >= 'a' && value[0] <= 'z')) &&\n\t\tvalue[1] == ':' && (value[2] == '\\\\' || value[2] == '/')\n}\n\nfunc normalizeKerberosFileReference(raw string) (string, error) {\n\tvalue := strings.TrimSpace(raw)\n\tif strings.HasPrefix(strings.ToUpper(value), \"FILE:\") {\n\t\tvalue = value[5:]\n\t}\n\tpath, err := normalizeLocalFilePath(value)\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"invalid Kerberos file path: %w\", err)\n\t}\n\treturn path, nil\n}\n\nfunc splitKerberosPrincipal(principal, configuredRealm, defaultRealm string) (string, string, error) {\n\tvalue := strings.TrimSpace(principal)\n\trealm := strings.TrimSpace(configuredRealm)\n\tif separator := strings.LastIndexByte(value, '@'); separator >= 0 {\n\t\trealm = value[separator+1:]\n\t\tvalue = value[:separator]\n\t}\n\tif value == \"\" {\n\t\treturn \"\", \"\", fmt.Errorf(\"Kerberos principal is empty\")\n\t}\n\tif realm == \"\" {\n\t\trealm = strings.TrimSpace(defaultRealm)\n\t}\n\tif realm == \"\" {","sourceCodeStart":525,"sourceCodeEnd":561,"githubUrl":"https://github.com/t8y2/dbx/blob/c0390bff16418b651f4728520d99adf8ce48829a/agents/drivers/cassandra-go/kerberos.go#L525-L561","documentation":"normalizeKerberosFileReference strips an optional FILE: prefix and validates the keytab (or other file) reference with normalizeLocalFilePath; validation failed. The keytab path handed to selectKeytabCredential is malformed or unusable as a local file path.","triggerScenarios":"selectKeytabCredential resolves the keytab path from config/JAAS (`keyTab=` option) and normalizeLocalFilePath rejects it — empty after FILE: strip, tilde unexpanded, relative path, or otherwise invalid per local-path rules.","commonSituations":"JAAS keyTab values using `~/` expecting expansion; `FILE:` with a missing path; Java-style file URLs; paths that only make sense on the JVM host, not where this Go driver runs.","solutions":["Provide an absolute expanded path, e.g. /etc/security/keytabs/cassandra.keytab.","If using a FILE: prefix, ensure a real path follows it.","Check the wrapped normalizeLocalFilePath error for the exact violation and fix the path.","Verify the keytab exists and is readable at that path (`klist -kt <path>`)."],"exampleFix":"// before\nkeyTab=\"FILE:\"\n// after\nkeyTab=\"FILE:/etc/security/keytabs/cassandra.keytab\"","handlingStrategy":"validation","validationCode":"func validateKeytabPath(raw string) error {\n\tp := strings.TrimSpace(raw)\n\tif strings.HasPrefix(strings.ToUpper(p), \"FILE:\") { p = p[5:] }\n\tif !filepath.IsAbs(p) { return fmt.Errorf(\"keytab path must be absolute: %q\", p) }\n\tif _, err := os.Stat(p); err != nil { return fmt.Errorf(\"keytab missing: %w\", err) }\n\treturn nil\n}","typeGuard":null,"tryCatchPattern":"if err := client.Finalize(); err != nil {\n\tif strings.Contains(err.Error(), \"invalid Kerberos file path\") {\n\t\tlog.Fatalf(\"check keyTab path in config/JAAS; must be a valid absolute path\")\n\t}\n\treturn err\n}","preventionTips":["Use absolute expanded keytab paths (/etc/security/keytabs/...).","Never leave FILE: prefix without a path.","Mount keytabs read-only into containers at fixed paths.","Run `klist -kt <path>` in deployment checks."],"tags":["kerberos","cassandra","keytab","path"],"backgroundTag":"invalid-file-path","analyzedSha":"c0390bff16418b651f4728520d99adf8ce48829a","analyzedAt":"2026-09-05T23:05:10.900Z","contentChangedAt":"2026-09-05T23:05:10.900Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}