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);
+ }
}