fs: fix chown abort · nodejs/node@ad7e344
@@ -8,6 +8,9 @@ const kReadFileBufferLength = 512 * 1024;
88const kReadFileUnknownBufferLength = 64 * 1024;
99const kWriteFileMaxChunkSize = 512 * 1024;
101011+// 2 ** 32 - 1
12+const kMaxUserId = 4294967295;
13+1114const {
1215 ArrayPrototypePush,
1316 Error,
@@ -71,7 +74,6 @@ const {
7174 validateBoolean,
7275 validateBuffer,
7376 validateInteger,
74- validateUint32
7577} = require('internal/validators');
7678const pathModule = require('path');
7779const { promisify } = require('internal/util');
@@ -615,22 +617,22 @@ async function lchmod(path, mode) {
615617616618async function lchown(path, uid, gid) {
617619path = getValidatedPath(path);
618-validateUint32(uid, 'uid');
619-validateUint32(gid, 'gid');
620+validateInteger(uid, 'uid', -1, kMaxUserId);
621+validateInteger(gid, 'gid', -1, kMaxUserId);
620622return binding.lchown(pathModule.toNamespacedPath(path),
621623uid, gid, kUsePromises);
622624}
623625624626async 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);
627629return binding.fchown(handle.fd, uid, gid, kUsePromises);
628630}
629631630632async function chown(path, uid, gid) {
631633path = getValidatedPath(path);
632-validateUint32(uid, 'uid');
633-validateUint32(gid, 'gid');
634+validateInteger(uid, 'uid', -1, kMaxUserId);
635+validateInteger(gid, 'gid', -1, kMaxUserId);
634636return binding.chown(pathModule.toNamespacedPath(path),
635637uid, gid, kUsePromises);
636638}