[ 
https://issues.apache.org/jira/browse/WICKET-1508?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Roy van Rijn updated WICKET-1508:
---------------------------------

    Attachment: 1508_patch.txt

If checks the size of the stack once and is then able to do multiple pops 
without size-check.

The patch I added should prevent that and throw the ParseException ("Tag ... 
has a mismatched close tag at ...") when the stack is empty.



> EmptyStackException parsing HTML
> --------------------------------
>
>                 Key: WICKET-1508
>                 URL: https://issues.apache.org/jira/browse/WICKET-1508
>             Project: Wicket
>          Issue Type: Bug
>          Components: wicket
>    Affects Versions: 1.3.3
>            Reporter: Jonathan Locke
>         Attachments: 1508_patch.txt
>
>
> I do not have an easy repro case for this, but it might be worth looking at 
> whether the code should be more defensive.
> java.util.EmptyStackException
>       at 
> org.apache.wicket.util.collections.ArrayListStack.peek(ArrayListStack.java:101)
>       at 
> org.apache.wicket.util.collections.ArrayListStack.pop(ArrayListStack.java:84)
>       at 
> org.apache.wicket.markup.parser.filter.HtmlHandler.nextTag(HtmlHandler.java:134)
>       at 
> org.apache.wicket.markup.parser.filter.WicketRemoveTagHandler.nextTag(WicketRemoveTagHandler.java:60)
>       at 
> org.apache.wicket.markup.parser.filter.WicketLinkTagHandler.nextTag(WicketLinkTagHandler.java:94)
>       at 
> org.apache.wicket.markup.parser.AbstractMarkupFilter.nextComponentTag(AbstractMarkupFilter.java:82)
>       at 
> org.apache.wicket.markup.parser.filter.WicketNamespaceHandler.nextTag(WicketNamespaceHandler.java:72)
>       at 
> org.apache.wicket.markup.parser.AbstractMarkupFilter.nextComponentTag(AbstractMarkupFilter.java:82)
>       at 
> org.apache.wicket.markup.parser.filter.WicketMessageTagHandler.nextTag(WicketMessageTagHandler.java:81)
>       at 
> org.apache.wicket.markup.parser.AbstractMarkupFilter.nextComponentTag(AbstractMarkupFilter.java:82)
>       at 
> org.apache.wicket.markup.parser.filter.HtmlHeaderSectionHandler.nextTag(HtmlHeaderSectionHandler.java:77)
>       at 
> org.apache.wicket.markup.parser.filter.HeadForceTagIdHandler.nextTag(HeadForceTagIdHandler.java:77)
>       at 
> org.apache.wicket.markup.parser.AbstractMarkupFilter.nextComponentTag(AbstractMarkupFilter.java:82)
>       at 
> org.apache.wicket.markup.parser.filter.OpenCloseTagExpander.nextTag(OpenCloseTagExpander.java:51)
>       at 
> org.apache.wicket.markup.parser.AbstractMarkupFilter.nextComponentTag(AbstractMarkupFilter.java:82)
>       at 
> org.apache.wicket.markup.parser.filter.EnclosureHandler.nextTag(EnclosureHandler.java:76)
>       at 
> org.apache.wicket.markup.parser.filter.RelativePathPrefixHandler.nextTag(RelativePathPrefixHandler.java:116)
>       at 
> org.apache.wicket.markup.MarkupParser.getNextTag(MarkupParser.java:302)
>       at 
> org.apache.wicket.markup.MarkupParser.parseMarkup(MarkupParser.java:322)
>       at org.apache.wicket.markup.MarkupParser.parse(MarkupParser.java:270)
>       at 
> org.apache.wicket.markup.loader.SimpleMarkupLoader.loadMarkup(SimpleMarkupLoader.java:52)
>       at 
> org.apache.wicket.markup.loader.InheritedMarkupMarkupLoader.loadMarkup(InheritedMarkupMarkupLoader.java:62)
>       at 
> org.apache.wicket.markup.loader.DefaultMarkupLoader.loadMarkup(DefaultMarkupLoader.java:55)
>       at org.apache.wicket.markup.MarkupCache.loadMarkup(MarkupCache.java:433)
>       at 
> org.apache.wicket.markup.MarkupCache.loadMarkupAndWatchForChanges(MarkupCache.java:523)
>       at org.apache.wicket.markup.MarkupCache.getMarkup(MarkupCache.java:319)
>       at 
> org.apache.wicket.markup.MarkupCache.getMarkupStream(MarkupCache.java:215)
>       at 
> org.apache.wicket.MarkupContainer.getAssociatedMarkupStream(MarkupContainer.java:343)
>       at org.apache.wicket.Page.onRender(Page.java:1453)
>       at org.apache.wicket.Component.render(Component.java:2315)
>       at org.apache.wicket.Page.renderPage(Page.java:906)
>       at 
> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.respond(BookmarkablePageRequestTarget.java:231)
>       at 
> org.apache.wicket.request.AbstractRequestCycleProcessor.respond(AbstractRequestCycleProcessor.java:104)
>       at 
> org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1172)
>       at org.apache.wicket.RequestCycle.step(RequestCycle.java:1243)
>       at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1331)
>       at org.apache.wicket.RequestCycle.request(RequestCycle.java:493)
>       at 
> org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:363)
>       at 
> org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:194)
>       at 
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1089)
>       at 
> org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:365)
>       at 
> org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
>       at 
> org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
>       at 
> org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:712)
>       at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
>       at 
> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
>       at org.mortbay.jetty.Server.handle(Server.java:291)
>       at 
> org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:503)
>       at 
> org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:841)
>       at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:639)
>       at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:210)
>       at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:379)
>       at 
> org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:361)
>       at 
> org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to