Do not apply offsets to null pointers

This commit is contained in:
Jonathan Coates 2025-02-03 12:04:02 +00:00
parent 63157588bb
commit 8b9bb38331

View File

@ -85,7 +85,7 @@ unsafe fn get_ttype_entry(
encoding | DW_EH_PE_pcrel, encoding | DW_EH_PE_pcrel,
ttype_base, ttype_base,
) )
.map(|v| (v != ttype_base).then(|| v as *const u8)) .map(|v| (v != 0).then(|| v as *const u8))
} }
pub unsafe fn find_eh_action( pub unsafe fn find_eh_action(
@ -275,6 +275,11 @@ unsafe fn read_encoded_pointer_with_base(reader: &mut DwarfReader, encoding: u8,
_ => return Err(()), _ => return Err(()),
}; };
if result == 0 {
// null is just encoded as 0, even if a relative encoding is used for the table.
return Ok(0);
}
result += if (encoding & 0x70) == DW_EH_PE_pcrel { result += if (encoding & 0x70) == DW_EH_PE_pcrel {
original_ptr as usize original_ptr as usize
} else { } else {