|
From: <sv...@va...> - 2014-09-04 11:28:21
|
Author: sewardj
Date: Thu Sep 4 11:28:11 2014
New Revision: 14457
Log:
Fix off-by-one error in size of coredumps. Patch from Ivo Raisr
(iv...@iv...). Fixes #338300.
Modified:
trunk/coregrind/m_coredump/coredump-elf.c
Modified: trunk/coregrind/m_coredump/coredump-elf.c
==============================================================================
--- trunk/coregrind/m_coredump/coredump-elf.c (original)
+++ trunk/coregrind/m_coredump/coredump-elf.c Thu Sep 4 11:28:11 2014
@@ -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);
}
|