You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by cr...@locus.apache.org on 2000/07/18 01:37:25 UTC

cvs commit: jakarta-tomcat/src/share/org/apache/tomcat/service/http HttpRequestAdapter.java

craigmcc    00/07/17 16:37:24

  Modified:    src/share/org/apache/tomcat/service/http
                        HttpRequestAdapter.java
  Log:
  Patch request URI (and query string) parsing to peform URL decoding, using
  the utility method in the RequestUtil class.
  
  Submitted by:	Based on a patch supplied by Pilho Kim
    <ph...@math.soongsil.ac.kr>, but modified to reflect changes in the
    HttpRequestAdapter class.
  
  Revision  Changes    Path
  1.18      +25 -3     jakarta-tomcat/src/share/org/apache/tomcat/service/http/HttpRequestAdapter.java
  
  Index: HttpRequestAdapter.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/service/http/HttpRequestAdapter.java,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- HttpRequestAdapter.java	2000/07/11 03:48:58	1.17
  +++ HttpRequestAdapter.java	2000/07/17 23:37:24	1.18
  @@ -1,7 +1,7 @@
   /*
  - * $Header: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/service/http/HttpRequestAdapter.java,v 1.17 2000/07/11 03:48:58 alex Exp $
  - * $Revision: 1.17 $
  - * $Date: 2000/07/11 03:48:58 $
  + * $Header: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/service/http/HttpRequestAdapter.java,v 1.18 2000/07/17 23:37:24 craigmcc Exp $
  + * $Revision: 1.18 $
  + * $Date: 2000/07/17 23:37:24 $
    *
    * ====================================================================
    *
  @@ -371,6 +371,28 @@
   	} else {
   	    requestURI = new String( buf, startReq, qryIdx - startReq );
   	    queryString = new String( buf, qryIdx+1, endReq - qryIdx -1 );
  +	}
  +
  +	// Perform URL decoding only if necessary
  +	if ((requestURI != null) &&
  +	    ((requestURI.indexOf('%') >= 0) || (requestURI.indexOf('+') >= 0))) {
  +
  +	    try {
  +		requestURI = RequestUtil.URLDecode(requestURI);
  +	    } catch (Exception e) {
  +		response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
  +		return;
  +	    }
  +	}
  +	if ((queryString != null) &&
  +	    ((queryString.indexOf('%') >= 0) || (queryString.indexOf('+') >= 0))) {
  +
  +	    try {
  +		queryString = RequestUtil.URLDecode(queryString);
  +	    } catch (Exception e) {
  +		response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
  +		return;
  +	    }
   	}
   
   	//	loghelper.log("XXX " + method + " " + requestURI + " " + queryString + " " + protocol );