diff --git a/pwndbg/elf.py b/pwndbg/elf.py index 3a52704bf..3563fba0f 100644 --- a/pwndbg/elf.py +++ b/pwndbg/elf.py @@ -149,8 +149,9 @@ def get_containing_segments(elf_filepath, elf_loadaddr, vaddr): elf = get_elf_info_rebased(elf_filepath, elf_loadaddr) segments = [] for seg in elf.segments: - # disregard non-LOAD segments that are not file-backed (typically STACK) - if 'LOAD' not in seg['p_type'] and seg['p_filesz'] == 0: + # disregard segments which were unable to be named by pyelftools (see #777) + # and non-LOAD segments that are not file-backed (typically STACK) + if isinstance(seg['p_type'], int) or ('LOAD' not in seg['p_type'] and seg['p_filesz'] == 0): continue # disregard segments not containing vaddr if vaddr < seg['p_vaddr'] or vaddr >= seg['x_vaddr_mem_end']: