From 8620f8331a8eccd74878dd977b1c4c2bc69954e0 Mon Sep 17 00:00:00 2001 From: schultz Date: Tue, 14 Dec 2010 20:49:28 +0000 Subject: [PATCH] Fixed bug #49125: toString on byte[] array probably is not correct - Added HexUtils.toHexString method - Wrapped output of byte[] objects with a call to HexUtils.toHexString git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@1049263 13f79535-47bb-0310-9956-ffa450edef68 --- .../catalina/ha/deploy/FileMessageFactory.java | 3 ++- java/org/apache/coyote/ajp/AjpMessage.java | 3 ++- java/org/apache/tomcat/util/buf/HexUtils.java | 21 ++++++++++++++++++++- 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/java/org/apache/catalina/ha/deploy/FileMessageFactory.java b/java/org/apache/catalina/ha/deploy/FileMessageFactory.java index 2bb5f5914..c0b7b61f2 100644 --- a/java/org/apache/catalina/ha/deploy/FileMessageFactory.java +++ b/java/org/apache/catalina/ha/deploy/FileMessageFactory.java @@ -28,6 +28,7 @@ import java.util.concurrent.atomic.AtomicLong; import org.apache.juli.logging.Log; import org.apache.juli.logging.LogFactory; +import org.apache.tomcat.util.buf.HexUtils; /** * This factory is used to read files and write files by splitting them up into @@ -227,7 +228,7 @@ public class FileMessageFactory { throw new IllegalArgumentException( "Can't write message, this factory is reading."); if (log.isDebugEnabled()) - log.debug("Message " + msg + " data " + msg.getData() + log.debug("Message " + msg + " data " + HexUtils.toHexString(msg.getData()) + " data length " + msg.getDataLength() + " out " + out); if (msg.getMessageNumber() <= lastMessageProcessed.get()) { diff --git a/java/org/apache/coyote/ajp/AjpMessage.java b/java/org/apache/coyote/ajp/AjpMessage.java index 7221ba755..491e28034 100644 --- a/java/org/apache/coyote/ajp/AjpMessage.java +++ b/java/org/apache/coyote/ajp/AjpMessage.java @@ -21,6 +21,7 @@ import org.apache.juli.logging.Log; import org.apache.juli.logging.LogFactory; import org.apache.tomcat.util.buf.ByteChunk; import org.apache.tomcat.util.buf.CharChunk; +import org.apache.tomcat.util.buf.HexUtils; import org.apache.tomcat.util.buf.MessageBytes; import org.apache.tomcat.util.res.StringManager; @@ -372,7 +373,7 @@ public class AjpMessage { */ public void dump(String msg) { if (log.isDebugEnabled()) { - log.debug(msg + ": " + buf + " " + pos +"/" + (len + 4)); + log.debug(msg + ": " + HexUtils.toHexString(buf) + " " + pos +"/" + (len + 4)); } int max = pos; if (len + 4 > pos) diff --git a/java/org/apache/tomcat/util/buf/HexUtils.java b/java/org/apache/tomcat/util/buf/HexUtils.java index 117c5d3ea..3afe9043f 100644 --- a/java/org/apache/tomcat/util/buf/HexUtils.java +++ b/java/org/apache/tomcat/util/buf/HexUtils.java @@ -63,6 +63,11 @@ public final class HexUtils { (byte) 'c', (byte) 'd', (byte) 'e', (byte) 'f' }; + /** + * Table for byte to hex string translation. + */ + private static final char[] hex = "0123456789abcdef".toCharArray(); + // --------------------------------------------------------- Static Methods @@ -80,4 +85,18 @@ public final class HexUtils { public static byte getHex(int index){ return HEX[index]; } -} \ No newline at end of file + + public static String toHexString(byte[] bytes) + { + if(null == bytes) return null; + + StringBuilder sb = new StringBuilder(bytes.length << 1); + + for(int i=0; i> 4]) + .append(hex[(bytes[i] & 0x0f)]) + ; + + return sb.toString(); + } +} -- 2.11.0