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