From 27b472b662218a8a41a37e253ab9d79833989544 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Tue, 24 Jan 2023 19:09:36 +0000 Subject: [PATCH] Quick updates for #8989 - this issue appeared to be fixed already but just adding a few extra bits of security to make sure that looping only occurs when valid data is found in the binding. --- packages/server/src/threads/automation.ts | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/packages/server/src/threads/automation.ts b/packages/server/src/threads/automation.ts index 44951869f4..d765ef8472 100644 --- a/packages/server/src/threads/automation.ts +++ b/packages/server/src/threads/automation.ts @@ -37,9 +37,13 @@ function getLoopIterations(loopStep: LoopStep, input: LoopInput) { if (!loopStep || !binding) { return 1 } - return Array.isArray(binding) - ? binding.length - : automationUtils.stringSplit(binding).length + if (Array.isArray(binding)) { + return binding.length + } + if (typeof binding === "string") { + return automationUtils.stringSplit(binding).length + } + return 1 } /** @@ -280,13 +284,13 @@ class Orchestrator { break } - let item + let item = [] if ( typeof loopStep.inputs.binding === "string" && loopStep.inputs.option === "String" ) { item = automationUtils.stringSplit(newInput.binding) - } else { + } else if (Array.isArray(loopStep.inputs.binding)) { item = loopStep.inputs.binding } this._context.steps[loopStepNumber] = {