node-http-server

Subversion Repositories:
Compare Path: Rev
With Path: Rev
?path1? @ 22  →  ?path2? @ 23
/src/handler.js
@@ -12,11 +12,13 @@
 
// Checks whether userPath is a child of rootPath.
function isRooted(userPath, rootPath, separator, callback) {
process.nextTick(() => {
userPath = userPath.split(separator).filter(Boolean);
fs.realpath(userPath, (error, resolved) => {
if (error)
return false;
resolved = resolved.split(separator).filter(Boolean);
rootPath = rootPath.split(separator).filter(Boolean);
callback(userPath.length >= rootPath.length &&
rootPath.every((e, i) => e === userPath[i]));
callback(resolved.length >= rootPath.length &&
rootPath.every((e, i) => e === resolved[i]));
});
}
 
@@ -180,6 +182,8 @@
path.join(root, trimmedPath) :
path.resolve(root, trimmedPath);
 
// Check for path traversals early on and bail if the requested path does not
// lie within the specified document root.
isRooted(requestPath, root, path.sep, (rooted) => {
if (!rooted) {
process.nextTick(() => {