@@ -109,9 +109,10 @@ const {
109109 parseFileMode,
110110 validateBuffer,
111111 validateInteger,
112- validateInt32,
113- validateUint32
112+ validateInt32
114113} = require ( 'internal/validators' ) ;
114+ // 2 ** 32 - 1
115+ const kMaxUserId = 4294967295 ;
115116
116117let truncateWarn = true ;
117118let fs ;
@@ -1153,26 +1154,26 @@ function chmodSync(path, mode) {
11531154function lchown ( path , uid , gid , callback ) {
11541155 callback = makeCallback ( callback ) ;
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 req = new FSReqCallback ( ) ;
11591160 req . oncomplete = callback ;
11601161 binding . lchown ( pathModule . toNamespacedPath ( path ) , uid , gid , req ) ;
11611162}
11621163
11631164function lchownSync ( path , uid , gid ) {
11641165 path = getValidatedPath ( path ) ;
1165- validateUint32 ( uid , 'uid' ) ;
1166- validateUint32 ( gid , 'gid' ) ;
1166+ validateInteger ( uid , 'uid' , - 1 , kMaxUserId ) ;
1167+ validateInteger ( gid , 'gid' , - 1 , kMaxUserId ) ;
11671168 const ctx = { path } ;
11681169 binding . lchown ( pathModule . toNamespacedPath ( path ) , uid , gid , undefined , ctx ) ;
11691170 handleErrorFromBinding ( ctx ) ;
11701171}
11711172
11721173function fchown ( fd , uid , gid , callback ) {
11731174 validateInt32 ( fd , 'fd' , 0 ) ;
1174- validateUint32 ( uid , 'uid' ) ;
1175- validateUint32 ( gid , 'gid' ) ;
1175+ validateInteger ( uid , 'uid' , - 1 , kMaxUserId ) ;
1176+ validateInteger ( gid , 'gid' , - 1 , kMaxUserId ) ;
11761177
11771178 const req = new FSReqCallback ( ) ;
11781179 req . oncomplete = makeCallback ( callback ) ;
@@ -1181,8 +1182,8 @@ function fchown(fd, uid, gid, callback) {
11811182
11821183function fchownSync ( fd , uid , gid ) {
11831184 validateInt32 ( fd , 'fd' , 0 ) ;
1184- validateUint32 ( uid , 'uid' ) ;
1185- validateUint32 ( gid , 'gid' ) ;
1185+ validateInteger ( uid , 'uid' , - 1 , kMaxUserId ) ;
1186+ validateInteger ( gid , 'gid' , - 1 , kMaxUserId ) ;
11861187
11871188 const ctx = { } ;
11881189 binding . fchown ( fd , uid , gid , undefined , ctx ) ;
@@ -1192,8 +1193,8 @@ function fchownSync(fd, uid, gid) {
11921193function chown ( path , uid , gid , callback ) {
11931194 callback = makeCallback ( callback ) ;
11941195 path = getValidatedPath ( path ) ;
1195- validateUint32 ( uid , 'uid' ) ;
1196- validateUint32 ( gid , 'gid' ) ;
1196+ validateInteger ( uid , 'uid' , - 1 , kMaxUserId ) ;
1197+ validateInteger ( gid , 'gid' , - 1 , kMaxUserId ) ;
11971198
11981199 const req = new FSReqCallback ( ) ;
11991200 req . oncomplete = callback ;
@@ -1202,8 +1203,8 @@ function chown(path, uid, gid, callback) {
12021203
12031204function chownSync ( path , uid , gid ) {
12041205 path = getValidatedPath ( path ) ;
1205- validateUint32 ( uid , 'uid' ) ;
1206- validateUint32 ( gid , 'gid' ) ;
1206+ validateInteger ( uid , 'uid' , - 1 , kMaxUserId ) ;
1207+ validateInteger ( gid , 'gid' , - 1 , kMaxUserId ) ;
12071208 const ctx = { path } ;
12081209 binding . chown ( pathModule . toNamespacedPath ( path ) , uid , gid , undefined , ctx ) ;
12091210 handleErrorFromBinding ( ctx ) ;
0 commit comments