@@ -63,16 +63,19 @@ function requestListener(req, res) {
6363 // Attaches path prefix with --path option
6464 var possibleFilename = resolveUrl ( url . slice ( 1 ) ) || "dummy" ;
6565
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 ) {
6770 var fileBuffer ;
6871 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 } ` ) ;
7275 res . writeHead ( 200 , { 'Content-Type' : ct } ) ;
7376
7477 } else {
75- log ( "Route %s, replacing with index.html" , possibleFilename ) ;
78+ log ( "Route %s, replacing with index.html" , safeFullFilename ) ;
7679 fileBuffer = returnDistFile ( ) ;
7780 res . writeHead ( 200 , { 'Content-Type' : 'text/html' } ) ;
7881 }
0 commit comments