You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by je...@apache.org on 2015/03/22 22:10:53 UTC
mina git commit: Fix for DIRMINA-1008: refactor fromHexString to be
less tolerant
Repository: mina
Updated Branches:
refs/heads/trunk 602273832 -> e422ec88d
Fix for DIRMINA-1008: refactor fromHexString to be less tolerant
Project: http://git-wip-us.apache.org/repos/asf/mina/repo
Commit: http://git-wip-us.apache.org/repos/asf/mina/commit/e422ec88
Tree: http://git-wip-us.apache.org/repos/asf/mina/tree/e422ec88
Diff: http://git-wip-us.apache.org/repos/asf/mina/diff/e422ec88
Branch: refs/heads/trunk
Commit: e422ec88defa5da1bd47f01bb952835e2e841b30
Parents: 6022738
Author: Jeff MAURY <je...@apache.org>
Authored: Sun Mar 22 22:08:44 2015 +0100
Committer: Jeff MAURY <je...@apache.org>
Committed: Sun Mar 22 22:10:25 2015 +0100
----------------------------------------------------------------------
.../org/apache/mina/util/ByteBufferDumper.java | 5 +++-
.../apache/mina/util/ByteBufferDumperTest.java | 27 ++++++++++++++++++++
2 files changed, 31 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mina/blob/e422ec88/core/src/main/java/org/apache/mina/util/ByteBufferDumper.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/mina/util/ByteBufferDumper.java b/core/src/main/java/org/apache/mina/util/ByteBufferDumper.java
index e351a13..25f79e7 100644
--- a/core/src/main/java/org/apache/mina/util/ByteBufferDumper.java
+++ b/core/src/main/java/org/apache/mina/util/ByteBufferDumper.java
@@ -143,7 +143,10 @@ public class ByteBufferDumper {
ByteBuffer res = ByteBuffer.allocate(size);
for (int i = 0; i < size; i++) {
- int b = ((Character.digit(hex.charAt(i * 2), 16) << 4) | (Character.digit(hex.charAt(i * 2 + 1), 16)));
+ int b = Integer.parseInt(hex.substring(i, i + 2), 16);
+ if (Integer.highestOneBit(b) == 128) {
+ b = b - 256;
+ }
res.put((byte) b);
}
http://git-wip-us.apache.org/repos/asf/mina/blob/e422ec88/core/src/test/java/org/apache/mina/util/ByteBufferDumperTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/mina/util/ByteBufferDumperTest.java b/core/src/test/java/org/apache/mina/util/ByteBufferDumperTest.java
index e319521..00985bd 100644
--- a/core/src/test/java/org/apache/mina/util/ByteBufferDumperTest.java
+++ b/core/src/test/java/org/apache/mina/util/ByteBufferDumperTest.java
@@ -92,4 +92,31 @@ public class ByteBufferDumperTest {
bb.flip();
assertEquals("000102FE", ByteBufferDumper.toHex(bb));
}
+
+ @Test
+ public void checkFromHexStringEmptyStringReturnsEmptyByteArray() {
+ ByteBuffer buffer = ByteBufferDumper.fromHexString("");
+ assertEquals(0, buffer.remaining());
+ }
+
+ @Test
+ public void checkFromHexStringNormalStringReturnsByteArray() {
+ ByteBuffer buffer = ByteBufferDumper.fromHexString("ff");
+ assertEquals(1, buffer.remaining());
+ assertEquals(-1, buffer.get());
+ }
+
+ @Test
+ public void checkFromHexStringNormalStringUppercaseReturnsByteArray() {
+ ByteBuffer buffer = ByteBufferDumper.fromHexString("FF");
+ assertEquals(1, buffer.remaining());
+ assertEquals(-1, buffer.get());
+ }
+
+ @Test(expected=NumberFormatException.class)
+ public void checkFromHexStringInvalidStringReturnsException() {
+ ByteBuffer buffer = ByteBufferDumper.fromHexString("non-hexastring");
+ assertEquals(1, buffer.remaining());
+ assertEquals(-1, buffer.get());
+ }
}