Ignore invalid paths in the JS file list (#25368)
This commit is contained in:
parent
d58e6b59d3
commit
1f9d728538
2 changed files with 39 additions and 0 deletions
|
@ -1397,6 +1397,16 @@
|
|||
return OC.linkTo('files', 'index.php')+"?dir="+ encodeURIComponent(dir).replace(/%2F/g, '/');
|
||||
},
|
||||
|
||||
_isValidPath: function(path) {
|
||||
var sections = path.split('/');
|
||||
for (var i = 0; i < sections.length; i++) {
|
||||
if (sections[i] === '..') {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
},
|
||||
|
||||
/**
|
||||
* Sets the current directory name and updates the breadcrumb.
|
||||
* @param targetDir directory to display
|
||||
|
@ -1405,6 +1415,10 @@
|
|||
*/
|
||||
_setCurrentDir: function(targetDir, changeUrl, fileId) {
|
||||
targetDir = targetDir.replace(/\\/g, '/');
|
||||
if (!this._isValidPath(targetDir)) {
|
||||
targetDir = '/';
|
||||
changeUrl = true;
|
||||
}
|
||||
var previousDir = this.getCurrentDirectory(),
|
||||
baseDir = OC.basename(targetDir);
|
||||
|
||||
|
|
|
@ -1334,6 +1334,31 @@ describe('OCA.Files.FileList tests', function() {
|
|||
fileList.changeDirectory('/another\\subdir');
|
||||
expect(fileList.getCurrentDirectory()).toEqual('/another/subdir');
|
||||
});
|
||||
it('switches to root dir when current directory is invalid', function() {
|
||||
_.each([
|
||||
'..',
|
||||
'/..',
|
||||
'../',
|
||||
'/../',
|
||||
'/../abc',
|
||||
'/abc/..',
|
||||
'/abc/../',
|
||||
'/../abc/'
|
||||
], function(path) {
|
||||
fileList.changeDirectory(path);
|
||||
expect(fileList.getCurrentDirectory()).toEqual('/');
|
||||
});
|
||||
});
|
||||
it('allows paths with dotdot at the beginning or end', function() {
|
||||
_.each([
|
||||
'..abc',
|
||||
'def..',
|
||||
'...'
|
||||
], function(path) {
|
||||
fileList.changeDirectory(path);
|
||||
expect(fileList.getCurrentDirectory()).toEqual(path);
|
||||
});
|
||||
});
|
||||
it('switches to root dir when current directory does not exist', function() {
|
||||
fileList.changeDirectory('/unexist');
|
||||
deferredList.reject(404);
|
||||
|
|
Loading…
Reference in a new issue