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."); }