forked from I2P_Developers/i2p.i2p
i2psnark: Fix double-escaping of '&' (ticket #2127)
This commit is contained in:
@ -2784,7 +2784,7 @@ public class I2PSnarkServlet extends BasicServlet {
|
||||
String link = urlEncode(s);
|
||||
String display;
|
||||
if (s.length() <= max)
|
||||
display = DataHelper.escapeHTML(link);
|
||||
display = escapeHTML2(link);
|
||||
else
|
||||
display = DataHelper.escapeHTML(s.substring(0, max)) + "…";
|
||||
buf.append("<a href=\"").append(link).append("\">").append(display).append("</a>");
|
||||
@ -2801,6 +2801,24 @@ public class I2PSnarkServlet extends BasicServlet {
|
||||
.replace("[", "%5B").replace("]", "%5D");
|
||||
}
|
||||
|
||||
private static final String escapeChars[] = {"\"", "<", ">", "'"};
|
||||
private static final String escapeCodes[] = {""", "<", ">", "'"};
|
||||
|
||||
/**
|
||||
* Modded from DataHelper.
|
||||
* Does not escape ampersand. String must already have escaped ampersand.
|
||||
* @param unescaped the unescaped string, non-null
|
||||
* @return the escaped string
|
||||
* @since 0.9.33
|
||||
*/
|
||||
private static String escapeHTML2(String unescaped) {
|
||||
String escaped = unescaped;
|
||||
for (int i = 0; i < escapeChars.length; i++) {
|
||||
escaped = escaped.replace(escapeChars[i], escapeCodes[i]);
|
||||
}
|
||||
return escaped;
|
||||
}
|
||||
|
||||
private static final String DOCTYPE = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n";
|
||||
private static final String HEADER_A = "<link href=\"";
|
||||
private static final String HEADER_B = "snark.css?" + CoreVersion.VERSION + "\" rel=\"stylesheet\" type=\"text/css\" >";
|
||||
|
Reference in New Issue
Block a user