diff options
| author | Rene Gollent <anevilyak@gmail.com> | 2012-07-14 12:09:11 -0400 |
|---|---|---|
| committer | Rene Gollent <anevilyak@gmail.com> | 2012-07-14 12:09:11 -0400 |
| commit | 6faa3c97662c81aaea1bfa5b6803bb33d733f6af (patch) | |
| tree | 79d965a1f75b5892e2f42a6a437dff71847af689 | |
| parent | c163f973e6a96a2c37d70cc1992f2bb027f9ab81 (diff) | |
- If we're asked to generate an entry for a tag we don't recognize,
return an error so don't then attempt to add a null/invalid entry into the
compilation unit's entry list and later crash dereferencing it.
| -rw-r--r-- | src/apps/debugger/dwarf/DebugInfoEntries.cpp | 1 | ||||
| -rw-r--r-- | src/apps/debugger/dwarf/DwarfFile.cpp | 6 |
2 files changed, 6 insertions, 1 deletions
diff --git a/src/apps/debugger/dwarf/DebugInfoEntries.cpp b/src/apps/debugger/dwarf/DebugInfoEntries.cpp index 976684090c..9c2ecf47a9 100644 --- a/src/apps/debugger/dwarf/DebugInfoEntries.cpp +++ b/src/apps/debugger/dwarf/DebugInfoEntries.cpp @@ -2697,6 +2697,7 @@ DebugInfoEntryFactory::CreateDebugInfoEntry(uint16 tag, DebugInfoEntry*& _entry) entry = new(std::nothrow) DIESharedType; break; default: + return B_ENTRY_NOT_FOUND; break; } diff --git a/src/apps/debugger/dwarf/DwarfFile.cpp b/src/apps/debugger/dwarf/DwarfFile.cpp index f07f10ae2a..f95d18ea4a 100644 --- a/src/apps/debugger/dwarf/DwarfFile.cpp +++ b/src/apps/debugger/dwarf/DwarfFile.cpp @@ -825,8 +825,12 @@ DwarfFile::_ParseDebugInfoEntry(DataReader& dataReader, DebugInfoEntry* entry; status_t error = fDebugInfoFactory.CreateDebugInfoEntry( abbreviationEntry.Tag(), entry); - if (error != B_OK) + if (error != B_OK) { + WARNING("Failed to generate entry for tag %lu, code %lu\n", + abbreviationEntry.Tag(), code); return error; + } + ObjectDeleter<DebugInfoEntry> entryDeleter(entry); TRACE_DIE("%*sentry %p at %lld: %lu, tag: %s (%lu), children: %d\n", |
