@@ -63,16 +63,19 @@ function requestListener(req, res) {
63
63
// Attaches path prefix with --path option
64
64
var possibleFilename = resolveUrl ( url . slice ( 1 ) ) || "dummy" ;
65
65
66
- fs . stat ( possibleFilename , function ( err , stats ) {
66
+ var safeFileName = path . normalize ( possibleFilename ) . replace ( / ^ ( \. \. [ \/ \\ ] ) + / , '' ) ;
67
+ var safeFullFilename = path . join ( __dirname , safeFileName ) ;
68
+
69
+ fs . stat ( safeFullFilename , function ( err , stats ) {
67
70
var fileBuffer ;
68
71
if ( ! err && stats . isFile ( ) ) {
69
- fileBuffer = fs . readFileSync ( possibleFilename ) ;
70
- let ct = mime . lookup ( possibleFilename ) ;
71
- log ( `Sending ${ possibleFilename } with Content-Type ${ ct } ` ) ;
72
+ fileBuffer = fs . readFileSync ( safeFullFilename ) ;
73
+ let ct = mime . lookup ( safeFullFilename ) ;
74
+ log ( `Sending ${ safeFullFilename } with Content-Type ${ ct } ` ) ;
72
75
res . writeHead ( 200 , { 'Content-Type' : ct } ) ;
73
76
74
77
} else {
75
- log ( "Route %s, replacing with index.html" , possibleFilename ) ;
78
+ log ( "Route %s, replacing with index.html" , safeFullFilename ) ;
76
79
fileBuffer = returnDistFile ( ) ;
77
80
res . writeHead ( 200 , { 'Content-Type' : 'text/html' } ) ;
78
81
}
0 commit comments