From 12febfe9d0d4cd3fe2d667e6e6cacd420705537b Mon Sep 17 00:00:00 2001 From: Pawel Andruszkiewicz Date: Tue, 10 Nov 2015 09:20:42 +0100 Subject: [PATCH] [File] Added verification of file name. [Verification] Code compiles, pass rate: 116/140. Change-Id: Ic3a4133b800e315c8df396d234ab3f6adb978e61 Signed-off-by: Pawel Andruszkiewicz --- src/file/js/DirectoryEntry.js | 13 ++++--------- src/file/js/Entry.js | 6 ++++++ src/file/js/rootsUtils.js | 16 +++++++++++++++- 3 files changed, 25 insertions(+), 10 deletions(-) diff --git a/src/file/js/DirectoryEntry.js b/src/file/js/DirectoryEntry.js index 3e32e88..027c7a2 100644 --- a/src/file/js/DirectoryEntry.js +++ b/src/file/js/DirectoryEntry.js @@ -47,15 +47,10 @@ cordova.define('cordova-plugin-file.tizen.DirectoryEntry', function(require, exp var parent_path = absolute_path.substring(0, absolute_path.lastIndexOf('/')); var child_name = absolute_path.substring(absolute_path.lastIndexOf('/') + 1); - // http://www.w3.org/TR/2011/WD-file-system-api-20110419/#naming-restrictions - var disallowedCharacters = [ '/', '\\', '<', '>', ':', '?', '*', '"', '|' ]; - - for (var i = 0; i < disallowedCharacters.length; ++i) { - if (-1 !== child_name.indexOf(disallowedCharacters[i])) { - console.error('File name contains disallowed character: ' + disallowedCharacters[i]); - errorCallback && errorCallback(FileError.ENCODING_ERR); - return; - } + if (!rootsUtils.isValidFileName(child_name)) { + console.error('Disallowed character detected in file name: ' + child_name); + errorCallback && errorCallback(FileError.ENCODING_ERR); + return; } var resolveSuccess = function(dir) { diff --git a/src/file/js/Entry.js b/src/file/js/Entry.js index 68ebadc..e52695b 100644 --- a/src/file/js/Entry.js +++ b/src/file/js/Entry.js @@ -46,6 +46,12 @@ var changeFile = function(method, successCallback, errorCallback, args) { var name = args[2]; var destURL = args[1] + ((args[1][args[1].length-1] === '/') ? '' : '/') + name; + if (!rootsUtils.isValidFileName(name)) { + console.error('Disallowed character detected in file name: ' + name); + errorCallback && errorCallback(FileError.ENCODING_ERR); + return; + } + resolveParent (srcURL, errorCallback, function(srcFile, parentDir) { try { diff --git a/src/file/js/rootsUtils.js b/src/file/js/rootsUtils.js index 4a68bfd..7760557 100644 --- a/src/file/js/rootsUtils.js +++ b/src/file/js/rootsUtils.js @@ -116,6 +116,19 @@ var rootsUtils = (function() { return (fs.fullPath === getFullPath(uri)); } + // http://www.w3.org/TR/2011/WD-file-system-api-20110419/#naming-restrictions + var disallowedCharacters = [ '/', '\\', '<', '>', ':', '?', '*', '"', '|' ]; + + function isValidFileName(name) { + for (var i = 0; i < disallowedCharacters.length; ++i) { + if (-1 !== name.indexOf(disallowedCharacters[i])) { + return false; + } + } + + return true; + } + return { getRoots: getRoots, findFilesystem: findFilesystem, @@ -124,6 +137,7 @@ var rootsUtils = (function() { getNativeUrl: getNativeUrl, stripTrailingSlash: stripTrailingSlash, createEntry: createEntry, - isRootUri: isRootUri + isRootUri: isRootUri, + isValidFileName: isValidFileName }; })(); -- 2.34.1