From 365234d49a9fb8b15b81be4e68966205040660cb Mon Sep 17 00:00:00 2001 From: Zaid Abdulla Date: Thu, 22 Feb 2018 01:21:14 -0800 Subject: [PATCH] Fault when vparam returns invalid value or type --- lib/session.coffee | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/lib/session.coffee b/lib/session.coffee index 0efd946..412b997 100644 --- a/lib/session.coffee +++ b/lib/session.coffee @@ -432,6 +432,25 @@ runVirtualParameters = (sessionContext, provisions, startRevision, endRevision, return counter = 0 if _returnValue.value? + if not Array.isArray(_returnValue.value) + _returnValue.value = [_returnValue.value] + + if not _returnValue.value[1] + if typeof _returnValue.value[0] is 'number' + _returnValue.value[1] = 'xsd:int' + else if typeof _returnValue.value[0] is 'boolean' + _returnValue.value[1] = 'xsd:boolean' + else if _returnValue.value[0] instanceof Date + _returnValue.value[1] = 'xsd:dateTime' + else + _returnValue.value[1] = 'xsd:string' + + if not _returnValue.value[0]? or + _returnValue.value[1] not in ['xsd:int', 'xsd:unsignedInt', 'xsd:boolean', 'xsd:string', 'xsd:dateTime'] + if counter & 1 + callback(null, {code: 'script', message: 'Invalid virtual parameter value attribute'}) + return counter = 0 + ret.value = device.sanitizeParameterValue(_returnValue.value) else if provision[1].value? or provision[2].value? if counter & 1