Skip to content

Commit

Permalink
fs: make F_OK/R_OK/W_OK/X_OK not writable.
Browse files Browse the repository at this point in the history
change the fs.F_OK/R_OK/W_OK/X_OK out of fs.js will lead unexpect
exception. make these properties readonly.
  • Loading branch information
JacksonTian committed Jan 21, 2015
1 parent 5435cf2 commit c124fee
Showing 1 changed file with 8 additions and 10 deletions.
18 changes: 8 additions & 10 deletions lib/fs.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,6 @@ const O_RDWR = constants.O_RDWR || 0;
const O_SYNC = constants.O_SYNC || 0;
const O_TRUNC = constants.O_TRUNC || 0;
const O_WRONLY = constants.O_WRONLY || 0;
const F_OK = constants.F_OK || 0;
const R_OK = constants.R_OK || 0;
const W_OK = constants.W_OK || 0;
const X_OK = constants.X_OK || 0;

var isWindows = process.platform === 'win32';

Expand Down Expand Up @@ -164,18 +160,20 @@ fs.Stats.prototype.isSocket = function() {
return this._checkModeProperty(constants.S_IFSOCK);
};

fs.F_OK = F_OK;
fs.R_OK = R_OK;
fs.W_OK = W_OK;
fs.X_OK = X_OK;
// Don't allow mode to accidentally be overwritten.
['F_OK', 'R_OK', 'W_OK', 'X_OK'].forEach(function(key) {
Object.defineProperty(fs, key, {
enumerable: true, value: constants[key] || 0, writable: false
});
});

fs.access = function(path, mode, callback) {
if (!nullCheck(path, callback))
return;

if (typeof mode === 'function') {
callback = mode;
mode = F_OK;
mode = fs.F_OK;
} else if (typeof callback !== 'function') {
throw new TypeError('callback must be a function');
}
Expand All @@ -190,7 +188,7 @@ fs.accessSync = function(path, mode) {
nullCheck(path);

if (mode === undefined)
mode = F_OK;
mode = fs.F_OK;
else
mode = mode | 0;

Expand Down

0 comments on commit c124fee

Please sign in to comment.