From a502d96a860456ec5e8c96761db70f7cabb74751 Mon Sep 17 00:00:00 2001 From: Paul Martin <paul@paulsputer.com> Date: Sat, 30 Apr 2016 04:19:14 -0400 Subject: [PATCH] Merge pull request #1073 from gitblit/1062-DocEditorUpdates --- src/main/java/com/gitblit/utils/StringUtils.java | 23 ++++++++++++++++++++--- 1 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/gitblit/utils/StringUtils.java b/src/main/java/com/gitblit/utils/StringUtils.java index 7605fe0..643c52c 100644 --- a/src/main/java/com/gitblit/utils/StringUtils.java +++ b/src/main/java/com/gitblit/utils/StringUtils.java @@ -79,6 +79,19 @@ * @return plain text escaped for html */ public static String escapeForHtml(String inStr, boolean changeSpace) { + return escapeForHtml(inStr, changeSpace, 4); + } + + /** + * Prepare text for html presentation. Replace sensitive characters with + * html entities. + * + * @param inStr + * @param changeSpace + * @param tabLength + * @return plain text escaped for html + */ + public static String escapeForHtml(String inStr, boolean changeSpace, int tabLength) { StringBuilder retStr = new StringBuilder(); int i = 0; while (i < inStr.length()) { @@ -93,7 +106,9 @@ } else if (changeSpace && inStr.charAt(i) == ' ') { retStr.append(" "); } else if (changeSpace && inStr.charAt(i) == '\t') { - retStr.append(" "); + for (int j = 0; j < tabLength; j++) { + retStr.append(" "); + } } else { retStr.append(inStr.charAt(i)); } @@ -129,6 +144,8 @@ retStr.append("%20"); } else if (inStr.charAt(i) == '&') { retStr.append("%26"); + } else if (inStr.charAt(i) == '+') { + retStr.append("%2B"); } else { retStr.append(inStr.charAt(i)); } @@ -398,7 +415,7 @@ * @return the first invalid character found or null if string is acceptable */ public static Character findInvalidCharacter(String name) { - char[] validChars = { '/', '.', '_', '-', '~' }; + char[] validChars = { '/', '.', '_', '-', '~', '+' }; for (char c : name.toCharArray()) { if (!Character.isLetterOrDigit(c)) { boolean ok = false; @@ -642,7 +659,7 @@ // ignore unsupported charsets } } - if (value.startsWith("\uFEFF")) { + if (value != null && value.startsWith("\uFEFF")) { // strip UTF-8 BOM return value.substring(1); } -- Gitblit v1.9.1