You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@knox.apache.org by su...@apache.org on 2016/12/16 16:03:47 UTC
knox git commit: KNOX-791 - XML attribute special character fix and
unit test (Sandeep More via Sumit Gupta)
Repository: knox
Updated Branches:
refs/heads/master de34419d4 -> 7287e3559
KNOX-791 - XML attribute special character fix and unit test (Sandeep More via Sumit Gupta)
Project: http://git-wip-us.apache.org/repos/asf/knox/repo
Commit: http://git-wip-us.apache.org/repos/asf/knox/commit/7287e355
Tree: http://git-wip-us.apache.org/repos/asf/knox/tree/7287e355
Diff: http://git-wip-us.apache.org/repos/asf/knox/diff/7287e355
Branch: refs/heads/master
Commit: 7287e35597fffee78cfa2d3de4297c59873b6c6a
Parents: de34419
Author: Sumit Gupta <su...@apache.org>
Authored: Fri Dec 16 11:03:25 2016 -0500
Committer: Sumit Gupta <su...@apache.org>
Committed: Fri Dec 16 11:03:25 2016 -0500
----------------------------------------------------------------------
.../rewrite/impl/html/HtmlFilterReaderBase.java | 6 ++-
.../api/UrlRewriteServletFilterTest.java | 42 ++++++++++++++++++++
2 files changed, 47 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/knox/blob/7287e355/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/html/HtmlFilterReaderBase.java
----------------------------------------------------------------------
diff --git a/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/html/HtmlFilterReaderBase.java b/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/html/HtmlFilterReaderBase.java
index f9d11cf..6839e44 100644
--- a/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/html/HtmlFilterReaderBase.java
+++ b/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/html/HtmlFilterReaderBase.java
@@ -171,7 +171,11 @@ public abstract class HtmlFilterReaderBase extends Reader implements UrlRewriteF
writer.write( " " );
writer.write( attribute.getName() );
if(attribute.hasValue()) {
- String inputValue = attribute.getValue();
+ /*
+ * non decoded value, return the raw value of the attribute as it appears
+ * in the source document, without decoding, see KNOX-791.
+ */
+ String inputValue = attribute.getValueSegment().toString();
String outputValue = inputValue;
try {
Level tag = stack.peek();
http://git-wip-us.apache.org/repos/asf/knox/blob/7287e355/gateway-provider-rewrite/src/test/java/org/apache/hadoop/gateway/filter/rewrite/api/UrlRewriteServletFilterTest.java
----------------------------------------------------------------------
diff --git a/gateway-provider-rewrite/src/test/java/org/apache/hadoop/gateway/filter/rewrite/api/UrlRewriteServletFilterTest.java b/gateway-provider-rewrite/src/test/java/org/apache/hadoop/gateway/filter/rewrite/api/UrlRewriteServletFilterTest.java
index 8052c2b..d435ef7 100644
--- a/gateway-provider-rewrite/src/test/java/org/apache/hadoop/gateway/filter/rewrite/api/UrlRewriteServletFilterTest.java
+++ b/gateway-provider-rewrite/src/test/java/org/apache/hadoop/gateway/filter/rewrite/api/UrlRewriteServletFilterTest.java
@@ -806,6 +806,48 @@ public class UrlRewriteServletFilterTest {
// assertThat( the( content ), hasXPath( "//style/text()", equalTo( "@import \\\"http://0.0.0.0:0/stylesheets/pretty.css\\\";" ) ) );
assertThat(content, anyOf( is(responseHtmlOne), is(responseHtmlTwo)));
}
+
+ /**
+ * See KNOX-791
+ * @since 0.11.0
+ * @throws Exception
+ */
+ @Test
+ public void testResponseHtmlAttributeEscaping() throws Exception {
+ final Map<String, String> initParams = new HashMap<String, String>();
+ initParams.put("response.body", "test-filter-4");
+ setUp(initParams);
+
+ final String responseHtml = "<!DOCTYPE html>\n" + "<html>\n" + " <head>\n"
+ + " <meta charset=\"UTF-8\">\n"
+ + " <link rel=\"stylesheet\" href=\"pretty.css\">\n"
+ + " <script escaped-data=\"<>\" src=\"script.js\"></script>\n"
+ + " </head>\n" + " <body>\n" + " </body>\n" + "</html>";
+ final String rewrittenResponseHtml = "<!DOCTYPE html>\n" + "<html>\n"
+ + " <head>\n" + " <meta charset=\"UTF-8\">\n"
+ + " <link rel=\"stylesheet\" href=\"http://someotherhost/stylesheets/pretty.css\">\n"
+ + " <script escaped-data=\"<>\" src=\"script.js\"></script>\n"
+ + " </head>\n" + " <body>\n" + " </body>\n" + "</html>";
+
+ // Setup the server side request/response interaction.
+ interaction.expect().method("GET")
+ .requestUrl("http://mock-host:42/test-output-path-1");
+ interaction.respond().contentType("application/html")
+ .content(responseHtml, Charset.forName("UTF-8")).status(200);
+ interactions.add(interaction);
+ request.setMethod("GET");
+ request.setURI("/test-input-path");
+ request.setHeader("Host", "mock-host:42");
+ request.setHeader("Content-Type", "application/html");
+
+ // Execute the request.
+ response = TestUtils.execute(server, request);
+
+ assertThat(response.getStatus(), is(200));
+ String content = response.getContent();
+ assertThat(content, is(rewrittenResponseHtml));
+ }
+
private static class SetupFilter implements Filter {
@Override