diff options
-rw-r--r-- | mboxd_flash_virtual.cpp | 12 |
1 files changed, 2 insertions, 10 deletions
diff --git a/mboxd_flash_virtual.cpp b/mboxd_flash_virtual.cpp index 182278b..fb4075f 100644 --- a/mboxd_flash_virtual.cpp +++ b/mboxd_flash_virtual.cpp @@ -176,18 +176,10 @@ int64_t copy_flash(struct mbox_context* context, uint32_t offset, void* mem, // then size of the partition file then throw error. uint32_t baseOffset = partitionInfo->data.base << context->block_size_shift; - - if ((offset + size) > (baseOffset + partitionInfo->data.actual)) - { - MSG_ERR("Offset is beyond the partition file length[0x%.8x]\n", - partitionInfo->data.actual); - munmap(mapped_mem, partitionInfo->data.actual); - elog<InternalFailure>(); - } - //copy to the reserved memory area auto diffOffset = offset - baseOffset; - memcpy(mem, (char*)mapped_mem + diffOffset , size); + rc = std::min(partitionInfo->data.actual - diffOffset, size); + memcpy(mem, (char*)mapped_mem + diffOffset , rc); munmap(mapped_mem, partitionInfo->data.actual); } } |