From 89dab822fd82c43999dce39aa456eb7424c1b119 Mon Sep 17 00:00:00 2001 From: Gyanendra Sinha Date: Fri, 26 Jul 2024 14:23:10 -0700 Subject: [PATCH 1/2] FileDataLoader fails to read the file when size > INT32_MAX --- extension/data_loader/file_data_loader.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/extension/data_loader/file_data_loader.cpp b/extension/data_loader/file_data_loader.cpp index 651bc713db..c26eee606f 100644 --- a/extension/data_loader/file_data_loader.cpp +++ b/extension/data_loader/file_data_loader.cpp @@ -8,9 +8,11 @@ #include +#include #include #include #include +#include #include #include @@ -189,7 +191,12 @@ Result FileDataLoader::load( size_t needed = size; uint8_t* buf = reinterpret_cast(aligned_buffer); while (needed > 0) { - ssize_t nread = ::read(fd_, buf, needed); + // read on macos would fail with EINVAL if size > INT32_MAX + ssize_t nread = ::read( + fd_, + buf, + std::min( + needed, static_cast(std::numeric_limits::max()))); if (nread < 0 && errno == EINTR) { // Interrupted by a signal; zero bytes read. continue; From 0a3116cfe02806243e6a2c5d9973bdd3f0cddde6 Mon Sep 17 00:00:00 2001 From: Gyanendra Sinha Date: Sat, 27 Jul 2024 09:43:03 -0700 Subject: [PATCH 2/2] Address comment --- extension/data_loader/file_data_loader.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extension/data_loader/file_data_loader.cpp b/extension/data_loader/file_data_loader.cpp index c26eee606f..7b041fef00 100644 --- a/extension/data_loader/file_data_loader.cpp +++ b/extension/data_loader/file_data_loader.cpp @@ -191,7 +191,7 @@ Result FileDataLoader::load( size_t needed = size; uint8_t* buf = reinterpret_cast(aligned_buffer); while (needed > 0) { - // read on macos would fail with EINVAL if size > INT32_MAX + // Reads on macos will fail with EINVAL if size > INT32_MAX. ssize_t nread = ::read( fd_, buf,