From feddabd57bb90418df84fab26226d6cd65fb202b Mon Sep 17 00:00:00 2001 From: Daniel Chcouri <333222@gmail.com> Date: Wed, 14 May 2014 06:48:05 +0300 Subject: [PATCH] readdirSyncRecursive: follow symlinks only if we haven't read the destination yet Fix an issue whre readdirSyncRecursive will get into infinite loop for circular symlinks. Note: fix to readdirRecursive is also needed. --- lib/wrench.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lib/wrench.js b/lib/wrench.js index 01f5e95..2f00b6c 100644 --- a/lib/wrench.js +++ b/lib/wrench.js @@ -23,7 +23,14 @@ var fs = require("fs"), exports.readdirSyncRecursive = function(baseDir) { baseDir = baseDir.replace(/\/$/, ''); + var checkedInodes = {}; var readdirSyncRecursive = function(baseDir) { + var inode = fs.statSync(baseDir).ino; + if (inode in checkedInodes) { + return []; + } + checkedInodes[inode] = true; + var files = [], curFiles, nextDirs, -- 2.39.5