summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mboxd_flash_virtual.cpp12
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);
}
}
OpenPOWER on IntegriCloud