| // Copyright 2019 The PDFium Authors | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| #include "testing/test_loader.h" | |
| #include <stddef.h> | |
| #include "core/fxcrt/check_op.h" | |
| #include "core/fxcrt/fx_memcpy_wrappers.h" | |
| #include "core/fxcrt/numerics/checked_math.h" | |
| TestLoader::TestLoader(pdfium::span<const uint8_t> span) : span_(span) {} | |
| // static | |
| int TestLoader::GetBlock(void* param, | |
| unsigned long pos, | |
| unsigned char* pBuf, | |
| unsigned long size) { | |
| TestLoader* pLoader = static_cast<TestLoader*>(param); | |
| pdfium::CheckedNumeric<size_t> end = pos; | |
| end += size; | |
| CHECK_LE(end.ValueOrDie(), pLoader->span_.size()); | |
| FXSYS_memcpy(pBuf, &pLoader->span_[pos], size); | |
| return 1; | |
| } |