mirror of
https://github.com/google-gemini/gemini-cli.git
synced 2026-06-13 04:48:09 -07:00
fix(core): ensure global gemini dir resolution is crash-safe during plan validation
This commit is contained in:
@@ -2276,11 +2276,22 @@ export class Config implements McpContext, AgentLoopContext {
|
||||
} catch (e: unknown) {
|
||||
mkdirError = e;
|
||||
}
|
||||
let realPlansDir: string;
|
||||
try {
|
||||
realPlansDir = resolveToRealPath(plansDir);
|
||||
} catch {
|
||||
// Fallback to path.resolve if the directory doesn't exist yet (e.g. mkdirSync failed)
|
||||
// so that the security check can still be performed on the absolute path.
|
||||
realPlansDir = path.resolve(plansDir);
|
||||
}
|
||||
|
||||
const realPlansDir = resolveToRealPath(plansDir);
|
||||
const realProjectRoot = this.storage.getRealProjectRoot();
|
||||
const realGlobalGeminiDir = resolveToRealPath(Storage.getGlobalGeminiDir());
|
||||
|
||||
let realGlobalGeminiDir: string;
|
||||
try {
|
||||
realGlobalGeminiDir = resolveToRealPath(Storage.getGlobalGeminiDir());
|
||||
} catch {
|
||||
realGlobalGeminiDir = path.resolve(Storage.getGlobalGeminiDir());
|
||||
}
|
||||
if (
|
||||
!isSubpath(realProjectRoot, realPlansDir) &&
|
||||
!isSubpath(realGlobalGeminiDir, realPlansDir)
|
||||
|
||||
Reference in New Issue
Block a user