amyroh 2003/09/02 15:44:54 Modified: catalina/src/share/org/apache/catalina/servlets CGIServlet.java Log: Back port patch. Revision Changes Path 1.12 +22 -19 jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets/CGIServlet.java Index: CGIServlet.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets/CGIServlet.java,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- CGIServlet.java 4 Dec 2002 21:09:07 -0000 1.11 +++ CGIServlet.java 2 Sep 2003 22:44:54 -0000 1.12 @@ -364,7 +364,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() + "'"); } @@ -436,10 +436,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(); @@ -750,7 +750,7 @@ * */ protected CGIEnvironment(HttpServletRequest req, - ServletContext context) { + ServletContext context) throws IOException { setupFromContext(context); setupFromRequest(req); @@ -946,7 +946,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. @@ -1104,8 +1104,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 { @@ -1114,7 +1114,8 @@ } } - command = sCGIFullPath; + File fCGIFullPath = new File(sCGIFullPath); + command = fCGIFullPath.getCanonicalPath(); envp.put("X_TOMCAT_SCRIPT_PATH", command); //for kicks this.env = envp; @@ -1555,17 +1556,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(" "); } } @@ -1578,11 +1581,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);
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]