[llvm] [lldb][llvm] Return an error instead of crashing when parsing a line table prologue. (PR #80769)
David Blaikie via llvm-commits
llvm-commits at lists.llvm.org
Mon Feb 26 15:12:01 PST 2024
================
@@ -389,9 +389,25 @@ Error DWARFDebugLine::Prologue::parse(
if (getVersion() >= 5) {
FormParams.AddrSize = DebugLineData.getU8(Cursor);
- assert((!Cursor || DebugLineData.getAddressSize() == 0 ||
- DebugLineData.getAddressSize() == getAddressSize()) &&
- "Line table header and data extractor disagree");
+ const uint8_t DataAddrSize = DebugLineData.getAddressSize();
+ const uint8_t PrologueAddrSize = getAddressSize();
+ if (Cursor) {
+ if (DataAddrSize == 0) {
+ if (PrologueAddrSize != 4 && PrologueAddrSize != 8) {
+ RecoverableErrorHandler(createStringError(
+ errc::not_supported,
+ "parsing line table prologue at offset 0x%8.8" PRIx64
+ ": invalid address size %" PRIu8,
+ PrologueOffset, PrologueAddrSize));
+ }
+ } else if (DataAddrSize != PrologueAddrSize) {
+ RecoverableErrorHandler(createStringError(
----------------
dwblaikie wrote:
Looks like this path isn't tested? Could you add a test?
https://github.com/llvm/llvm-project/pull/80769
More information about the llvm-commits
mailing list