Chromium Code Reviews| Index: testing/libfuzzer/xfa_codec_fuzzer.h |
| diff --git a/testing/libfuzzer/xfa_codec_fuzzer.h b/testing/libfuzzer/xfa_codec_fuzzer.h |
| index 38c4e0ac333f062343d5a7c06cfc9e80d659a3f0..2cc81453ea283050e443fb0de738237622e8d9da 100644 |
| --- a/testing/libfuzzer/xfa_codec_fuzzer.h |
| +++ b/testing/libfuzzer/xfa_codec_fuzzer.h |
| @@ -43,22 +43,31 @@ class XFACodecFuzzer { |
| private: |
| class Reader : public IFX_FileRead { |
| public: |
| - Reader(const uint8_t* data, size_t size) : m_data(data), m_size(size) {} |
| + Reader(const uint8_t* data, size_t size) |
| + : m_data(data), m_size(size), m_nCurPos(0) {} |
| ~Reader() {} |
| void Release() override {} |
| - FX_BOOL ReadBlock(void* buffer, FX_FILESIZE offset, size_t size) override { |
| + FX_BOOL IsEOF() override { |
| + return m_nCurPos >= static_cast<FX_FILESIZE>(m_size); |
| + } |
| + |
| + size_t ReadBlock(void* buffer, FX_FILESIZE offset, size_t size) override { |
| + if (offset > m_size) |
| + return 0; |
| if (offset + size > m_size) |
| size = m_size - offset; |
| memcpy(buffer, m_data + offset, size); |
| - return TRUE; |
| + m_nCurPos = offset + static_cast<FX_FILESIZE>(size); |
| + return size; |
| } |
| FX_FILESIZE GetSize() override { return static_cast<FX_FILESIZE>(m_size); } |
| private: |
| const uint8_t* const m_data; |
| + FX_FILESIZE m_nCurPos; |
| size_t m_size; |
|
Tom Sepez
2016/10/19 23:12:48
this may be cleaner if it were FX_FILESIZE as well
|
| }; |
| }; |