Merge "Change the parameter type of offset in read" am: 74a5df06af am: eead9e3eda am: b2415d3b32 am: 922228afb8

Change-Id: I551d87a3f497fb869889967961f7ea4d58dcf449
This commit is contained in:
Tianjie Xu
2020-04-04 21:13:01 +00:00
committed by Automerger Merge Worker

View File

@@ -40,7 +40,7 @@ class FileReader : public zip_archive::Reader {
explicit FileReader(FILE* fp) : Reader(), mFp(fp), mCurrentOffset(0) { explicit FileReader(FILE* fp) : Reader(), mFp(fp), mCurrentOffset(0) {
} }
bool ReadAtOffset(uint8_t* buf, size_t len, uint32_t offset) const { bool ReadAtOffset(uint8_t* buf, size_t len, off64_t offset) const {
// Data is usually requested sequentially, so this helps avoid pointless // Data is usually requested sequentially, so this helps avoid pointless
// fseeks every time we perform a read. There's an impedence mismatch // fseeks every time we perform a read. There's an impedence mismatch
// here because the original API was designed around pread and pwrite. // here because the original API was designed around pread and pwrite.
@@ -63,7 +63,7 @@ class FileReader : public zip_archive::Reader {
private: private:
FILE* mFp; FILE* mFp;
mutable uint32_t mCurrentOffset; mutable off64_t mCurrentOffset;
}; };
class FdReader : public zip_archive::Reader { class FdReader : public zip_archive::Reader {
@@ -71,8 +71,8 @@ class FdReader : public zip_archive::Reader {
explicit FdReader(int fd) : mFd(fd) { explicit FdReader(int fd) : mFd(fd) {
} }
bool ReadAtOffset(uint8_t* buf, size_t len, uint32_t offset) const { bool ReadAtOffset(uint8_t* buf, size_t len, off64_t offset) const {
return android::base::ReadFullyAtOffset(mFd, buf, len, static_cast<off_t>(offset)); return android::base::ReadFullyAtOffset(mFd, buf, len, offset);
} }
private: private:
@@ -86,8 +86,8 @@ class BufferReader : public zip_archive::Reader {
mInputSize(inputSize) { mInputSize(inputSize) {
} }
bool ReadAtOffset(uint8_t* buf, size_t len, uint32_t offset) const { bool ReadAtOffset(uint8_t* buf, size_t len, off64_t offset) const {
if (offset + len > mInputSize) { if (mInputSize < len || offset > mInputSize - len) {
return false; return false;
} }