Author: markt
Date: Sat Jan 31 08:42:18 2009
New Revision: 739524

URL: http://svn.apache.org/viewvc?rev=739524&view=rev
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=46261
%2F in a context path should be interpreted literally, not as /. That is what # 
is for.

Modified:
    tomcat/tc6.0.x/trunk/   (props changed)
    tomcat/tc6.0.x/trunk/STATUS.txt
    tomcat/tc6.0.x/trunk/java/org/apache/catalina/core/StandardContext.java
    
tomcat/tc6.0.x/trunk/java/org/apache/catalina/manager/HTMLManagerServlet.java
    tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml

Propchange: tomcat/tc6.0.x/trunk/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sat Jan 31 08:42:18 2009
@@ -1 +1 @@
-/tomcat/trunk:601180,606992,612607,630314,652744,653247,673796,673820,683982,684001,684081,684234,684269-684270,685177,687503,687645,690781,691392,691805,692748,695053,695311,696780,696782,698012,698227,698236,698613,699427,699634,701355,709294,709811,709816,710063,710066,710125,710205,711126,711600,712461,712467,718360,719602,719626,719628,720046,720069,721040,723404,723738,726052,727303,728032,728768,728947,729057,729567,729569,729809,729815,729934,730250,732859
+/tomcat/trunk:601180,606992,612607,630314,652744,653247,673796,673820,683982,684001,684081,684234,684269-684270,685177,687503,687645,690781,691392,691805,692748,695053,695311,696780,696782,698012,698227,698236,698613,699427,699634,701355,709294,709811,709816,710063,710066,710125,710205,711126,711600,712461,712467,718360,719602,719626,719628,720046,720069,721040,723404,723738,726052,727303,728032,728768,728947,729057,729567,729569,729571,729809,729815,729934,730250,732859

Modified: tomcat/tc6.0.x/trunk/STATUS.txt
URL: 
http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/STATUS.txt?rev=739524&r1=739523&r2=739524&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/STATUS.txt (original)
+++ tomcat/tc6.0.x/trunk/STATUS.txt Sat Jan 31 08:42:18 2009
@@ -126,13 +126,6 @@
    0: funkman - ditto
   -1:
 
-* Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=46261
-  %2F in a context path should be interpreted literally, not as /. That is what
-  # is for.
-  http://svn.apache.org/viewvc?rev=729571&view=rev 
-  +1: markt, fhanik, remm
-  -1: 
-
 * Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=36923
   If EL is disabled, treat it as template text
   http://svn.apache.org/viewvc?rev=730590&view=rev

Modified: 
tomcat/tc6.0.x/trunk/java/org/apache/catalina/core/StandardContext.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/core/StandardContext.java?rev=739524&r1=739523&r2=739524&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/catalina/core/StandardContext.java 
(original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/core/StandardContext.java Sat 
Jan 31 08:42:18 2009
@@ -1484,7 +1484,7 @@
      */
     public void setPath(String path) {
         // XXX Use host in name
-        setName(RequestUtil.URLDecode(path));
+        setName(path);
 
     }
 

Modified: 
tomcat/tc6.0.x/trunk/java/org/apache/catalina/manager/HTMLManagerServlet.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/manager/HTMLManagerServlet.java?rev=739524&r1=739523&r2=739524&view=diff
==============================================================================
--- 
tomcat/tc6.0.x/trunk/java/org/apache/catalina/manager/HTMLManagerServlet.java 
(original)
+++ 
tomcat/tc6.0.x/trunk/java/org/apache/catalina/manager/HTMLManagerServlet.java 
Sat Jan 31 08:42:18 2009
@@ -45,6 +45,7 @@
 import org.apache.catalina.manager.util.SessionUtils;
 import org.apache.catalina.util.RequestUtil;
 import org.apache.catalina.util.ServerInfo;
+import org.apache.catalina.util.URLEncoder;
 import org.apache.tomcat.util.http.fileupload.DiskFileUpload;
 import org.apache.tomcat.util.http.fileupload.FileItem;
 
@@ -73,11 +74,17 @@
 
 public final class HTMLManagerServlet extends ManagerServlet {
 
+    protected static final URLEncoder URL_ENCODER; 
     protected static final String APPLICATION_MESSAGE = "message";
     protected static final String APPLICATION_ERROR = "error";
     protected String sessionsListJspPath  = "/sessionsList.jsp";
     protected String sessionDetailJspPath = "/sessionDetail.jsp";
 
+    static {
+        URL_ENCODER = new URLEncoder();
+        // '/' should not be encoded in context paths
+        URL_ENCODER.addSafeCharacter('/');
+    }
     // --------------------------------------------------------- Public Methods
 
     /**
@@ -359,7 +366,7 @@
             String displayPath = contextPaths[i];
             sortedContextPathsMap.put(displayPath, contextPaths[i]);
         }
-
+ 
         String appsStart = sm.getString("htmlManagerServlet.appsStart");
         String appsStop = sm.getString("htmlManagerServlet.appsStop");
         String appsReload = sm.getString("htmlManagerServlet.appsReload");
@@ -396,24 +403,25 @@
                     isDeployed = false;
                 }
                 
-                args = new Object[6];
-                args[0] = displayPath;
-                args[1] = context.getDisplayName();
-                if (args[1] == null) {
-                    args[1] = " ";
+                args = new Object[7];
+                args[0] = URL_ENCODER.encode(displayPath);
+                args[1] = displayPath;
+                args[2] = context.getDisplayName();
+                if (args[2] == null) {
+                    args[2] = " ";
                 }
-                args[2] = new Boolean(context.getAvailable());
-                args[3] = response.encodeURL
+                args[3] = new Boolean(context.getAvailable());
+                args[4] = response.encodeURL
                     (request.getContextPath() +
-                     "/html/sessions?path=" + displayPath);
+                     "/html/sessions?path=" + URL_ENCODER.encode(displayPath));
                 if (context.getManager() != null) {
-                    args[4] = new Integer
+                    args[5] = new Integer
                         (context.getManager().getActiveSessions());
                 } else {
-                    args[4] = new Integer(0);
+                    args[5] = new Integer(0);
                 }
 
-                args[5] = highlightColor;
+                args[6] = highlightColor;
 
                 writer.print
                     (MessageFormat.format(APPS_ROW_DETAILS_SECTION, args));
@@ -421,24 +429,24 @@
                 args = new Object[14];
                 args[0] = response.encodeURL
                     (request.getContextPath() +
-                     "/html/start?path=" + displayPath);
+                     "/html/start?path=" + URL_ENCODER.encode(displayPath));
                 args[1] = appsStart;
                 args[2] = response.encodeURL
                     (request.getContextPath() +
-                     "/html/stop?path=" + displayPath);
+                     "/html/stop?path=" + URL_ENCODER.encode(displayPath));
                 args[3] = appsStop;
                 args[4] = response.encodeURL
                     (request.getContextPath() +
-                     "/html/reload?path=" + displayPath);
+                     "/html/reload?path=" + URL_ENCODER.encode(displayPath));
                 args[5] = appsReload;
                 args[6] = response.encodeURL
                     (request.getContextPath() +
-                     "/html/undeploy?path=" + displayPath);
+                     "/html/undeploy?path=" + URL_ENCODER.encode(displayPath));
                 args[7] = appsUndeploy;
                 
                 args[8] = response.encodeURL
                     (request.getContextPath() +
-                     "/html/expire?path=" + displayPath);
+                     "/html/expire?path=" + URL_ENCODER.encode(displayPath));
                 args[9] = appsExpire;
                 args[10] = sm.getString("htmlManagerServlet.expire.explain");
                 Manager manager = context.getManager();
@@ -968,12 +976,12 @@
 
     private static final String APPS_ROW_DETAILS_SECTION =
         "<tr>\n" +
-        " <td class=\"row-left\" bgcolor=\"{5}\" rowspan=\"2\"><small><a 
href=\"{0}\">{0}</a>" +
+        " <td class=\"row-left\" bgcolor=\"{6}\" rowspan=\"2\"><small><a 
href=\"{0}\">{1}</a>" +
         "</small></td>\n" +
-        " <td class=\"row-left\" bgcolor=\"{5}\" 
rowspan=\"2\"><small>{1}</small></td>\n" +
-        " <td class=\"row-center\" bgcolor=\"{5}\" 
rowspan=\"2\"><small>{2}</small></td>\n" +
-        " <td class=\"row-center\" bgcolor=\"{5}\" rowspan=\"2\">" +
-        "<small><a href=\"{3}\" target=\"_new\">{4}</a></small></td>\n";
+        " <td class=\"row-left\" bgcolor=\"{6}\" 
rowspan=\"2\"><small>{2}</small></td>\n" +
+        " <td class=\"row-center\" bgcolor=\"{6}\" 
rowspan=\"2\"><small>{3}</small></td>\n" +
+        " <td class=\"row-center\" bgcolor=\"{6}\" rowspan=\"2\">" +
+        "<small><a href=\"{4}\" target=\"_new\">{5}</a></small></td>\n";
 
     private static final String MANAGER_APP_ROW_BUTTON_SECTION =
         " <td class=\"row-left\" bgcolor=\"{13}\">\n" +

Modified: tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml
URL: 
http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml?rev=739524&r1=739523&r2=739524&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml Sat Jan 31 08:42:18 2009
@@ -236,6 +236,10 @@
         standard endorsed mechanism. (markt)
       </fix>
       <fix>
+        <bug>46261</bug>: Treat %2F in a context name literally rather than
+        converting it (inconsistently) to '/' - that is what '#' is for. 
(markt)
+      </fix>
+      <fix>
         <bug>46298</bug>: Throw an SQLException with a useful message rather
         than a NPE if the URL for the JDBCRealm is invalid. Based on a patch by
         Owen Jacobson. (markt)



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to