vpnor copy_flash: remove incorrect size check

Remove a read window size check, which essentially mandated that a pnor
partition is at least as large as the window size.

To elaborate, the current mbox implementation assumes a read window size
of 1M. This is as per protocol; a host can even send a read size of 0,
the BMC implementation is responsible for reading what's valid and fits
in the window, and inform host about the size read. There was a check
which would see that a read size of 1M past the requested flash offset
is larger than an actual partition file size (for partitions < 1M), and
would fail the read request. Instead, in such a case, read the entire
partition and inform host about the size read.

Change-Id: I07d4b24d7eb31c5473c4142e96743d8f8d0e08a2
Signed-off-by: Deepak Kodihalli <dkodihal@in.ibm.com>
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 @@
             // 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);
         }
     }