From: markt Date: Fri, 19 Jun 2009 12:04:52 +0000 (+0000) Subject: As per review comments: X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=128cc46edfda6241a181b4d6d9e7fd30429f0a53;p=tomcat7.0 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 --- 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 {