From cb6af0d9c8dbb4d4fb37376e1ffc73c014563af0 Mon Sep 17 00:00:00 2001 From: mwish Date: Fri, 12 Jul 2024 11:00:51 +0800 Subject: [PATCH] also check nullptr for decryptor --- .../parquet/encryption/internal_file_decryptor.cc | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/cpp/src/parquet/encryption/internal_file_decryptor.cc b/cpp/src/parquet/encryption/internal_file_decryptor.cc index a900a4d2eb094..26b8a9c2064d7 100644 --- a/cpp/src/parquet/encryption/internal_file_decryptor.cc +++ b/cpp/src/parquet/encryption/internal_file_decryptor.cc @@ -27,7 +27,7 @@ namespace parquet { Decryptor::Decryptor(std::shared_ptr aes_decryptor, const std::string& key, const std::string& file_aad, const std::string& aad, ::arrow::MemoryPool* pool) - : aes_decryptor_(aes_decryptor), + : aes_decryptor_(std::move(aes_decryptor)), key_(key), file_aad_(file_aad), aad_(aad), @@ -154,11 +154,15 @@ std::shared_ptr InternalFileDecryptor::GetFooterDecryptor( aes_data_decryptor = encryption::AesDecryptor::Make( algorithm_, key_len, /*metadata=*/false, &all_decryptors_); } + if (ARROW_PREDICT_FALSE(aes_metadata_decryptor == nullptr || + aes_data_decryptor == nullptr)) { + throw ParquetException("Failed to create AES decryptor"); + } footer_metadata_decryptor_ = std::make_shared( - aes_metadata_decryptor, footer_key, file_aad_, aad, pool_); - footer_data_decryptor_ = - std::make_shared(aes_data_decryptor, footer_key, file_aad_, aad, pool_); + std::move(aes_metadata_decryptor), footer_key, file_aad_, aad, pool_); + footer_data_decryptor_ = std::make_shared(std::move(aes_data_decryptor), + footer_key, file_aad_, aad, pool_); if (metadata) return footer_metadata_decryptor_; return footer_data_decryptor_;