You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by st...@apache.org on 2012/09/12 21:51:20 UTC
svn commit: r1384103 - in /hbase/trunk/hbase-common/src:
main/java/org/apache/hadoop/hbase/util/Bytes.java
test/java/org/apache/hadoop/hbase/util/TestBytes.java
Author: stack
Date: Wed Sep 12 19:51:19 2012
New Revision: 1384103
URL: http://svn.apache.org/viewvc?rev=1384103&view=rev
Log:
HBASE-6518 Bytes.toBytesBinary() incorrect trailing backslash escape
Modified:
hbase/trunk/hbase-common/src/main/java/org/apache/hadoop/hbase/util/Bytes.java
hbase/trunk/hbase-common/src/test/java/org/apache/hadoop/hbase/util/TestBytes.java
Modified: hbase/trunk/hbase-common/src/main/java/org/apache/hadoop/hbase/util/Bytes.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-common/src/main/java/org/apache/hadoop/hbase/util/Bytes.java?rev=1384103&r1=1384102&r2=1384103&view=diff
==============================================================================
--- hbase/trunk/hbase-common/src/main/java/org/apache/hadoop/hbase/util/Bytes.java (original)
+++ hbase/trunk/hbase-common/src/main/java/org/apache/hadoop/hbase/util/Bytes.java Wed Sep 12 19:51:19 2012
@@ -382,19 +382,12 @@ public class Bytes {
}
public static byte [] toBytesBinary(String in) {
- // this may be bigger than we need, but lets be safe.
+ // this may be bigger than we need, but let's be safe.
byte [] b = new byte[in.length()];
int size = 0;
for (int i = 0; i < in.length(); ++i) {
char ch = in.charAt(i);
- if (ch == '\\') {
- // begin hex escape:
- char next = in.charAt(i+1);
- if (next != 'x') {
- // invalid escape sequence, ignore this one.
- b[size++] = (byte)ch;
- continue;
- }
+ if (ch == '\\' && in.length() > i+1 && in.charAt(i+1) == 'x') {
// ok, take next 2 hex digits.
char hd1 = in.charAt(i+2);
char hd2 = in.charAt(i+3);
Modified: hbase/trunk/hbase-common/src/test/java/org/apache/hadoop/hbase/util/TestBytes.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-common/src/test/java/org/apache/hadoop/hbase/util/TestBytes.java?rev=1384103&r1=1384102&r2=1384103&view=diff
==============================================================================
--- hbase/trunk/hbase-common/src/test/java/org/apache/hadoop/hbase/util/TestBytes.java (original)
+++ hbase/trunk/hbase-common/src/test/java/org/apache/hadoop/hbase/util/TestBytes.java Wed Sep 12 19:51:19 2012
@@ -290,5 +290,13 @@ public class TestBytes extends TestCase
assertFalse(bytes == copy);
assertTrue(Bytes.equals(bytes, copy));
}
+
+ public void testToBytesBinaryTrailingBackslashes() throws Exception {
+ try {
+ Bytes.toBytesBinary("abc\\x00\\x01\\");
+ } catch (StringIndexOutOfBoundsException ex) {
+ fail("Illegal string access: " + ex.getMessage());
+ }
+ }
}