fix(config): lazy-evaluate paths, fix TOCTOU, segment-boundary cloud detection

- Convert 4 module-level constants to lazy-evaluated functions to avoid
  import-time caching: openrouter-catalog, aggregator, disk-cache, auth-middleware
- Fix symlink-checks.ts to use ccsDir parameter instead of homedir/.ccs,
  remove unused homedir parameter from checkSettingsSymlinks()
- Replace TOCTOU existsSync+statSync with single statSync in try/catch
  for --config-dir validation in ccs.ts
- Switch detectCloudSyncPath from substring to path-segment-boundary matching
  to prevent false positives (e.g., megauser != MEGA, Dropbox-api != Dropbox)
- Add test for false-positive protection
This commit is contained in:
Tam Nhu Tran committed 2026-02-11 11:24:34 +07:00
1 parent 60d6bbd027
commit d5abc7d691
9 files changed
+55 -36

No files matched your search

+8 -2
View File
@@ -286,8 +286,14 @@ async function main(): Promise<void> {
process.exit(1);
}
if (!fs.existsSync(configDirValue) || !fs.statSync(configDirValue).isDirectory()) {
console.error(fail(`Config directory not found or not a directory: ${configDirValue}`));
try {
const stat = fs.statSync(configDirValue);
if (!stat.isDirectory()) {
console.error(fail(`Not a directory: ${configDirValue}`));
process.exit(1);
}
} catch {
console.error(fail(`Config directory not found: ${configDirValue}`));
console.error(info('Create the directory first, then copy your config files into it.'));
process.exit(1);
}