fs: fix chown abort · nodejs/node@ad7e344

@@ -8,6 +8,9 @@ const kReadFileBufferLength = 512 * 1024;

88

const kReadFileUnknownBufferLength = 64 * 1024;

99

const kWriteFileMaxChunkSize = 512 * 1024;

101011+

// 2 ** 32 - 1

12+

const kMaxUserId = 4294967295;

13+1114

const {

1215

ArrayPrototypePush,

1316

Error,

@@ -71,7 +74,6 @@ const {

7174

validateBoolean,

7275

validateBuffer,

7376

validateInteger,

74-

validateUint32

7577

} = require('internal/validators');

7678

const pathModule = require('path');

7779

const { promisify } = require('internal/util');

@@ -615,22 +617,22 @@ async function lchmod(path, mode) {

615617616618

async function lchown(path, uid, gid) {

617619

path = getValidatedPath(path);

618-

validateUint32(uid, 'uid');

619-

validateUint32(gid, 'gid');

620+

validateInteger(uid, 'uid', -1, kMaxUserId);

621+

validateInteger(gid, 'gid', -1, kMaxUserId);

620622

return binding.lchown(pathModule.toNamespacedPath(path),

621623

uid, gid, kUsePromises);

622624

}

623625624626

async function fchown(handle, uid, gid) {

625-

validateUint32(uid, 'uid');

626-

validateUint32(gid, 'gid');

627+

validateInteger(uid, 'uid', -1, kMaxUserId);

628+

validateInteger(gid, 'gid', -1, kMaxUserId);

627629

return binding.fchown(handle.fd, uid, gid, kUsePromises);

628630

}

629631630632

async function chown(path, uid, gid) {

631633

path = getValidatedPath(path);

632-

validateUint32(uid, 'uid');

633-

validateUint32(gid, 'gid');

634+

validateInteger(uid, 'uid', -1, kMaxUserId);

635+

validateInteger(gid, 'gid', -1, kMaxUserId);

634636

return binding.chown(pathModule.toNamespacedPath(path),

635637

uid, gid, kUsePromises);

636638

}