From 01f9ade1a1ddc15acedda9042edfe4fc70f1935c Mon Sep 17 00:00:00 2001 From: Salim Achouche Date: Wed, 30 Jan 2019 14:26:58 -0800 Subject: [PATCH] DRILL-7018: Fixed Parquet buffer overflow when reading timestamp column --- .../columnreaders/NullableFixedByteAlignedReaders.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/columnreaders/NullableFixedByteAlignedReaders.java b/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/columnreaders/NullableFixedByteAlignedReaders.java index 5d8c9c2c4fc..886721eb333 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/columnreaders/NullableFixedByteAlignedReaders.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/columnreaders/NullableFixedByteAlignedReaders.java @@ -111,6 +111,9 @@ static class NullableFixedBinaryAsTimeStampReader extends NullableFixedByteAlign NullableFixedBinaryAsTimeStampReader(ParquetRecordReader parentReader, ColumnDescriptor descriptor, ColumnChunkMetaData columnChunkMetaData, boolean fixedLength, NullableTimeStampVector v, SchemaElement schemaElement) throws ExecutionSetupException { super(parentReader, descriptor, columnChunkMetaData, fixedLength, v, schemaElement); + + // The width of each element of the TimeStampVector is 8 bytes (64 bits) instead of 12 bytes. + dataTypeLengthInBits = NullableTimeStampHolder.WIDTH * 8; } @Override @@ -127,8 +130,6 @@ protected void readField(long recordsToReadInThisPass) { valueVec.getMutator().setSafe(valuesReadInCurrentPass + i, getDateTimeValueFromBinary(binaryTimeStampValue, true)); } } - // The width of each element of the TimeStampVector is 8 bytes (64 bits) instead of 12 bytes. - dataTypeLengthInBits = NullableTimeStampHolder.WIDTH * 8; } }