You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@shindig.apache.org by zh...@gmail.com on 2010/03/19 22:22:31 UTC
Fix index out of bound Exception (issue634043)
Reviewers: shindig.remailer_gmail.com, johnfargo,
Description:
Handle the case of bad spec that is smaller then the optional BOM
Please review this at http://codereview.appspot.com/634043/show
Affected files:
java/gadgets/src/main/java/org/apache/shindig/gadgets/DefaultGadgetSpecFactory.java
java/gadgets/src/test/java/org/apache/shindig/gadgets/DefaultGadgetSpecFactoryTest.java
### Eclipse Workspace Patch 1.0
#P shindig-project
Index:
java/gadgets/src/main/java/org/apache/shindig/gadgets/DefaultGadgetSpecFactory.java
===================================================================
---
java/gadgets/src/main/java/org/apache/shindig/gadgets/DefaultGadgetSpecFactory.java
(revision 925050)
+++
java/gadgets/src/main/java/org/apache/shindig/gadgets/DefaultGadgetSpecFactory.java
(working copy)
@@ -90,7 +90,8 @@
protected GadgetSpec parse(String content, Query query) throws
XmlException, GadgetException {
// Allow BOM entity as first item on stream and ignore it:
final String BOM_ENTITY = "";
- if (content.substring(0,
BOM_ENTITY.length()).equalsIgnoreCase(BOM_ENTITY)) {
+ if (content.length() >= BOM_ENTITY.length() &&
+ content.substring(0,
BOM_ENTITY.length()).equalsIgnoreCase(BOM_ENTITY)) {
content = content.substring(BOM_ENTITY.length());
}
Element element = XmlUtil.parse(content);
Index:
java/gadgets/src/test/java/org/apache/shindig/gadgets/DefaultGadgetSpecFactoryTest.java
===================================================================
---
java/gadgets/src/test/java/org/apache/shindig/gadgets/DefaultGadgetSpecFactoryTest.java
(revision 925050)
+++
java/gadgets/src/test/java/org/apache/shindig/gadgets/DefaultGadgetSpecFactoryTest.java
(working copy)
@@ -145,6 +145,25 @@
assertEquals(LOCAL_CONTENT,
spec.getView(GadgetSpec.DEFAULT_VIEW).getContent());
}
+ @Test(expected = GadgetException.class)
+ public void specFetchedEmptyContent() throws Exception {
+ HttpRequest request = createIgnoreCacheRequest();
+ HttpResponse response = new HttpResponse("");
+ expect(pipeline.execute(request)).andReturn(response);
+ replay(pipeline);
+
+ GadgetSpec spec = specFactory.getGadgetSpec(createContext(SPEC_URL,
true));
+ }
+
+ @Test(expected = GadgetException.class)
+ public void malformedGadgetSpecIsCachedAndThrows2() throws Exception {
+ HttpRequest request = createIgnoreCacheRequest();
+ expect(pipeline.execute(request)).andReturn(new
HttpResponse("")).once();
+ replay(pipeline);
+
+ specFactory.getGadgetSpec(createContext(SPEC_URL, true));
+ }
+
@Test
public void specFetchedWithBomChar() throws Exception {
HttpRequest request = createIgnoreCacheRequest();