diff --git a/elfio/elfio.hpp b/elfio/elfio.hpp index c983a9e8da5f84e01fb8615a7dbd0530aea81e2a..63512b35711ea60116239b929e9799a3217202c4 100644 --- a/elfio/elfio.hpp +++ b/elfio/elfio.hpp @@ -728,7 +728,15 @@ class elfio } seg->set_file_size( segment_filesize ); - seg->set_memory_size( segment_memory ); + + // If we already have a memory size from loading an elf file (value > 0), + // it must not shrink! + // Memory size may be bigger than file size and it is the loader's job to do something + // with the surplus bytes in memory, like initializing them with a defined value. + if ( seg->get_memory_size() < segment_memory ) { + seg->set_memory_size( segment_memory ); + } + seg->set_offset(seg_start_pos); }