Author: awiner
Date: Fri Aug 21 18:55:06 2009
New Revision: 806676
URL: http://svn.apache.org/viewvc?rev=806676&view=rev
Log:
Fix NPE if sanitized proxy requests fail to include a mime type
Modified:
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/SanitizingRequestRewriter.java
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/SanitizingRequestRewriterTest.java
Modified:
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/SanitizingRequestRewriter.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/SanitizingRequestRewriter.java?rev=806676&r1=806675&r2=806676&view=diff
==============================================================================
---
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/SanitizingRequestRewriter.java
(original)
+++
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/SanitizingRequestRewriter.java
Fri Aug 21 18:55:06 2009
@@ -18,6 +18,7 @@
*/
package org.apache.shindig.gadgets.render;
+import org.apache.commons.lang.StringUtils;
import org.apache.sanselan.ImageFormat;
import org.apache.sanselan.ImageReadException;
import org.apache.sanselan.Sanselan;
@@ -64,14 +65,19 @@
if (request.isSanitizationRequested()) {
ContentRewriterFeature rewriterFeature =
rewriterFeatureFactory.createRewriteAllFeature(request.getCacheTtl());
- if (request.getRewriteMimeType().equalsIgnoreCase("text/css")) {
+ if (StringUtils.isEmpty(request.getRewriteMimeType())) {
+ logger.log(Level.WARNING, "Request to sanitize without content type
for "
+ + request.getUri());
+ content.setContent("");
+ return true;
+ } else if (request.getRewriteMimeType().equalsIgnoreCase("text/css")) {
return rewriteProxiedCss(request, resp, content, rewriterFeature);
} else if
(request.getRewriteMimeType().toLowerCase().startsWith("image/")) {
return rewriteProxiedImage(request, resp, content);
} else {
logger.log(Level.WARNING, "Request to sanitize unknown content type "
+ request.getRewriteMimeType()
- + " for " + request.getUri().toString());
+ + " for " + request.getUri());
content.setContent("");
return true;
}
Modified:
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/SanitizingRequestRewriterTest.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/SanitizingRequestRewriterTest.java?rev=806676&r1=806675&r2=806676&view=diff
==============================================================================
---
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/SanitizingRequestRewriterTest.java
(original)
+++
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/SanitizingRequestRewriterTest.java
Fri Aug 21 18:55:06 2009
@@ -105,4 +105,23 @@
"org/apache/shindig/gadgets/rewrite/image/inefficient.png"))).create();
assertNull(rewrite(req, response));
}
+
+ @Test
+ public void enforceUnknownMimeTypeRejected() throws Exception {
+ HttpRequest req = new HttpRequest(CONTENT_URI);
+ req.setRewriteMimeType("text/foo");
+ HttpResponse response = new
HttpResponseBuilder().setResponseString("doEvil()").create();
+ String sanitized = "";
+ assertEquals(sanitized, rewrite(req, response));
+ }
+
+ @Test
+ public void enforceMissingMimeTypeRejected() throws Exception {
+ HttpRequest req = new HttpRequest(CONTENT_URI);
+ // A request without a mime type, but requesting sanitization, should be
rejected
+ req.setRewriteMimeType(null);
+ HttpResponse response = new
HttpResponseBuilder().setResponseString("doEvil()").create();
+ String sanitized = "";
+ assertEquals(sanitized, rewrite(req, response));
+ }
}