diff --git a/cpp/src/parquet/decoder.cc b/cpp/src/parquet/decoder.cc index 46d1c201e92..57c0ec3a0a6 100644 --- a/cpp/src/parquet/decoder.cc +++ b/cpp/src/parquet/decoder.cc @@ -178,6 +178,9 @@ struct ArrowBinaryHelper { Status AppendValue(const uint8_t* data, int32_t length, std::optional estimated_remaining_data_length = {}) { + if (ARROW_PREDICT_FALSE(data == nullptr)) { + return Status::Invalid("data is nullptr"); + } if (!kIsBinaryView && estimated_remaining_data_length.has_value()) { // Assume Prepare() was already called with an estimated_data_length builder_->UnsafeAppend(data, length); @@ -207,6 +210,9 @@ struct ArrowBinaryHelper { Status AppendValue(const uint8_t* data, int32_t length, std::optional estimated_remaining_data_length = {}) { + if (ARROW_PREDICT_FALSE(data == nullptr)) { + return Status::Invalid("data is nullptr"); + } acc_->UnsafeAppend(data); return Status::OK(); }