graceful-fs
Advanced tools
Comparing version 1.1.2 to 1.1.3
@@ -213,1 +213,43 @@ // this keeps a queue of opened file descriptors, and will make | ||
} | ||
// https://github.com/isaacs/node-graceful-fs/issues/4 | ||
// Chown should not fail on einval or eperm if non-root. | ||
fs.chown = chownFix(fs.chown) | ||
fs.fchown = chownFix(fs.fchown) | ||
fs.lchown = chownFix(fs.lchown) | ||
fs.chownSync = chownFixSync(fs.chownSync) | ||
fs.fchownSync = chownFixSync(fs.fchownSync) | ||
fs.lchownSync = chownFixSync(fs.lchownSync) | ||
function chownFix (orig) { | ||
return function (target, uid, gid, cb) { | ||
return orig.call(fs, target, uid, gid, function (er, res) { | ||
if (chownErOk(er)) er = null | ||
cb(er, res) | ||
}) | ||
} | ||
} | ||
function chownFixSync (orig) { | ||
return function (target, uid, gid) { | ||
try { | ||
return orig.call(fs, target, uid, gid) | ||
} catch (er) { | ||
if (!chownErOk(er)) throw er | ||
} | ||
} | ||
} | ||
function chownErOk (er) { | ||
// if there's no getuid, or if getuid() is something other than 0, | ||
// and the error is EINVAL or EPERM, then just ignore it. | ||
// This specific case is a silent failure in cp, install, tar, | ||
// and most other unix tools that manage permissions. | ||
// When running as root, or if other types of errors are encountered, | ||
// then it's strict. | ||
if ((!process.getuid || process.getuid() !== 0) | ||
&& (er.code === "EINVAL" || er.code === "EPERM")) return true | ||
} |
@@ -5,3 +5,3 @@ { | ||
"description": "fs monkey-patching to avoid EMFILE and other problems", | ||
"version": "1.1.2", | ||
"version": "1.1.3", | ||
"repository": { | ||
@@ -13,3 +13,3 @@ "type": "git", | ||
"engines": { | ||
"node": "0.4 || 0.5 || 0.6" | ||
"node": ">=0.4.0" | ||
}, | ||
@@ -16,0 +16,0 @@ "dependencies": { |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
8005
211