From 6c6f0227d51b6ff646175ab3412b0c8389ee69c6 Mon Sep 17 00:00:00 2001 From: maliming Date: Fri, 30 Sep 2022 16:00:47 +0800 Subject: [PATCH] Avoid using eval in javascript. Resolve #14178 --- .../jquery/jquery-extensions.js | 42 ++++++------------- 1 file changed, 12 insertions(+), 30 deletions(-) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/jquery/jquery-extensions.js b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/jquery/jquery-extensions.js index d62dba1809..78e98071ea 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/jquery/jquery-extensions.js +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/jquery/jquery-extensions.js @@ -99,7 +99,7 @@ // add unchecked checkboxes because serializeArray ignores them $(this).find("input[type=checkbox]").each(function () { if (!$(this).is(':checked')) { - data.push({name: this.name, value: this.checked}); + data.push({ name: this.name, value: this.checked }); } }); @@ -118,26 +118,7 @@ }); //map to object - - var getVarName = function (v) { - return v.toString().replace(/\(\)\s?=\>\s?/, ''); - } - - var getNames = function (index, variable) { - var name = ''; - for (var i = 0; i <= index; i++) { - if (i == 0) { - name = variable + '[' + i + ']' - } else { - name += '][' + variable + '[' + i + ']' - } - } - return name; - } - var obj = {}; - var objName = getVarName(() => obj); - if (camelCase !== undefined ? camelCase : true) { data.forEach(function (d) { d.name = toCamelCase(d.name); @@ -146,18 +127,19 @@ data.map(function (x) { var names = x.name.split("."); - var xName = getVarName(() => x); - var namesName = getVarName(() => names); + for (var i = 0; i < names.length; i++) { + var o = obj; + for (var j = 0; j <= i; j++) { + if ($.isEmptyObject(o[names[j]])) { + o[names[j]] = {}; + } - var i = obj ? 0 : 1; - for (i = 0; i < names.length; i++) { - if (eval('!' + objName + '[' + getNames(i, '' + namesName + '') + ']')) { - eval('' + objName + '[' + getNames(i, '' + namesName + '') + '] = {}'); - } - } + if (i == names.length - 1 && j == i) { + o[names[j]] = x.value; + } - if ($.isEmptyObject(eval('' + objName + '[' + getNames(names.length - 1, '' + namesName + '') + ']'))) { - eval('' + objName + '[' + getNames(names.length - 1, '' + namesName + '') + '] = ' + xName + '.value'); + o = o[names[j]] + } } });