diff --git a/src/altk/comm/engine/Broadcast.java b/src/altk/comm/engine/Broadcast.java index bfa28f6..deaa349 100644 --- a/src/altk/comm/engine/Broadcast.java +++ b/src/altk/comm/engine/Broadcast.java @@ -807,12 +807,13 @@ public abstract class Broadcast { if (haltReason != null) { - statusBf.append("" + haltReason + // Escaping '&' and '<' in haltReason before enclosing it in tag + statusBf.append("" + Util.xmlEscape(haltReason) + "\r\n"); } if (stateErrorText != null) { - statusBf.append("" + stateErrorText + statusBf.append("" + Util.xmlEscape(stateErrorText) + ""); } } diff --git a/src/altk/comm/engine/Util.java b/src/altk/comm/engine/Util.java index cec41a6..314c918 100644 --- a/src/altk/comm/engine/Util.java +++ b/src/altk/comm/engine/Util.java @@ -4,6 +4,17 @@ import java.util.Properties; public class Util { + /** + * Escape xml sensitive characters '<' and '&' in argument str with appropriate "&xxx;". + * @param str + * @return str with '<' and '&' escaped so it is appropriate to be embeeded as + * text in an xml/html tag. + */ + static public String xmlEscape(String str) + { + return str.replace("&", "&").replace("<", "<"); + } + static public String getStringParameter(String name, Properties config) { return getStringParameter(name, config, null);