You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@avro.apache.org by bl...@apache.org on 2016/09/04 00:26:19 UTC

avro git commit: AVRO-1888: Java: Fix single-record encoding marker check.

Repository: avro
Updated Branches:
  refs/heads/master fa0059c55 -> 17cfe99d7


AVRO-1888: Java: Fix single-record encoding marker check.


Project: http://git-wip-us.apache.org/repos/asf/avro/repo
Commit: http://git-wip-us.apache.org/repos/asf/avro/commit/17cfe99d
Tree: http://git-wip-us.apache.org/repos/asf/avro/tree/17cfe99d
Diff: http://git-wip-us.apache.org/repos/asf/avro/diff/17cfe99d

Branch: refs/heads/master
Commit: 17cfe99d72121fad1ead76e8bf80729c5c7f7e6b
Parents: fa0059c
Author: Ryan Blue <bl...@apache.org>
Authored: Sat Sep 3 17:25:48 2016 -0700
Committer: Ryan Blue <bl...@apache.org>
Committed: Sat Sep 3 17:25:48 2016 -0700

----------------------------------------------------------------------
 CHANGES.txt                                     |  2 ++
 .../avro/message/BinaryMessageDecoder.java      |  4 +--
 .../avro/message/TestBinaryMessageEncoding.java | 38 ++++++++++++++++++++
 3 files changed, 42 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/avro/blob/17cfe99d/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index ce72273..8ed05db 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -30,6 +30,8 @@ Trunk (not yet released)
     AVRO-607: Java: Make SpecificData schema cache thread-safe.
     (Andrius Druzinis-Vitkus via blue)
 
+    AVRO-1888: Java: Fix single-record encoding marker check. (blue)
+
 Avro 1.8.1 (14 May 2016)
 
   INCOMPATIBLE CHANGES

http://git-wip-us.apache.org/repos/asf/avro/blob/17cfe99d/lang/java/avro/src/main/java/org/apache/avro/message/BinaryMessageDecoder.java
----------------------------------------------------------------------
diff --git a/lang/java/avro/src/main/java/org/apache/avro/message/BinaryMessageDecoder.java b/lang/java/avro/src/main/java/org/apache/avro/message/BinaryMessageDecoder.java
index 11a7336..af8b8c1 100644
--- a/lang/java/avro/src/main/java/org/apache/avro/message/BinaryMessageDecoder.java
+++ b/lang/java/avro/src/main/java/org/apache/avro/message/BinaryMessageDecoder.java
@@ -157,8 +157,8 @@ public class BinaryMessageDecoder<D> extends MessageDecoder.BaseDecoder<D> {
       throw new IOException("Failed to read header and fingerprint bytes", e);
     }
 
-    if (! (BinaryMessageEncoder.V1_HEADER[0] == header[0])
-        && BinaryMessageEncoder.V1_HEADER[1] == header[1]) {
+    if (BinaryMessageEncoder.V1_HEADER[0] != header[0] ||
+        BinaryMessageEncoder.V1_HEADER[1] != header[1]) {
       throw new BadHeaderException(String.format(
           "Unrecognized header bytes: 0x%h%h",
           header[0], header[1]));

http://git-wip-us.apache.org/repos/asf/avro/blob/17cfe99d/lang/java/avro/src/test/java/org/apache/avro/message/TestBinaryMessageEncoding.java
----------------------------------------------------------------------
diff --git a/lang/java/avro/src/test/java/org/apache/avro/message/TestBinaryMessageEncoding.java b/lang/java/avro/src/test/java/org/apache/avro/message/TestBinaryMessageEncoding.java
index 47656b8..91e8eea 100644
--- a/lang/java/avro/src/test/java/org/apache/avro/message/TestBinaryMessageEncoding.java
+++ b/lang/java/avro/src/test/java/org/apache/avro/message/TestBinaryMessageEncoding.java
@@ -238,4 +238,42 @@ public class TestBinaryMessageEncoding {
     decoder.decode(buffer);
   }
 
+  @Test(expected = BadHeaderException.class)
+  public void testByteBufferBadMarkerByte() throws Exception {
+    MessageEncoder<Record> encoder = new BinaryMessageEncoder<Record>(
+        GenericData.get(), SCHEMA_V2);
+    MessageDecoder<Record> decoder = new BinaryMessageDecoder<Record>(
+        GenericData.get(), SCHEMA_V2);
+
+    ByteBuffer buffer = encoder.encode(V2_RECORDS.get(0));
+    buffer.array()[0] = 0x00;
+
+    decoder.decode(buffer);
+  }
+
+  @Test(expected = BadHeaderException.class)
+  public void testByteBufferBadVersionByte() throws Exception {
+    MessageEncoder<Record> encoder = new BinaryMessageEncoder<Record>(
+        GenericData.get(), SCHEMA_V2);
+    MessageDecoder<Record> decoder = new BinaryMessageDecoder<Record>(
+        GenericData.get(), SCHEMA_V2);
+
+    ByteBuffer buffer = encoder.encode(V2_RECORDS.get(0));
+    buffer.array()[1] = 0x00;
+
+    decoder.decode(buffer);
+  }
+
+  @Test(expected = MissingSchemaException.class)
+  public void testByteBufferUnknownSchema() throws Exception {
+    MessageEncoder<Record> encoder = new BinaryMessageEncoder<Record>(
+        GenericData.get(), SCHEMA_V2);
+    MessageDecoder<Record> decoder = new BinaryMessageDecoder<Record>(
+        GenericData.get(), SCHEMA_V2);
+
+    ByteBuffer buffer = encoder.encode(V2_RECORDS.get(0));
+    buffer.array()[4] = 0x00;
+
+    decoder.decode(buffer);
+  }
 }