1
0
mirror of https://github.com/node-red/node-red.git synced 2023-10-10 13:36:53 +02:00

Ensure context.flow/global cannot be deleted or enumerated

This commit is contained in:
Nick O'Leary 2018-09-10 22:30:51 +01:00
parent fc0cf1ff51
commit 75e7c0e50d
No known key found for this signature in database
GPG Key ID: 4F2157149161A6C9
2 changed files with 111 additions and 85 deletions

View File

@ -221,8 +221,9 @@ function createContext(id,seed) {
} }
} }
} }
Object.defineProperties(obj, {
obj.get = function(key, storage, callback) { get: {
value: function(key, storage, callback) {
var context; var context;
if (!storage && !callback) { if (!storage && !callback) {
context = stores["_"]; context = stores["_"];
@ -264,8 +265,10 @@ function createContext(id,seed) {
} }
return results; return results;
} }
}; }
obj.set = function(key, value, storage, callback) { },
set: {
value: function(key, value, storage, callback) {
var context; var context;
if (!storage && !callback) { if (!storage && !callback) {
context = stores["_"]; context = stores["_"];
@ -280,8 +283,10 @@ function createContext(id,seed) {
context = getContextStorage(storage); context = getContextStorage(storage);
} }
context.set(scope, key, value, callback); context.set(scope, key, value, callback);
}; }
obj.keys = function(storage, callback) { },
keys: {
value: function(storage, callback) {
var context; var context;
if (!storage && !callback) { if (!storage && !callback) {
context = stores["_"]; context = stores["_"];
@ -307,7 +312,9 @@ function createContext(id,seed) {
} else { } else {
return context.keys(scope, callback); return context.keys(scope, callback);
} }
}; }
}
});
return obj; return obj;
} }
@ -321,9 +328,13 @@ function getContext(localId,flowId) {
} }
var newContext = createContext(contextId); var newContext = createContext(contextId);
if (flowId) { if (flowId) {
newContext.flow = getContext(flowId); Object.defineProperty(newContext, 'flow', {
value: getContext(flowId)
});
} }
newContext.global = contexts['global']; Object.defineProperty(newContext, 'global', {
value: contexts['global']
})
contexts[contextId] = newContext; contexts[contextId] = newContext;
return newContext; return newContext;
} }

View File

@ -113,6 +113,21 @@ describe('context', function() {
context2.global.get("foo").should.equal("test"); context2.global.get("foo").should.equal("test");
}); });
it('context.flow/global are not enumerable', function() {
var context1 = Context.get("1","flowA");
Object.keys(context1).length.should.equal(0);
Object.keys(context1.flow).length.should.equal(0);
Object.keys(context1.global).length.should.equal(0);
})
it('context.flow/global cannot be deleted', function() {
var context1 = Context.get("1","flowA");
delete context1.flow;
should.exist(context1.flow);
delete context1.global;
should.exist(context1.global);
})
it('deletes context',function() { it('deletes context',function() {
var context = Context.get("1","flowA"); var context = Context.get("1","flowA");
should.not.exist(context.get("foo")); should.not.exist(context.get("foo"));