Author: markt
Date: Fri Jun 19 12:04:52 2009
New Revision: 786468

URL: http://svn.apache.org/viewvc?rev=786468&view=rev
Log:
As per review comments:
- use StringBuilder
- add comment to explain one possible cause
- better logging using original data

Modified:
    tomcat/trunk/java/org/apache/tomcat/util/http/Parameters.java

Modified: tomcat/trunk/java/org/apache/tomcat/util/http/Parameters.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/http/Parameters.java?rev=786468&r1=786467&r2=786468&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/http/Parameters.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/http/Parameters.java Fri Jun 19 
12:04:52 2009
@@ -382,10 +382,11 @@
             pos=valEnd+1;
             
             if( nameEnd<=nameStart ) {
-                StringBuffer msg = new StringBuffer("Parameters: Invalid chunk 
");
+                StringBuilder msg = new StringBuilder("Parameters: Invalid 
chunk ");
+                // No name eg ...&=xx&... will trigger this
                 if (valEnd >= nameStart) {
                     msg.append('\'');
-                    msg.append(new String(bytes, nameStart, valEnd));
+                    msg.append(new String(bytes, nameStart, valEnd - 
nameStart));
                     msg.append("' ");
                 }
                 msg.append("ignored.");
@@ -399,10 +400,15 @@
             try {
                 addParam( urlDecode(tmpName, enc), urlDecode(tmpValue, enc) );
             } catch (IOException e) {
-                // Exception during character decoding: skip parameter
-                String msg = "Parameters: Character decoding failed. " + 
-                        "Parameter '" + tmpName + "' with value '" +
-                        tmpValue + "' has been ignored.";
+                // tmpName or tmpValue will be corrupted at this point due to
+                // failed decoding. Have to go to queryMB to get original data
+                StringBuilder msg =
+                    new StringBuilder("Parameters: Character decoding 
failed.");
+                msg.append(" Parameter '");
+                msg.append(queryMB.toString().substring(nameStart, nameEnd));
+                msg.append("' with value '");
+                msg.append(queryMB.toString().substring(valStart, valEnd));
+                msg.append("' has been ignored.");
                 if (log.isDebugEnabled()) {
                     log.debug(msg, e);
                 } else {



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

Reply via email to