Author: markt
Date: Fri Jun 19 21:14:32 2009
New Revision: 786667

URL: http://svn.apache.org/viewvc?rev=786667&view=rev
Log:
Can't use queryMB as that isn't the only source.

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=786667&r1=786666&r2=786667&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 
21:14:32 2009
@@ -338,6 +338,8 @@
     // if needed
     ByteChunk tmpName=new ByteChunk();
     ByteChunk tmpValue=new ByteChunk();
+    ByteChunk origName=new ByteChunk();
+    ByteChunk origValue=new ByteChunk();
     CharChunk tmpNameC=new CharChunk(1024);
     CharChunk tmpValueC=new CharChunk(1024);
     
@@ -396,18 +398,25 @@
             }
             tmpName.setBytes( bytes, nameStart, nameEnd-nameStart );
             tmpValue.setBytes( bytes, valStart, valEnd-valStart );
-
+            try {
+                // Take copies as if anything goes wrong originals will be
+                // corrupted. This means original values can be logged
+                origName.append(bytes, nameStart, nameEnd-nameStart);
+                origValue.append(bytes, valStart, valEnd-valStart);
+            } catch (IOException ioe) {
+                // Should never happen...
+                log.error("Error copying parameters", ioe);
+            }
+            
             try {
                 addParam( urlDecode(tmpName, enc), urlDecode(tmpValue, enc) );
             } catch (IOException e) {
-                // 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(origName.toString());
                 msg.append("' with value '");
-                msg.append(queryMB.toString().substring(valStart, valEnd));
+                msg.append(origValue.toString());
                 msg.append("' has been ignored.");
                 if (log.isDebugEnabled()) {
                     log.debug(msg, e);
@@ -418,7 +427,8 @@
 
             tmpName.recycle();
             tmpValue.recycle();
-
+            origName.recycle();
+            origValue.recycle();
         } while( pos<end );
     }
 



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

Reply via email to