From 128cc46edfda6241a181b4d6d9e7fd30429f0a53 Mon Sep 17 00:00:00 2001 From: markt Date: Fri, 19 Jun 2009 12:04:52 +0000 Subject: [PATCH] As per review comments: - use StringBuilder - add comment to explain one possible cause - better logging using original data git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@786468 13f79535-47bb-0310-9956-ffa450edef68 --- java/org/apache/tomcat/util/http/Parameters.java | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/java/org/apache/tomcat/util/http/Parameters.java b/java/org/apache/tomcat/util/http/Parameters.java index b3511072e..099a8025a 100644 --- a/java/org/apache/tomcat/util/http/Parameters.java +++ b/java/org/apache/tomcat/util/http/Parameters.java @@ -382,10 +382,11 @@ public final class Parameters extends MultiMap { 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 @@ public final class Parameters extends MultiMap { 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 { -- 2.11.0