From 0d0a82b1a271964cc829067a8240a6b17244ea25 Mon Sep 17 00:00:00 2001 From: Avi Kivity <avi.kivity@gmail.com> Date: Mon, 7 Jan 2013 16:28:20 +0200 Subject: [PATCH] mmu: allow mapping a short file When loading a small library (libverify.so) this happens. Since it's legal, allow it. --- mmu.cc | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/mmu.cc b/mmu.cc index 2ba5f6618..0a7f918de 100644 --- a/mmu.cc +++ b/mmu.cc @@ -131,8 +131,14 @@ namespace mmu { vma* map_file(void* addr, size_t size, unsigned perm, file& f, f_offset offset) { + auto fsize = f.size(); + if (offset >= fsize) { + return map_anon(addr, size, perm); + } vma* ret = map_anon_dontzero(addr, size, perm); - f.read(addr, offset, size); + auto rsize = std::min(offset + size, fsize) - offset; + f.read(addr, offset, rsize); + memset(addr + rsize, 0, size - rsize); return ret; } -- GitLab