@@ -106,9 +106,10 @@ const {
106
106
parseMode,
107
107
validateBuffer,
108
108
validateInteger,
109
- validateInt32,
110
- validateUint32
109
+ validateInt32
111
110
} = require ( 'internal/validators' ) ;
111
+ // 2 ** 32 - 1
112
+ const kMaxUserId = 4294967295 ;
112
113
113
114
let truncateWarn = true ;
114
115
let fs ;
@@ -1144,26 +1145,26 @@ function chmodSync(path, mode) {
1144
1145
function lchown ( path , uid , gid , callback ) {
1145
1146
callback = makeCallback ( callback ) ;
1146
1147
path = getValidatedPath ( path ) ;
1147
- validateUint32 ( uid , 'uid' ) ;
1148
- validateUint32 ( gid , 'gid' ) ;
1148
+ validateInteger ( uid , 'uid' , - 1 , kMaxUserId ) ;
1149
+ validateInteger ( gid , 'gid' , - 1 , kMaxUserId ) ;
1149
1150
const req = new FSReqCallback ( ) ;
1150
1151
req . oncomplete = callback ;
1151
1152
binding . lchown ( pathModule . toNamespacedPath ( path ) , uid , gid , req ) ;
1152
1153
}
1153
1154
1154
1155
function lchownSync ( path , uid , gid ) {
1155
1156
path = getValidatedPath ( path ) ;
1156
- validateUint32 ( uid , 'uid' ) ;
1157
- validateUint32 ( gid , 'gid' ) ;
1157
+ validateInteger ( uid , 'uid' , - 1 , kMaxUserId ) ;
1158
+ validateInteger ( gid , 'gid' , - 1 , kMaxUserId ) ;
1158
1159
const ctx = { path } ;
1159
1160
binding . lchown ( pathModule . toNamespacedPath ( path ) , uid , gid , undefined , ctx ) ;
1160
1161
handleErrorFromBinding ( ctx ) ;
1161
1162
}
1162
1163
1163
1164
function fchown ( fd , uid , gid , callback ) {
1164
1165
validateInt32 ( fd , 'fd' , 0 ) ;
1165
- validateUint32 ( uid , 'uid' ) ;
1166
- validateUint32 ( gid , 'gid' ) ;
1166
+ validateInteger ( uid , 'uid' , - 1 , kMaxUserId ) ;
1167
+ validateInteger ( gid , 'gid' , - 1 , kMaxUserId ) ;
1167
1168
1168
1169
const req = new FSReqCallback ( ) ;
1169
1170
req . oncomplete = makeCallback ( callback ) ;
@@ -1172,8 +1173,8 @@ function fchown(fd, uid, gid, callback) {
1172
1173
1173
1174
function fchownSync ( fd , uid , gid ) {
1174
1175
validateInt32 ( fd , 'fd' , 0 ) ;
1175
- validateUint32 ( uid , 'uid' ) ;
1176
- validateUint32 ( gid , 'gid' ) ;
1176
+ validateInteger ( uid , 'uid' , - 1 , kMaxUserId ) ;
1177
+ validateInteger ( gid , 'gid' , - 1 , kMaxUserId ) ;
1177
1178
1178
1179
const ctx = { } ;
1179
1180
binding . fchown ( fd , uid , gid , undefined , ctx ) ;
@@ -1183,8 +1184,8 @@ function fchownSync(fd, uid, gid) {
1183
1184
function chown ( path , uid , gid , callback ) {
1184
1185
callback = makeCallback ( callback ) ;
1185
1186
path = getValidatedPath ( path ) ;
1186
- validateUint32 ( uid , 'uid' ) ;
1187
- validateUint32 ( gid , 'gid' ) ;
1187
+ validateInteger ( uid , 'uid' , - 1 , kMaxUserId ) ;
1188
+ validateInteger ( gid , 'gid' , - 1 , kMaxUserId ) ;
1188
1189
1189
1190
const req = new FSReqCallback ( ) ;
1190
1191
req . oncomplete = callback ;
@@ -1193,8 +1194,8 @@ function chown(path, uid, gid, callback) {
1193
1194
1194
1195
function chownSync ( path , uid , gid ) {
1195
1196
path = getValidatedPath ( path ) ;
1196
- validateUint32 ( uid , 'uid' ) ;
1197
- validateUint32 ( gid , 'gid' ) ;
1197
+ validateInteger ( uid , 'uid' , - 1 , kMaxUserId ) ;
1198
+ validateInteger ( gid , 'gid' , - 1 , kMaxUserId ) ;
1198
1199
const ctx = { path } ;
1199
1200
binding . chown ( pathModule . toNamespacedPath ( path ) , uid , gid , undefined , ctx ) ;
1200
1201
handleErrorFromBinding ( ctx ) ;
0 commit comments