{
// get data from segment
GElf_Phdr mem;
- GElf_Phdr *phdr = gelf_getphdr (g_core, segment, &mem);
- Dwarf_Addr offset_in_segment = a - phdr->p_vaddr;
- if (offset_in_segment < phdr->p_filesz)
+ GElf_Phdr *phdr;
+ Dwarf_Addr offset_in_segment;
+
+ phdr = gelf_getphdr (g_core, segment, &mem);
+ if (phdr != NULL)
{
- Dwarf_Addr offset_in_file = phdr->p_offset + offset_in_segment;
+ offset_in_segment = a - phdr->p_vaddr;
+ if (offset_in_segment < phdr->p_filesz)
+ {
+ Dwarf_Addr offset_in_file = phdr->p_offset + offset_in_segment;
- data = elf_getdata_rawchunk (g_core, offset_in_file, size, ELF_T_BYTE);
+ data = elf_getdata_rawchunk (g_core, offset_in_file, size, ELF_T_BYTE);
+ }
}
}