amyroh      2003/02/14 17:54:25

  Modified:    catalina/src/share/org/apache/catalina/util RequestUtil.java
  Log:
  Back port fixes from tomcat 5.
  
  Use the specified encoding to extract bytes out of the given string so
  that the encoding is not lost. If an encoding is not specified, let it
  use the platform default encoding.
  
  Allow query string values to contain '=' characters.
  
  Revision  Changes    Path
  1.20      +35 -13    
jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/util/RequestUtil.java
  
  Index: RequestUtil.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/util/RequestUtil.java,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- RequestUtil.java  21 Feb 2002 22:51:55 -0000      1.19
  +++ RequestUtil.java  15 Feb 2003 01:54:25 -0000      1.20
  @@ -331,9 +331,20 @@
           throws UnsupportedEncodingException {
   
           if ((data != null) && (data.length() > 0)) {
  -            int len = data.length();
  -            byte[] bytes = new byte[len];
  -            data.getBytes(0, len, bytes, 0);
  +        
  +            // use the specified encoding to extract bytes out of the
  +            // given string so that the encoding is not lost. If an
  +            // encoding is not specified, let it use platform default
  +            byte[] bytes = null;
  +            try {
  +                if (encoding == null) {
  +                    bytes = data.getBytes();
  +                } else {
  +                    bytes = data.getBytes(encoding);
  +                }
  +            } catch (UnsupportedEncodingException uee) {
  +            }
  +            
               parseParameters(map, bytes, encoding);
           }
   
  @@ -371,9 +382,17 @@
           if (str == null)
               return (null);
   
  -        int len = str.length();
  -        byte[] bytes = new byte[len];
  -        str.getBytes(0, len, bytes, 0);
  +        // use the specified encoding to extract bytes out of the
  +        // given string so that the encoding is not lost. If an
  +        // encoding is not specified, let it use platform default
  +        byte[] bytes = null;
  +        try {
  +            if (enc == null) {
  +                bytes = str.getBytes();
  +            } else {
  +                bytes = str.getBytes(enc);
  +            }
  +        } catch (UnsupportedEncodingException uee) {}
   
           return URLDecode(bytes, enc);
   
  @@ -506,8 +525,12 @@
                       ox = 0;
                       break;
                   case '=':
  -                    key = new String(data, 0, ox, encoding);
  -                    ox = 0;
  +                    if (key == null) {
  +                        key = new String(data, 0, ox, encoding);
  +                        ox = 0;
  +                    } else {
  +                        data[ox++] = c;
  +                    }                   
                       break;
                   case '+':
                       data[ox++] = (byte)' ';
  @@ -532,4 +555,3 @@
   
   
   }
  -
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to