@@ -102,9 +102,10 @@ const {
102102 parseMode,
103103 validateBuffer,
104104 validateInteger,
105- validateInt32,
106- validateUint32
105+ validateInt32
107106} = require ( 'internal/validators' ) ;
107+ // 2 ** 32 - 1
108+ const kMaxUserId = 4294967295 ;
108109
109110let truncateWarn = true ;
110111let fs ;
@@ -1124,26 +1125,26 @@ function chmodSync(path, mode) {
11241125function lchown ( path , uid , gid , callback ) {
11251126 callback = makeCallback ( callback ) ;
11261127 path = getValidatedPath ( path ) ;
1127- validateUint32 ( uid , 'uid' ) ;
1128- validateUint32 ( gid , 'gid' ) ;
1128+ validateInteger ( uid , 'uid' , - 1 , kMaxUserId ) ;
1129+ validateInteger ( gid , 'gid' , - 1 , kMaxUserId ) ;
11291130 const req = new FSReqCallback ( ) ;
11301131 req . oncomplete = callback ;
11311132 binding . lchown ( pathModule . toNamespacedPath ( path ) , uid , gid , req ) ;
11321133}
11331134
11341135function lchownSync ( path , uid , gid ) {
11351136 path = getValidatedPath ( path ) ;
1136- validateUint32 ( uid , 'uid' ) ;
1137- validateUint32 ( gid , 'gid' ) ;
1137+ validateInteger ( uid , 'uid' , - 1 , kMaxUserId ) ;
1138+ validateInteger ( gid , 'gid' , - 1 , kMaxUserId ) ;
11381139 const ctx = { path } ;
11391140 binding . lchown ( pathModule . toNamespacedPath ( path ) , uid , gid , undefined , ctx ) ;
11401141 handleErrorFromBinding ( ctx ) ;
11411142}
11421143
11431144function fchown ( fd , uid , gid , callback ) {
11441145 validateInt32 ( fd , 'fd' , 0 ) ;
1145- validateUint32 ( uid , 'uid' ) ;
1146- validateUint32 ( gid , 'gid' ) ;
1146+ validateInteger ( uid , 'uid' , - 1 , kMaxUserId ) ;
1147+ validateInteger ( gid , 'gid' , - 1 , kMaxUserId ) ;
11471148
11481149 const req = new FSReqCallback ( ) ;
11491150 req . oncomplete = makeCallback ( callback ) ;
@@ -1152,8 +1153,8 @@ function fchown(fd, uid, gid, callback) {
11521153
11531154function fchownSync ( fd , uid , gid ) {
11541155 validateInt32 ( fd , 'fd' , 0 ) ;
1155- validateUint32 ( uid , 'uid' ) ;
1156- validateUint32 ( gid , 'gid' ) ;
1156+ validateInteger ( uid , 'uid' , - 1 , kMaxUserId ) ;
1157+ validateInteger ( gid , 'gid' , - 1 , kMaxUserId ) ;
11571158
11581159 const ctx = { } ;
11591160 binding . fchown ( fd , uid , gid , undefined , ctx ) ;
@@ -1163,8 +1164,8 @@ function fchownSync(fd, uid, gid) {
11631164function chown ( path , uid , gid , callback ) {
11641165 callback = makeCallback ( callback ) ;
11651166 path = getValidatedPath ( path ) ;
1166- validateUint32 ( uid , 'uid' ) ;
1167- validateUint32 ( gid , 'gid' ) ;
1167+ validateInteger ( uid , 'uid' , - 1 , kMaxUserId ) ;
1168+ validateInteger ( gid , 'gid' , - 1 , kMaxUserId ) ;
11681169
11691170 const req = new FSReqCallback ( ) ;
11701171 req . oncomplete = callback ;
@@ -1173,8 +1174,8 @@ function chown(path, uid, gid, callback) {
11731174
11741175function chownSync ( path , uid , gid ) {
11751176 path = getValidatedPath ( path ) ;
1176- validateUint32 ( uid , 'uid' ) ;
1177- validateUint32 ( gid , 'gid' ) ;
1177+ validateInteger ( uid , 'uid' , - 1 , kMaxUserId ) ;
1178+ validateInteger ( gid , 'gid' , - 1 , kMaxUserId ) ;
11781179 const ctx = { path } ;
11791180 binding . chown ( pathModule . toNamespacedPath ( path ) , uid , gid , undefined , ctx ) ;
11801181 handleErrorFromBinding ( ctx ) ;
0 commit comments