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);
       }