@@ -102,9 +102,10 @@ const {
102
102
parseMode,
103
103
validateBuffer,
104
104
validateInteger,
105
- validateInt32,
106
- validateUint32
105
+ validateInt32
107
106
} = require ( 'internal/validators' ) ;
107
+ // 2 ** 32 - 1
108
+ const kMaxUserId = 4294967295 ;
108
109
109
110
let truncateWarn = true ;
110
111
let fs ;
@@ -1124,26 +1125,26 @@ function chmodSync(path, mode) {
1124
1125
function lchown ( path , uid , gid , callback ) {
1125
1126
callback = makeCallback ( callback ) ;
1126
1127
path = getValidatedPath ( path ) ;
1127
- validateUint32 ( uid , 'uid' ) ;
1128
- validateUint32 ( gid , 'gid' ) ;
1128
+ validateInteger ( uid , 'uid' , - 1 , kMaxUserId ) ;
1129
+ validateInteger ( gid , 'gid' , - 1 , kMaxUserId ) ;
1129
1130
const req = new FSReqCallback ( ) ;
1130
1131
req . oncomplete = callback ;
1131
1132
binding . lchown ( pathModule . toNamespacedPath ( path ) , uid , gid , req ) ;
1132
1133
}
1133
1134
1134
1135
function lchownSync ( path , uid , gid ) {
1135
1136
path = getValidatedPath ( path ) ;
1136
- validateUint32 ( uid , 'uid' ) ;
1137
- validateUint32 ( gid , 'gid' ) ;
1137
+ validateInteger ( uid , 'uid' , - 1 , kMaxUserId ) ;
1138
+ validateInteger ( gid , 'gid' , - 1 , kMaxUserId ) ;
1138
1139
const ctx = { path } ;
1139
1140
binding . lchown ( pathModule . toNamespacedPath ( path ) , uid , gid , undefined , ctx ) ;
1140
1141
handleErrorFromBinding ( ctx ) ;
1141
1142
}
1142
1143
1143
1144
function fchown ( fd , uid , gid , callback ) {
1144
1145
validateInt32 ( fd , 'fd' , 0 ) ;
1145
- validateUint32 ( uid , 'uid' ) ;
1146
- validateUint32 ( gid , 'gid' ) ;
1146
+ validateInteger ( uid , 'uid' , - 1 , kMaxUserId ) ;
1147
+ validateInteger ( gid , 'gid' , - 1 , kMaxUserId ) ;
1147
1148
1148
1149
const req = new FSReqCallback ( ) ;
1149
1150
req . oncomplete = makeCallback ( callback ) ;
@@ -1152,8 +1153,8 @@ function fchown(fd, uid, gid, callback) {
1152
1153
1153
1154
function fchownSync ( fd , uid , gid ) {
1154
1155
validateInt32 ( fd , 'fd' , 0 ) ;
1155
- validateUint32 ( uid , 'uid' ) ;
1156
- validateUint32 ( gid , 'gid' ) ;
1156
+ validateInteger ( uid , 'uid' , - 1 , kMaxUserId ) ;
1157
+ validateInteger ( gid , 'gid' , - 1 , kMaxUserId ) ;
1157
1158
1158
1159
const ctx = { } ;
1159
1160
binding . fchown ( fd , uid , gid , undefined , ctx ) ;
@@ -1163,8 +1164,8 @@ function fchownSync(fd, uid, gid) {
1163
1164
function chown ( path , uid , gid , callback ) {
1164
1165
callback = makeCallback ( callback ) ;
1165
1166
path = getValidatedPath ( path ) ;
1166
- validateUint32 ( uid , 'uid' ) ;
1167
- validateUint32 ( gid , 'gid' ) ;
1167
+ validateInteger ( uid , 'uid' , - 1 , kMaxUserId ) ;
1168
+ validateInteger ( gid , 'gid' , - 1 , kMaxUserId ) ;
1168
1169
1169
1170
const req = new FSReqCallback ( ) ;
1170
1171
req . oncomplete = callback ;
@@ -1173,8 +1174,8 @@ function chown(path, uid, gid, callback) {
1173
1174
1174
1175
function chownSync ( path , uid , gid ) {
1175
1176
path = getValidatedPath ( path ) ;
1176
- validateUint32 ( uid , 'uid' ) ;
1177
- validateUint32 ( gid , 'gid' ) ;
1177
+ validateInteger ( uid , 'uid' , - 1 , kMaxUserId ) ;
1178
+ validateInteger ( gid , 'gid' , - 1 , kMaxUserId ) ;
1178
1179
const ctx = { path } ;
1179
1180
binding . chown ( pathModule . toNamespacedPath ( path ) , uid , gid , undefined , ctx ) ;
1180
1181
handleErrorFromBinding ( ctx ) ;
0 commit comments