Protect against node types with reserved names such as toString

Fixes #880
This commit is contained in:
Nick O'Leary 2016-04-28 14:17:48 +01:00
parent 45ff86eae5
commit 0c53b5310a
2 changed files with 11 additions and 7 deletions

View File

@ -105,7 +105,7 @@ module.exports = {
config.forEach(function(n) {
if (n.type !== 'subflow' && n.type !== 'tab') {
for (var prop in n) {
if (n.hasOwnProperty(prop) && prop !== 'id' && prop !== 'wires' && prop !== '_users' && flow.configs[n[prop]]) {
if (n.hasOwnProperty(prop) && prop !== 'id' && prop !== 'wires' && prop !== 'type' && prop !== '_users' && flow.configs[n[prop]]) {
// This property references a global config node
flow.configs[n[prop]]._users.push(n.id)
}

View File

@ -223,7 +223,7 @@ function removeModule(module) {
function getNodeInfo(typeOrId) {
var id = typeOrId;
if (nodeTypeToId[typeOrId]) {
if (nodeTypeToId.hasOwnProperty(typeOrId)) {
id = nodeTypeToId[typeOrId];
}
/* istanbul ignore else */
@ -248,7 +248,7 @@ function getFullNodeInfo(typeOrId) {
// Used by index.enableNodeSet so that .file can be retrieved to pass
// to loader.loadNodeSet
var id = typeOrId;
if (nodeTypeToId[typeOrId]) {
if (nodeTypeToId.hasOwnProperty(typeOrId)) {
id = nodeTypeToId[typeOrId];
}
/* istanbul ignore else */
@ -348,7 +348,7 @@ function inheritNode(constructor) {
}
function registerNodeConstructor(nodeSet,type,constructor) {
if (nodeConstructors[type]) {
if (nodeConstructors.hasOwnProperty(type)) {
throw new Error(type+" already registered");
}
//TODO: Ensure type is known - but doing so will break some tests
@ -440,7 +440,11 @@ function clear() {
}
function getTypeId(type) {
return nodeTypeToId[type];
if (nodeTypeToId.hasOwnProperty(type)) {
return nodeTypeToId[type];
} else {
return null;
}
}
function enableNodeSet(typeOrId) {
@ -449,7 +453,7 @@ function enableNodeSet(typeOrId) {
}
var id = typeOrId;
if (nodeTypeToId[typeOrId]) {
if (nodeTypeToId.hasOwnProperty(typeOrId)) {
id = nodeTypeToId[typeOrId];
}
var config;
@ -471,7 +475,7 @@ function disableNodeSet(typeOrId) {
throw new Error("Settings unavailable");
}
var id = typeOrId;
if (nodeTypeToId[typeOrId]) {
if (nodeTypeToId.hasOwnProperty(typeOrId)) {
id = nodeTypeToId[typeOrId];
}
var config;