+2021-12-17 Mark Wielaard <mark@klomp.org>
+
+ * libdwflP.h (dwfl_segment_report_module): Add maxread argument.
+ * core-file.c (dwfl_core_file_report): Pass elf->maximum_size to
+ dwfl_segment_report_module.
+ * dwfl_segment_report_module.c (dwfl_segment_report_module): Add
+ maxread argument. Check file_trimmed_end against maxread.
+
2021-12-16 Mark Wielaard <mark@klomp.org>
* dwfl_segment_report_module.c (dwfl_segment_report_module): Check
int seg = dwfl_segment_report_module (dwfl, ndx, NULL,
&dwfl_elf_phdr_memory_callback, elf,
core_file_read_eagerly, elf,
+ elf->maximum_size,
note_file, note_file_size,
&r_debug_info);
if (unlikely (seg < 0))
void *memory_callback_arg,
Dwfl_Module_Callback *read_eagerly,
void *read_eagerly_arg,
+ size_t maxread,
const void *note_file, size_t note_file_size,
const struct r_debug_info *r_debug_info)
{
/* The caller wants to read the whole file in right now, but hasn't
done it for us. Fill in a local image of the virtual file. */
- if (file_trimmed_end > SIZE_MAX)
- goto out;
+ if (file_trimmed_end > maxread)
+ file_trimmed_end = maxread;
void *contents = calloc (1, file_trimmed_end);
if (unlikely (contents == NULL))
void *memory_callback_arg,
Dwfl_Module_Callback *read_eagerly,
void *read_eagerly_arg,
+ size_t maxread,
const void *note_file,
size_t note_file_size,
const struct r_debug_info *r_debug_info);