From 5e91cff7e94be0058c9e4855b670f9734e0c438a Mon Sep 17 00:00:00 2001 From: Wes McKinney Date: Sat, 6 Feb 2016 12:30:14 -0800 Subject: [PATCH] PARQUET-455: Fix OS X / Clang compiler warnings There actually was a legitimate bug fixed here for malformed Parquet files, but we are not yet in a position to write a decent test for it until PARQUET-497. I will make a note on that JIRA. I also set our Travis CI build to fail on future compiler warnings. This also closes #15. Author: Wes McKinney Closes #40 from wesm/PARQUET-455 and squashes the following commits: a348063 [Wes McKinney] Compiler warnings fail the build 271d71e [Wes McKinney] Fix OS X / Clang compiler warnings Change-Id: I8b89f98506f59bb5b207b6cf1b0f2ea5d17c2585 --- cpp/src/parquet/encodings/plain-encoding.h | 7 ++++++- cpp/src/parquet/reader.cc | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/cpp/src/parquet/encodings/plain-encoding.h b/cpp/src/parquet/encodings/plain-encoding.h index 06d237ac09876..03f5940c3c74c 100644 --- a/cpp/src/parquet/encodings/plain-encoding.h +++ b/cpp/src/parquet/encodings/plain-encoding.h @@ -156,7 +156,12 @@ class PlainEncoder : public Encoder { explicit PlainEncoder(const ColumnDescriptor* descr) : Encoder(descr, parquet::Encoding::PLAIN) {} - virtual size_t Encode(const std::vector& src, int num_values, + virtual size_t Encode(const bool* src, int num_values, uint8_t* dst) { + throw ParquetException("this API for encoding bools not implemented"); + return 0; + } + + size_t Encode(const std::vector& src, int num_values, uint8_t* dst) { size_t bytes_required = BitUtil::RoundUp(num_values, 8) / 8; BitWriter bit_writer(dst, bytes_required); diff --git a/cpp/src/parquet/reader.cc b/cpp/src/parquet/reader.cc index a90bafb796a93..d3bc0a66075b6 100644 --- a/cpp/src/parquet/reader.cc +++ b/cpp/src/parquet/reader.cc @@ -199,7 +199,7 @@ void ParquetFileReader::ParseMetaData() { uint32_t metadata_len = *reinterpret_cast(footer_buffer); size_t metadata_start = filesize - FOOTER_SIZE - metadata_len; - if (metadata_start < 0) { + if (FOOTER_SIZE + metadata_len > filesize) { throw ParquetException("Invalid parquet file. File is less than file metadata size."); }