diff --git a/src/org/zaproxy/zap/extension/zest/ZapAddOn.xml b/src/org/zaproxy/zap/extension/zest/ZapAddOn.xml index e766f655454..30d5c47e755 100644 --- a/src/org/zaproxy/zap/extension/zest/ZapAddOn.xml +++ b/src/org/zaproxy/zap/extension/zest/ZapAddOn.xml @@ -7,6 +7,7 @@ https://github.com/zaproxy/zap-core-help/wiki/HelpAddonsZestZest ]]> diff --git a/src/org/zaproxy/zap/extension/zest/ZestZapRunner.java b/src/org/zaproxy/zap/extension/zest/ZestZapRunner.java index 0843fb3f56c..d87429ee8ac 100644 --- a/src/org/zaproxy/zap/extension/zest/ZestZapRunner.java +++ b/src/org/zaproxy/zap/extension/zest/ZestZapRunner.java @@ -21,6 +21,7 @@ package org.zaproxy.zap.extension.zest; import java.io.IOException; +import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -69,6 +70,8 @@ public class ZestZapRunner extends ZestBasicRunner implements ScannerListener { private static final int ZEST_HISTORY_REFERENCE_TYPE = HistoryReference.TYPE_ZEST_SCRIPT; private static final int FAIL_ACTION_PLUGIN_ID = 50004; + + private static Field fieldOutputWriter; private ExtensionZest extension; private ZestScriptWrapper wrapper = null; @@ -126,8 +129,8 @@ public String run(ZestScript script, Map params) throws ZestAsse this.target = null; if (wrapper.getWriter() != null) { super.setOutputWriter(wrapper.getWriter()); - } else if (extension.getExtScript().getScriptUI() != null) { - super.setOutputWriter(extension.getExtScript().getScriptUI().getOutputWriter()); + } else if (scriptUI != null && !hasOutputWriter()) { + super.setOutputWriter(scriptUI.getOutputWriter()); } this.setDebug(this.wrapper.isDebug()); @@ -135,6 +138,18 @@ public String run(ZestScript script, Map params) throws ZestAsse } } + private boolean hasOutputWriter() { + try { + if (fieldOutputWriter == null) { + fieldOutputWriter = ZestBasicRunner.class.getDeclaredField("outputWriter"); + fieldOutputWriter.setAccessible(true); + } + return fieldOutputWriter.get(this) != null; + } catch (IllegalAccessException | NoSuchFieldException e) { + return false; + } + } + @Override public String run (ZestScript script, ZestRequest target, Map params) throws ZestAssertFailException, ZestActionFailException, IOException, @@ -142,8 +157,8 @@ public String run (ZestScript script, ZestRequest target, Map pa log.debug("Run script " + script.getTitle()); if (wrapper.getWriter() != null) { super.setOutputWriter(wrapper.getWriter()); - } else if (extension.getExtScript().getScriptUI() != null) { - super.setOutputWriter(extension.getExtScript().getScriptUI().getOutputWriter()); + } else if (scriptUI != null && !hasOutputWriter()) { + super.setOutputWriter(scriptUI.getOutputWriter()); } this.setDebug(this.wrapper.isDebug()); String result = super.run(script, target, params);