{"record":{"id":"a5ac7dbedd8e1f44","repo":"Kuberwastaken/claurst","slug":"absolute-windows-paths-not-allowed","errorCode":null,"errorMessage":"Absolute Windows paths not allowed: {:?}","messagePattern":"Absolute Windows paths not allowed: (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src-rust/crates/core/src/team_memory_sync.rs","lineNumber":101,"sourceCode":"    if path.contains('\\0') {\n        anyhow::bail!(\"Path contains null bytes: {:?}\", path);\n    }\n    let lower = path.to_ascii_lowercase();\n    if lower.contains(\"%2e\") || lower.contains(\"%2f\") {\n        anyhow::bail!(\"Path contains URL-encoded traversal sequences: {:?}\", path);\n    }\n    if path.contains('\\\\') {\n        anyhow::bail!(\"Path contains backslashes: {:?}\", path);\n    }\n    if path.starts_with('/') {\n        anyhow::bail!(\"Absolute Unix paths not allowed: {:?}\", path);\n    }\n    // Windows-style absolute path: e.g. \"C:\" or \"c:\"\n    if path.len() >= 2 {\n        let mut chars = path.chars();\n        let first = chars.next().unwrap();\n        if first.is_ascii_alphabetic() && chars.next() == Some(':') {\n            anyhow::bail!(\"Absolute Windows paths not allowed: {:?}\", path);\n        }\n    }\n    if path.split('/').any(|component| component == \"..\") {\n        anyhow::bail!(\"Path traversal not allowed: {:?}\", path);\n    }\n    Ok(())\n}\n\n// ---------------------------------------------------------------------------\n// TeamMemorySync\n// ---------------------------------------------------------------------------\n\n/// Drives pull and push against the claude.ai team-memory API.\npub struct TeamMemorySync {\n    /// Base URL of the API, e.g. `\"https://claude.ai\"`.\n    api_base: String,\n    /// Repo identifier sent as a query parameter.\n    repo: String,","sourceCodeStart":83,"sourceCodeEnd":119,"githubUrl":"https://github.com/Kuberwastaken/claurst/blob/b0637c97ec34144387cbf2f74f65df6d16a6cef1/src-rust/crates/core/src/team_memory_sync.rs#L83-L119","documentation":"Path-security guard in validate_memory_path: the key matches the Windows drive-absolute pattern — an ASCII letter followed by ':' (e.g. `C:`) — so it would resolve to a filesystem root outside the team-memory directory. The formatted value is the offending path.","triggerScenarios":"Thrown at src-rust/crates/core/src/team_memory_sync.rs:101 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Remove the drive prefix; keys must be relative paths under the memory directory","Re-create the entry with a platform-neutral relative key"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"b0637c97ec34144387cbf2f74f65df6d16a6cef1","analyzedAt":"2026-09-10T00:24:58.650Z","contentChangedAt":"2026-09-10T00:24:58.650Z","schemaVersion":2},"datasetVersion":"2026-09-17T15:17:12.973Z"}