You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by am...@apache.org on 2003/09/03 00:44:32 UTC

cvs commit: jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/servlets CGIServlet.java

amyroh      2003/09/02 15:44:32

  Modified:    catalina/src/share/org/apache/catalina/servlets
                        CGIServlet.java
  Log:
  Apply patch for bug 22857 and bug 22858 submitted by Mark Thomas <me...@ntlworld.com> and fix obvious indentation errors.
  
  Revision  Changes    Path
  1.7       +23 -21    jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/servlets/CGIServlet.java
  
  Index: CGIServlet.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/servlets/CGIServlet.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- CGIServlet.java	2 Sep 2003 21:22:05 -0000	1.6
  +++ CGIServlet.java	2 Sep 2003 22:44:32 -0000	1.7
  @@ -357,7 +357,7 @@
           //Wrapper wrapper = (Wrapper) getServletConfig();
           //context = (Context) wrapper.getParent();
   
  -    context = config.getServletContext();
  +        context = config.getServletContext();
           if (debug >= 1) {
               //log("init: Associated with Context '" + context.getPath() + "'");
           }
  @@ -429,10 +429,10 @@
           out.println("<li><b>contextPath</b> = " +
                          req.getContextPath());
           Cookie cookies[] = req.getCookies();
  -    if (cookies!=null) {
  -        for (int i = 0; i < cookies.length; i++)
  +        if (cookies!=null) {
  +            for (int i = 0; i < cookies.length; i++)
                   out.println("<li><b>cookie</b> " + cookies[i].getName() +" = " +cookies[i].getValue());
  -    }
  +        }
           Enumeration headers = req.getHeaderNames();
           while (headers.hasMoreElements()) {
               String header = (String) headers.nextElement();
  @@ -567,8 +567,6 @@
           out.println("</ul>");
           out.println("<hr>");
   
  -
  -
       }
   
   
  @@ -743,7 +741,7 @@
            *
            */
           protected CGIEnvironment(HttpServletRequest req,
  -                                 ServletContext context) {
  +                                 ServletContext context) throws IOException {
               setupFromContext(context);
               setupFromRequest(req);
   
  @@ -939,7 +937,7 @@
            * @return   true if environment was set OK, false if there
            *           was a problem and no environment was set
            */
  -        protected boolean setCGIEnvironment(HttpServletRequest req) {
  +        protected boolean setCGIEnvironment(HttpServletRequest req) throws IOException {
   
               /*
                * This method is slightly ugly; c'est la vie.
  @@ -1092,8 +1090,8 @@
                       //NOOP per CGI specification section 11.2
                   } else if("HOST".equalsIgnoreCase(header)) {
                       String host = req.getHeader(header);
  -        int idx =  host.indexOf(":");
  -        if(idx < 0) idx = host.length();
  +                    int idx =  host.indexOf(":");
  +                    if(idx < 0) idx = host.length();
                       envp.put("HTTP_" + header.replace('-', '_'),
                                host.substring(0, idx));
                   } else {
  @@ -1102,7 +1100,9 @@
                   }
               }
   
  -            command = sCGIFullPath;
  +            File fCGIFullPath = new File(sCGIFullPath);
  +            command = fCGIFullPath.getCanonicalPath();
  +
               envp.put("X_TOMCAT_SCRIPT_PATH", command);  //for kicks
   
               this.env = envp;
  @@ -1543,17 +1543,19 @@
   
               //create query arguments
               Enumeration paramNames = params.keys();
  -            StringBuffer cmdAndArgs = new StringBuffer(command);
  +            StringBuffer cmdAndArgs = new StringBuffer("\"" + command + "\"");
               if (paramNames != null && paramNames.hasMoreElements()) {
                   cmdAndArgs.append(" ");
                   while (paramNames.hasMoreElements()) {
                       String k = (String) paramNames.nextElement();
                       String v = params.get(k).toString();
                       if ((k.indexOf("=") < 0) && (v.indexOf("=") < 0)) {
  +                        cmdAndArgs.append("\"");
                           cmdAndArgs.append(k);
                           cmdAndArgs.append("=");
                           v = java.net.URLEncoder.encode(v);
                           cmdAndArgs.append(v);
  +                        cmdAndArgs.append("\"");
                           cmdAndArgs.append(" ");
                       }
                   }
  @@ -1566,11 +1568,11 @@
                   env.put("CONTENT_LENGTH", new Integer(contentLength));
               }*/
   
  -        if (command.endsWith(".pl") || command.endsWith(".cgi")) {
  +        //if (command.endsWith(".pl") || command.endsWith(".cgi")) {
               StringBuffer perlCommand = new StringBuffer("perl ");
               perlCommand.append(cmdAndArgs.toString());
               cmdAndArgs = perlCommand;
  -        }
  +        //}
   
               rt = Runtime.getRuntime();
               proc = rt.exec(cmdAndArgs.toString(), hashToStringArray(env), wd);