@@ -106,9 +106,10 @@ const {
106106 parseMode,
107107 validateBuffer,
108108 validateInteger,
109- validateInt32,
110- validateUint32
109+ validateInt32
111110} = require ( 'internal/validators' ) ;
111+ // 2 ** 32 - 1
112+ const kMaxUserId = 4294967295 ;
112113
113114let truncateWarn = true ;
114115let fs ;
@@ -1144,26 +1145,26 @@ function chmodSync(path, mode) {
11441145function lchown ( path , uid , gid , callback ) {
11451146 callback = makeCallback ( callback ) ;
11461147 path = getValidatedPath ( path ) ;
1147- validateUint32 ( uid , 'uid' ) ;
1148- validateUint32 ( gid , 'gid' ) ;
1148+ validateInteger ( uid , 'uid' , - 1 , kMaxUserId ) ;
1149+ validateInteger ( gid , 'gid' , - 1 , kMaxUserId ) ;
11491150 const req = new FSReqCallback ( ) ;
11501151 req . oncomplete = callback ;
11511152 binding . lchown ( pathModule . toNamespacedPath ( path ) , uid , gid , req ) ;
11521153}
11531154
11541155function lchownSync ( path , uid , gid ) {
11551156 path = getValidatedPath ( path ) ;
1156- validateUint32 ( uid , 'uid' ) ;
1157- validateUint32 ( gid , 'gid' ) ;
1157+ validateInteger ( uid , 'uid' , - 1 , kMaxUserId ) ;
1158+ validateInteger ( gid , 'gid' , - 1 , kMaxUserId ) ;
11581159 const ctx = { path } ;
11591160 binding . lchown ( pathModule . toNamespacedPath ( path ) , uid , gid , undefined , ctx ) ;
11601161 handleErrorFromBinding ( ctx ) ;
11611162}
11621163
11631164function fchown ( fd , uid , gid , callback ) {
11641165 validateInt32 ( fd , 'fd' , 0 ) ;
1165- validateUint32 ( uid , 'uid' ) ;
1166- validateUint32 ( gid , 'gid' ) ;
1166+ validateInteger ( uid , 'uid' , - 1 , kMaxUserId ) ;
1167+ validateInteger ( gid , 'gid' , - 1 , kMaxUserId ) ;
11671168
11681169 const req = new FSReqCallback ( ) ;
11691170 req . oncomplete = makeCallback ( callback ) ;
@@ -1172,8 +1173,8 @@ function fchown(fd, uid, gid, callback) {
11721173
11731174function fchownSync ( fd , uid , gid ) {
11741175 validateInt32 ( fd , 'fd' , 0 ) ;
1175- validateUint32 ( uid , 'uid' ) ;
1176- validateUint32 ( gid , 'gid' ) ;
1176+ validateInteger ( uid , 'uid' , - 1 , kMaxUserId ) ;
1177+ validateInteger ( gid , 'gid' , - 1 , kMaxUserId ) ;
11771178
11781179 const ctx = { } ;
11791180 binding . fchown ( fd , uid , gid , undefined , ctx ) ;
@@ -1183,8 +1184,8 @@ function fchownSync(fd, uid, gid) {
11831184function chown ( path , uid , gid , callback ) {
11841185 callback = makeCallback ( callback ) ;
11851186 path = getValidatedPath ( path ) ;
1186- validateUint32 ( uid , 'uid' ) ;
1187- validateUint32 ( gid , 'gid' ) ;
1187+ validateInteger ( uid , 'uid' , - 1 , kMaxUserId ) ;
1188+ validateInteger ( gid , 'gid' , - 1 , kMaxUserId ) ;
11881189
11891190 const req = new FSReqCallback ( ) ;
11901191 req . oncomplete = callback ;
@@ -1193,8 +1194,8 @@ function chown(path, uid, gid, callback) {
11931194
11941195function chownSync ( path , uid , gid ) {
11951196 path = getValidatedPath ( path ) ;
1196- validateUint32 ( uid , 'uid' ) ;
1197- validateUint32 ( gid , 'gid' ) ;
1197+ validateInteger ( uid , 'uid' , - 1 , kMaxUserId ) ;
1198+ validateInteger ( gid , 'gid' , - 1 , kMaxUserId ) ;
11981199 const ctx = { path } ;
11991200 binding . chown ( pathModule . toNamespacedPath ( path ) , uid , gid , undefined , ctx ) ;
12001201 handleErrorFromBinding ( ctx ) ;
0 commit comments