From e53d0c0d69fa208def9580e6cb844567b8cb682c Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Tue, 20 Dec 2016 09:32:47 +0100 Subject: [PATCH] Escape the name for the jquery selector Signed-off-by: Joas Schilling --- apps/files/js/filelist.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js index a8daeadfd2..c8ab8e15b7 100644 --- a/apps/files/js/filelist.js +++ b/apps/files/js/filelist.js @@ -1175,7 +1175,7 @@ var innernameSpan = $('').addClass('innernametext').text(basename); if (path && path !== '/') { - var conflictingItems = this.$fileList.find('tr[data-file="' + name.replace( /(:|\.|\[|\]|,|=)/g, "\\$1") + '"]'); + var conflictingItems = this.$fileList.find('tr[data-file="' + this._jqSelEscape(name) + '"]'); if (conflictingItems.length !== 0) { if (conflictingItems.length === 1) { // Update the path on the first conflicting item @@ -1261,6 +1261,14 @@ return tr; }, + /* escape a selector expression for jQuery */ + _jqSelEscape: function (expression) { + if (expression) { + return expression.replace(/[!"#$%&'()*+,.\/:;<=>?@\[\\\]^`{|}~]/g, '\\$&'); + } + return null; + }, + /** * Adds an entry to the files array and also into the DOM * in a sorted manner.