@@ -11,6 +11,7 @@ const regularFolder = process.env.ALLOWEDFOLDER;
1111const regularFile = process . env . ALLOWEDFILE ;
1212const blockedFolder = process . env . BLOCKEDFOLDER ;
1313const blockedFile = process . env . BLOCKEDFILE ;
14+ const blockedFileURL = require ( 'url' ) . pathToFileURL ( process . env . BLOCKEDFILE ) ;
1415const relativeProtectedFile = process . env . RELATIVEBLOCKEDFILE ;
1516const relativeProtectedFolder = process . env . RELATIVEBLOCKEDFOLDER ;
1617const absoluteProtectedFile = path . resolve ( relativeProtectedFile ) ;
@@ -30,6 +31,13 @@ const absoluteProtectedFolder = path.resolve(relativeProtectedFolder);
3031 permission : 'FileSystemWrite' ,
3132 resource : path . toNamespacedPath ( blockedFile ) ,
3233 } ) ;
34+ assert . throws ( ( ) => {
35+ fs . writeFile ( blockedFileURL , 'example' , ( ) => { } ) ;
36+ } , common . expectsError ( {
37+ code : 'ERR_ACCESS_DENIED' ,
38+ permission : 'FileSystemWrite' ,
39+ resource : path . toNamespacedPath ( blockedFile ) ,
40+ } ) ) ;
3341 assert . throws ( ( ) => {
3442 fs . writeFile ( relativeProtectedFile , 'example' , ( ) => { } ) ;
3543 } , {
@@ -91,6 +99,13 @@ const absoluteProtectedFolder = path.resolve(relativeProtectedFolder);
9199 permission : 'FileSystemWrite' ,
92100 resource : path . toNamespacedPath ( blockedFile ) ,
93101 } ) ;
102+ assert . throws ( ( ) => {
103+ fs . utimes ( blockedFileURL , new Date ( ) , new Date ( ) , ( ) => { } ) ;
104+ } , common . expectsError ( {
105+ code : 'ERR_ACCESS_DENIED' ,
106+ permission : 'FileSystemWrite' ,
107+ resource : path . toNamespacedPath ( blockedFile ) ,
108+ } ) ) ;
94109 assert . throws ( ( ) => {
95110 fs . utimes ( relativeProtectedFile , new Date ( ) , new Date ( ) , ( ) => { } ) ;
96111 } , {
@@ -117,6 +132,13 @@ const absoluteProtectedFolder = path.resolve(relativeProtectedFolder);
117132 permission : 'FileSystemWrite' ,
118133 resource : path . toNamespacedPath ( blockedFile ) ,
119134 } ) ;
135+ assert . throws ( ( ) => {
136+ fs . lutimes ( blockedFileURL , new Date ( ) , new Date ( ) , ( ) => { } ) ;
137+ } , common . expectsError ( {
138+ code : 'ERR_ACCESS_DENIED' ,
139+ permission : 'FileSystemWrite' ,
140+ resource : path . toNamespacedPath ( blockedFile ) ,
141+ } ) ) ;
120142}
121143
122144// fs.mkdir
@@ -169,6 +191,15 @@ const absoluteProtectedFolder = path.resolve(relativeProtectedFolder);
169191 permission : 'FileSystemWrite' ,
170192 resource : path . toNamespacedPath ( blockedFile ) ,
171193 } ) ;
194+ assert . throws ( ( ) => {
195+ fs . rename ( blockedFileURL , path . join ( blockedFile , 'renamed' ) , ( err ) => {
196+ assert . ifError ( err ) ;
197+ } ) ;
198+ } , common . expectsError ( {
199+ code : 'ERR_ACCESS_DENIED' ,
200+ permission : 'FileSystemWrite' ,
201+ resource : path . toNamespacedPath ( blockedFile ) ,
202+ } ) ) ;
172203 assert . throws ( ( ) => {
173204 fs . rename ( relativeProtectedFile , path . join ( relativeProtectedFile , 'renamed' ) , ( err ) => {
174205 assert . ifError ( err ) ;
@@ -263,6 +294,12 @@ const absoluteProtectedFolder = path.resolve(relativeProtectedFolder);
263294 code : 'ERR_ACCESS_DENIED' ,
264295 permission : 'FileSystemWrite' ,
265296 } ) ;
297+ assert . throws ( ( ) => {
298+ fs . open ( blockedFileURL , fs . constants . O_RDWR | 0x10000000 , common . mustNotCall ( ) ) ;
299+ } , {
300+ code : 'ERR_ACCESS_DENIED' ,
301+ permission : 'FileSystemWrite' ,
302+ } ) ;
266303 assert . rejects ( async ( ) => {
267304 await fs . promises . open ( blockedFile , fs . constants . O_RDWR | fs . constants . O_NOFOLLOW ) ;
268305 } , {
@@ -290,6 +327,12 @@ const absoluteProtectedFolder = path.resolve(relativeProtectedFolder);
290327 code : 'ERR_ACCESS_DENIED' ,
291328 permission : 'FileSystemWrite' ,
292329 } ) ;
330+ assert . throws ( ( ) => {
331+ fs . chmod ( blockedFileURL , 0o755 , common . mustNotCall ( ) ) ;
332+ } , {
333+ code : 'ERR_ACCESS_DENIED' ,
334+ permission : 'FileSystemWrite' ,
335+ } ) ;
293336 assert . rejects ( async ( ) => {
294337 await fs . promises . chmod ( blockedFile , 0o755 ) ;
295338 } , {
@@ -324,6 +367,12 @@ const absoluteProtectedFolder = path.resolve(relativeProtectedFolder);
324367 code : 'ERR_ACCESS_DENIED' ,
325368 permission : 'FileSystemWrite' ,
326369 } ) ;
370+ assert . throws ( ( ) => {
371+ fs . appendFile ( blockedFileURL , 'new data' , common . mustNotCall ( ) ) ;
372+ } , {
373+ code : 'ERR_ACCESS_DENIED' ,
374+ permission : 'FileSystemWrite' ,
375+ } ) ;
327376 assert . rejects ( async ( ) => {
328377 await fs . promises . appendFile ( blockedFile , 'new data' ) ;
329378 } , {
@@ -340,6 +389,12 @@ const absoluteProtectedFolder = path.resolve(relativeProtectedFolder);
340389 code : 'ERR_ACCESS_DENIED' ,
341390 permission : 'FileSystemWrite' ,
342391 } ) ;
392+ assert . throws ( ( ) => {
393+ fs . chown ( blockedFileURL , 1541 , 999 , common . mustNotCall ( ) ) ;
394+ } , {
395+ code : 'ERR_ACCESS_DENIED' ,
396+ permission : 'FileSystemWrite' ,
397+ } ) ;
343398 assert . rejects ( async ( ) => {
344399 await fs . promises . chown ( blockedFile , 1541 , 999 ) ;
345400 } , {
@@ -356,6 +411,12 @@ const absoluteProtectedFolder = path.resolve(relativeProtectedFolder);
356411 code : 'ERR_ACCESS_DENIED' ,
357412 permission : 'FileSystemWrite' ,
358413 } ) ;
414+ assert . throws ( ( ) => {
415+ fs . lchown ( blockedFileURL , 1541 , 999 , common . mustNotCall ( ) ) ;
416+ } , {
417+ code : 'ERR_ACCESS_DENIED' ,
418+ permission : 'FileSystemWrite' ,
419+ } ) ;
359420 assert . rejects ( async ( ) => {
360421 await fs . promises . lchown ( blockedFile , 1541 , 999 ) ;
361422 } , {
@@ -372,6 +433,12 @@ const absoluteProtectedFolder = path.resolve(relativeProtectedFolder);
372433 code : 'ERR_ACCESS_DENIED' ,
373434 permission : 'FileSystemWrite' ,
374435 } ) ;
436+ assert . throws ( ( ) => {
437+ fs . link ( blockedFileURL , path . join ( blockedFolder , '/linked' ) , common . mustNotCall ( ) ) ;
438+ } , {
439+ code : 'ERR_ACCESS_DENIED' ,
440+ permission : 'FileSystemWrite' ,
441+ } ) ;
375442 assert . rejects ( async ( ) => {
376443 await fs . promises . link ( blockedFile , path . join ( blockedFolder , '/linked' ) ) ;
377444 } , {
@@ -391,4 +458,13 @@ const absoluteProtectedFolder = path.resolve(relativeProtectedFolder);
391458 permission : 'FileSystemWrite' ,
392459 resource : path . toNamespacedPath ( blockedFile ) ,
393460 } ) ;
461+ assert . throws ( ( ) => {
462+ fs . unlink ( blockedFileURL , ( err ) => {
463+ assert . ifError ( err ) ;
464+ } ) ;
465+ } , {
466+ code : 'ERR_ACCESS_DENIED' ,
467+ permission : 'FileSystemWrite' ,
468+ resource : path . toNamespacedPath ( blockedFile ) ,
469+ } ) ;
394470}
0 commit comments