Skip to content

Commit

Permalink
fs: make fs.access() flags read only
Browse files Browse the repository at this point in the history
These flags were defined as constants, but could be
overwritten when exported from fs. This commit exports
the flags as read only properties of fs.

PR-URL: #507
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
  • Loading branch information
JacksonTian authored and cjihrig committed Jan 21, 2015
1 parent 804e7aa commit 8b98096
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;

const 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 8b98096

Please sign in to comment.