You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2008/12/27 00:50:26 UTC

svn commit: r729571 - in /tomcat/trunk/java/org/apache/catalina: core/StandardContext.java manager/HTMLManagerServlet.java

Author: markt
Date: Fri Dec 26 15:50:26 2008
New Revision: 729571

URL: http://svn.apache.org/viewvc?rev=729571&view=rev
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=46261
%2F in context paths should be treated literally, not as / - that is what '#' is for.

Modified:
    tomcat/trunk/java/org/apache/catalina/core/StandardContext.java
    tomcat/trunk/java/org/apache/catalina/manager/HTMLManagerServlet.java

Modified: tomcat/trunk/java/org/apache/catalina/core/StandardContext.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/StandardContext.java?rev=729571&r1=729570&r2=729571&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/StandardContext.java (original)
+++ tomcat/trunk/java/org/apache/catalina/core/StandardContext.java Fri Dec 26 15:50:26 2008
@@ -1491,7 +1491,7 @@
      */
     public void setPath(String path) {
         // XXX Use host in name
-        setName(RequestUtil.URLDecode(path));
+        setName(path);
 
     }
 

Modified: tomcat/trunk/java/org/apache/catalina/manager/HTMLManagerServlet.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/manager/HTMLManagerServlet.java?rev=729571&r1=729570&r2=729571&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/manager/HTMLManagerServlet.java (original)
+++ tomcat/trunk/java/org/apache/catalina/manager/HTMLManagerServlet.java Fri Dec 26 15:50:26 2008
@@ -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" +



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