{"record":{"id":"d400708aaa116018","repo":"moonD4rk/HackBrowserData","slug":"engine-kind-s-is-not-exportable","errorCode":null,"errorMessage":"engine kind %s is not exportable","messagePattern":"engine kind (.+?) is not exportable","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"browser/keydump.go","lineNumber":187,"sourceCode":"func retrieversFromKeys(mk masterkey.MasterKeys) masterkey.Retrievers {\n\treturn masterkey.Retrievers{\n\t\tV10: maybeStaticRetriever(mk.V10),\n\t\tV11: maybeStaticRetriever(mk.V11),\n\t\tV20: maybeStaticRetriever(mk.V20),\n\t}\n}\n\n// dumpableKinds are the engine kinds a vault may carry; kindToDump/kindFromDump translate to and from\n// the wire form via BrowserKind.String(), keeping the vocabulary single-sourced in the types enum.\nvar dumpableKinds = []types.BrowserKind{types.Chromium, types.ChromiumYandex, types.ChromiumOpera}\n\nfunc kindToDump(k types.BrowserKind) (string, error) {\n\tfor _, dk := range dumpableKinds {\n\t\tif k == dk {\n\t\t\treturn k.String(), nil\n\t\t}\n\t}\n\treturn \"\", fmt.Errorf(\"engine kind %s is not exportable\", k)\n}\n\nfunc kindFromDump(s string) (types.BrowserKind, error) {\n\tfor _, k := range dumpableKinds {\n\t\tif k.String() == s {\n\t\t\treturn k, nil\n\t\t}\n\t}\n\treturn 0, fmt.Errorf(\"unknown engine kind %q\", s)\n}\n","sourceCodeStart":169,"sourceCodeEnd":198,"githubUrl":"https://github.com/moonD4rk/HackBrowserData/blob/0503d04d7a8d0379d060268a74f1b149e5a0aad5/browser/keydump.go#L169-L198","documentation":"kindToDump walks the dumpableKinds allowlist (Chromium, ChromiumYandex, ChromiumOpera) and the caller's BrowserKind is not in it, so no wire string can be produced. This guard fires when BuildDump is asked to serialize a vault whose engine kind the dump format simply does not cover — e.g. a Firefox vault reaching the Chromium-oriented dump path — not when the kind is merely unknown at parse time.","triggerScenarios":"Thrown at browser/keydump.go:187 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Filter vaults to dumpableKinds before calling BuildDump","Extend dumpableKinds and the wire vocabulary if the new kind must be exportable","Fix upstream filtering that let a non-Chromium browser kind reach kindToDump"],"exampleFix":null,"handlingStrategy":"type-guard","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"0503d04d7a8d0379d060268a74f1b149e5a0aad5","analyzedAt":"2026-09-06T13:38:28.707Z","contentChangedAt":"2026-09-06T13:38:28.707Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}