From 01e0497e274984ff3e65d709982d3789a8cf42f4 Mon Sep 17 00:00:00 2001 From: Jonathan Valliere Date: Thu, 15 Apr 2021 01:00:29 -0400 Subject: [PATCH] Adds hex dump length safety check --- .../org/apache/mina/core/buffer/IoBuffer.java | 4 ++-- .../mina/core/buffer/IoBufferHexDumper.java | 1 - .../core/buffer/IoBufferHexDumperTest.java | 18 +++--------------- 3 files changed, 5 insertions(+), 18 deletions(-) diff --git a/mina-core/src/main/java/org/apache/mina/core/buffer/IoBuffer.java b/mina-core/src/main/java/org/apache/mina/core/buffer/IoBuffer.java index 844ca9622..0313d79e3 100644 --- a/mina-core/src/main/java/org/apache/mina/core/buffer/IoBuffer.java +++ b/mina-core/src/main/java/org/apache/mina/core/buffer/IoBuffer.java @@ -1545,8 +1545,8 @@ public String getHexDump(int length) { * @return hexidecimal representation of this buffer */ public String getHexDump(int length, boolean pretty) { - return (pretty) ? IoBufferHexDumper.getPrettyHexDumpSlice(this, this.position(), length) - : IoBufferHexDumper.getHexDumpSlice(this, this.position(), length); + return (pretty) ? IoBufferHexDumper.getPrettyHexDumpSlice(this, this.position(), Math.min(this.remaining(), length)) + : IoBufferHexDumper.getHexDumpSlice(this, this.position(), Math.min(this.remaining(), length)); } // ////////////////////////////// diff --git a/mina-core/src/main/java/org/apache/mina/core/buffer/IoBufferHexDumper.java b/mina-core/src/main/java/org/apache/mina/core/buffer/IoBufferHexDumper.java index 14f45822c..ef02ed31c 100644 --- a/mina-core/src/main/java/org/apache/mina/core/buffer/IoBufferHexDumper.java +++ b/mina-core/src/main/java/org/apache/mina/core/buffer/IoBufferHexDumper.java @@ -20,7 +20,6 @@ package org.apache.mina.core.buffer; import java.io.UnsupportedEncodingException; -import java.nio.charset.StandardCharsets; /** * Provides utility methods to dump an {@link IoBuffer} into a hex formatted diff --git a/mina-core/src/test/java/org/apache/mina/core/buffer/IoBufferHexDumperTest.java b/mina-core/src/test/java/org/apache/mina/core/buffer/IoBufferHexDumperTest.java index cc47a43e0..e17b454b4 100644 --- a/mina-core/src/test/java/org/apache/mina/core/buffer/IoBufferHexDumperTest.java +++ b/mina-core/src/test/java/org/apache/mina/core/buffer/IoBufferHexDumperTest.java @@ -16,10 +16,6 @@ public void checkHexDumpLength() { buf.flip(); -// System.out.println(buf.getHexDump()); -// System.out.println(buf.getHexDump(20)); -// System.out.println(buf.getHexDump(50)); - /* special case */ assertEquals(0, buf.getHexDump(0).length()); @@ -28,9 +24,9 @@ public void checkHexDumpLength() { assertEquals((Math.min(300, buf.limit()) * 3) - 1, buf.getHexDump(300).length()); /* must truncate */ - assertEquals((7 * 3) + 2, buf.getHexDump(7).length()); - assertEquals((10 * 3) + 2, buf.getHexDump(10).length()); - assertEquals((30 * 3) + 2, buf.getHexDump(30).length()); + assertEquals((7 * 3) - 1, buf.getHexDump(7).length()); + assertEquals((10 * 3) - 1, buf.getHexDump(10).length()); + assertEquals((30 * 3) - 1, buf.getHexDump(30).length()); } @@ -44,15 +40,7 @@ public void checkPrettyHexDumpLength() { buf.flip(); -// System.out.println(buf.getHexDump(0, true)); -// System.out.println(buf.getHexDump(20, true)); -// System.out.println(buf.getHexDump(50, true)); - String[] dump = buf.getHexDump(50, true).split("\\n"); - - for (String x : dump) { - System.out.println(x); - } assertEquals(4, dump.length); }