@@ -8,7 +8,9 @@ const path = require('path');
8
8
9
9
const blockedFolder = process . env . BLOCKEDFOLDER ;
10
10
const allowedFolder = process . env . ALLOWEDFOLDER ;
11
- const traversalPath = allowedFolder + '../file.md'
11
+ const traversalPath = allowedFolder + '../file.md' ;
12
+ const traversalFolderPath = allowedFolder + '../folder' ;
13
+ const bufferTraversalPath = Buffer . from ( allowedFolder + '../file.md' ) ;
12
14
13
15
{
14
16
assert . ok ( process . permission . has ( 'fs.read' , allowedFolder ) ) ;
@@ -41,7 +43,33 @@ const traversalPath = allowedFolder + '../file.md'
41
43
} ) ) ;
42
44
}
43
45
46
+ {
47
+ assert . throws ( ( ) => {
48
+ fs . mkdtempSync ( traversalFolderPath , ( error ) => {
49
+ assert . ifError ( error ) ;
50
+ } ) ;
51
+ } , common . expectsError ( {
52
+ code : 'ERR_ACCESS_DENIED' ,
53
+ permission : 'FileSystemWrite' ,
54
+ resource : path . toNamespacedPath ( path . resolve ( traversalFolderPath + 'XXXXXX' ) ) ,
55
+ } ) ) ;
56
+ }
57
+
58
+ {
59
+ assert . throws ( ( ) => {
60
+ fs . readFile ( bufferTraversalPath , ( error ) => {
61
+ assert . ifError ( error ) ;
62
+ } ) ;
63
+ } , common . expectsError ( {
64
+ code : 'ERR_ACCESS_DENIED' ,
65
+ permission : 'FileSystemRead' ,
66
+ resource : path . resolve ( traversalPath ) ,
67
+ } ) ) ;
68
+ }
69
+
44
70
{
45
71
assert . ok ( ! process . permission . has ( 'fs.read' , traversalPath ) ) ;
46
72
assert . ok ( ! process . permission . has ( 'fs.write' , traversalPath ) ) ;
73
+ assert . ok ( ! process . permission . has ( 'fs.read' , traversalFolderPath ) ) ;
74
+ assert . ok ( ! process . permission . has ( 'fs.write' , traversalFolderPath ) ) ;
47
75
}
0 commit comments