diff --git a/core/src/main/java/hudson/Util.java b/core/src/main/java/hudson/Util.java index 428e89092f..77fe368b02 100644 --- a/core/src/main/java/hudson/Util.java +++ b/core/src/main/java/hudson/Util.java @@ -1,14 +1,11 @@ package hudson; import hudson.model.TaskListener; -import hudson.model.Project; -import hudson.model.TopLevelItem; import hudson.util.IOException2; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.taskdefs.Chmod; import org.apache.tools.ant.taskdefs.Copy; -import javax.servlet.ServletException; import java.io.BufferedReader; import java.io.ByteArrayOutputStream; import java.io.File; @@ -20,22 +17,22 @@ import java.io.OutputStream; import java.io.OutputStreamWriter; import java.net.InetAddress; import java.net.UnknownHostException; +import java.security.DigestInputStream; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; import java.util.Locale; import java.util.Map; import java.util.ResourceBundle; import java.util.SimpleTimeZone; import java.util.StringTokenizer; -import java.util.Collection; -import java.util.List; -import java.util.ArrayList; import java.util.logging.Level; import java.util.logging.Logger; import java.util.regex.Matcher; import java.util.regex.Pattern; -import java.security.MessageDigest; -import java.security.DigestInputStream; -import java.security.NoSuchAlgorithmException; /** * @author Kohsuke Kawaguchi @@ -352,6 +349,30 @@ public class Util { } } + /** + * Escapes HTML unsafe characters like <, &to the respective character entities. + */ + public static String escape(String text) { + StringBuffer buf = new StringBuffer(text.length()+64); + for( int i=0; i"); + else + if(ch=='<') + buf.append("<"); + else + if(ch=='&') + buf.append("&"); + else + if(ch==' ') + buf.append(" "); + else + buf.append(ch); + } + return buf.toString(); + } + private static char toDigit(int n) { char ch = Character.forDigit(n,16); if(ch>='a') ch = (char)(ch-'a'+'A'); diff --git a/core/src/main/java/hudson/scm/ChangeLogSet.java b/core/src/main/java/hudson/scm/ChangeLogSet.java index 86e03f1a1d..b7ba2303dc 100644 --- a/core/src/main/java/hudson/scm/ChangeLogSet.java +++ b/core/src/main/java/hudson/scm/ChangeLogSet.java @@ -3,6 +3,7 @@ package hudson.scm; import hudson.model.User; import hudson.model.AbstractBuild; import hudson.MarkupText; +import hudson.Util; import java.util.Collections; @@ -85,25 +86,7 @@ public abstract class ChangeLogSet implements Iter * Message escaped for HTML */ public String getMsgEscaped() { - String msg = getMsg(); - StringBuffer buf = new StringBuffer(msg.length()+64); - for( int i=0; i"); - else - if(ch=='<') - buf.append("<"); - else - if(ch=='&') - buf.append("&"); - else - if(ch==' ') - buf.append(" "); - else - buf.append(ch); - } - return buf.toString(); + return Util.escape(getMsg()); } } }