Skip to content

Commit

Permalink
[Data Object] Properly escape layout and field names in tree
Browse files Browse the repository at this point in the history
  • Loading branch information
brusch committed Oct 29, 2021
1 parent ee761f0 commit 542d0cb
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 7 deletions.
Expand Up @@ -1167,7 +1167,7 @@ pimcore.object.classes.klass = Class.create({
}

var newNode = {
text: nodeLabel,
text: htmlspecialchars(nodeLabel),
type: "layout",
iconCls: pimcore.object.classes.layout[type].prototype.getIconClass(),
leaf: false,
Expand Down Expand Up @@ -1217,7 +1217,7 @@ pimcore.object.classes.klass = Class.create({
}

var newNode = {
text: nodeLabel,
text: htmlspecialchars(nodeLabel),
type: "data",
leaf: true,
iconCls: pimcore.object.classes.data[type].prototype.getIconClass()
Expand Down
Expand Up @@ -286,8 +286,10 @@ pimcore.object.classes.data.data = Class.create({
if (this.treeNode) {
for (var i = 0; i < items.length; i++) {
if (items[i].name == "name") {
this.treeNode.set("text", items[i].getValue());
break;
if(this.isValidName(items[i].getValue())) {
this.treeNode.set("text", htmlspecialchars(items[i].getValue()));
break;
}
}
}
}
Expand All @@ -302,10 +304,9 @@ pimcore.object.classes.data.data = Class.create({
var data = this.getData();
data.name = trim(data.name);

var isValidName = /^[a-zA-Z][a-zA-Z0-9_]*$/;
var isForbiddenName = in_arrayi(data.name, this.forbiddenNames);

if (data.name.length > 1 && isValidName.test(data.name) && !isForbiddenName) {
if (data.name.length > 1 && this.isValidName(data.name) && !isForbiddenName) {
return true;
}

Expand All @@ -316,6 +317,11 @@ pimcore.object.classes.data.data = Class.create({
return false;
},

isValidName: function (name) {
let isValidName = /^[a-zA-Z][a-zA-Z0-9_]*$/;
return isValidName.test(name);
},

applyData: function () {

if (!this.layout) {
Expand Down
Expand Up @@ -192,7 +192,7 @@ pimcore.object.classes.layout.layout = Class.create({

for (var i = 0; i < items.length; i++) {
if (items[i].name == "name") {
this.treeNode.set('text', items[i].getValue());
this.treeNode.set('text', htmlspecialchars(items[i].getValue()));
break;
}
}
Expand Down

0 comments on commit 542d0cb

Please sign in to comment.