[ https://issues.apache.org/struts/browse/WW-3309?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=46998#action_46998 ]
Musachy Barroso commented on WW-3309: ------------------------------------- you can just attach a patch here. the tricky part is that this code is in xwork, which does not depend on commons io, to add a dependency it needs to be jarjar into xwork. To fix it, you can just add a dependency to xwork and use fileutils and build it. I will try ti fix it in xwork next week. > XWork FileManager does not adequately decode URLs > ------------------------------------------------- > > Key: WW-3309 > URL: https://issues.apache.org/struts/browse/WW-3309 > Project: Struts 2 > Issue Type: Bug > Components: Dispatch Filter > Affects Versions: 2.1.8 > Environment: Linux/Windows running Tomcat 6.0.18/6.0.20 > Reporter: Ryan Fields > Priority: Minor > Fix For: 2.2.0 > > > The JarEntryRevision inner class of XWork's FileManager class lazily decodes > URLs by calling replace to change instances of %20 into spaces. > Unfortunately, file URLs can and occasionally do contain other % encoded > characters. In order for the referenced file to be opened, these % encoded > characters must be transformed into their decoded equivalents. > This bug is directly relevant to Tomcat 6, which uses a naming convention of > context#subpath.war in its autodeployer to facilitate deployment of a web > application into a context like /context/subpath. Tomcat deploys a war named > in this manner to webapp/context#subpath, meaning that all absolute file > references will contain a #. Because # (along with all other encoded > characters except for space) do not get URL decoded by JarEntryRevision's > build method, it is impossible to deploy a Struts 2 application named using > this convention into Tomcat 6. > I would think that this could be fixed by running the string representation > of the URL through java.net.URLDecoder's decode method before handing it to > the File constructor. The only snag is that decode expects a character > encoding to be passed to it, and I'm not quite sure how to assume the correct > encoding in a cross-platform manner. It might be feasible to assume UTF-8 > for all URLs. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.