aboutsummaryrefslogtreecommitdiffstats
path: root/qpdf
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2019-06-22 16:12:10 +0200
committerJay Berkenbilt <ejb@ql.org>2019-06-22 16:14:25 +0200
commit1bde5c68a302c99c627f86d8c95226a8a7623ac3 (patch)
treea29bbd128894dd564375ecef0917da310ef1ee6d /qpdf
parent658b5bb3be49d2666b91d35671de71c1cf0a5853 (diff)
downloadqpdf-1bde5c68a302c99c627f86d8c95226a8a7623ac3.tar.zst
Add QUtil::read_file_into_memory
This code was essentially duplicated between test_driver and standalone_fuzz_target_runner.
Diffstat (limited to 'qpdf')
-rw-r--r--qpdf/test_driver.cc42
1 files changed, 2 insertions, 40 deletions
diff --git a/qpdf/test_driver.cc b/qpdf/test_driver.cc
index 76d7dd26..7fb84a8f 100644
--- a/qpdf/test_driver.cc
+++ b/qpdf/test_driver.cc
@@ -168,44 +168,6 @@ static void print_rect(std::ostream& out,
<< r.urx << ", " << r.ury << "]";
}
-static void read_file_into_memory(
- char const* filename,
- PointerHolder<char>& file_buf, size_t& size)
-{
- FILE* f = QUtil::safe_fopen(filename, "rb");
- fseek(f, 0, SEEK_END);
- size = QIntC::to_size(QUtil::tell(f));
- fseek(f, 0, SEEK_SET);
- file_buf = PointerHolder<char>(true, new char[size]);
- char* buf_p = file_buf.getPointer();
- size_t bytes_read = 0;
- size_t len = 0;
- while ((len = fread(buf_p + bytes_read, 1, size - bytes_read, f)) > 0)
- {
- bytes_read += len;
- }
- if (bytes_read != size)
- {
- if (ferror(f))
- {
- throw std::runtime_error(
- std::string("failure reading file ") + filename +
- " into memory: read " +
- QUtil::uint_to_string(bytes_read) + "; wanted " +
- QUtil::uint_to_string(size));
- }
- else
- {
- throw std::logic_error(
- std::string("premature eof reading file ") + filename +
- " into memory: read " +
- QUtil::uint_to_string(bytes_read) + "; wanted " +
- QUtil::uint_to_string(size));
- }
- }
- fclose(f);
-}
-
#define assert_compare_numbers(expected, expr) \
compare_numbers(#expr, expected, expr)
@@ -277,7 +239,7 @@ void runtest(int n, char const* filename1, char const* arg2)
std::string filename(std::string(filename1) + ".obfuscated");
size_t size = 0;
- read_file_into_memory(filename.c_str(), file_buf, size);
+ QUtil::read_file_into_memory(filename.c_str(), file_buf, size);
char* p = file_buf.getPointer();
for (size_t i = 0; i < size; ++i)
{
@@ -308,7 +270,7 @@ void runtest(int n, char const* filename1, char const* arg2)
{
QTC::TC("qpdf", "exercise processMemoryFile");
size_t size = 0;
- read_file_into_memory(filename1, file_buf, size);
+ QUtil::read_file_into_memory(filename1, file_buf, size);
pdf.processMemoryFile(filename1, file_buf.getPointer(), size);
}