Fix off-by-one error in size of coredumps. Patch from Ivo Raisr
(ivosh@ivosh.net). Fixes #338300.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14457 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/coregrind/m_coredump/coredump-elf.c b/coregrind/m_coredump/coredump-elf.c
index b125e7c..61a1ce0 100644
--- a/coregrind/m_coredump/coredump-elf.c
+++ b/coregrind/m_coredump/coredump-elf.c
@@ -112,7 +112,7 @@
static void fill_phdr(ESZ(Phdr) *phdr, const NSegment *seg, UInt off, Bool write)
{
- SizeT len = seg->end - seg->start;
+ SizeT len = seg->end - seg->start + 1;
write = write && should_dump(seg);
@@ -700,7 +700,7 @@
continue;
fill_phdr(&phdrs[idx], seg, off,
- (seg->end - seg->start + off) < max_size);
+ (seg->end - seg->start + 1 + off) < max_size);
off += phdrs[idx].p_filesz;
@@ -725,7 +725,7 @@
if (phdrs[idx].p_filesz > 0) {
vg_assert(VG_(lseek)(core_fd, phdrs[idx].p_offset, VKI_SEEK_SET)
== phdrs[idx].p_offset);
- vg_assert(seg->end - seg->start >= phdrs[idx].p_filesz);
+ vg_assert(seg->end - seg->start + 1 >= phdrs[idx].p_filesz);
(void)VG_(write)(core_fd, (void *)seg->start, phdrs[idx].p_filesz);
}