Crashlog: Limit iterations of calls to bfd_find_inliner_info

This commit is contained in:
Jonathan G Rennison
2022-10-08 19:46:10 +01:00
parent 63699e3f24
commit 5cc56a6145
2 changed files with 4 additions and 2 deletions

View File

@@ -599,7 +599,8 @@ class CrashLogUnix : public CrashLog {
} }
#if defined(WITH_BFD) #if defined(WITH_BFD)
if (ok && bfd_info.found && bfd_info.abfd) { if (ok && bfd_info.found && bfd_info.abfd) {
while (bfd_find_inliner_info(bfd_info.abfd, &file_name, &func_name, &line_num)) { uint iteration_limit = 32;
while (iteration_limit-- && bfd_find_inliner_info(bfd_info.abfd, &file_name, &func_name, &line_num)) {
if (func_name) { if (func_name) {
int status = -1; int status = -1;
char *demangled = nullptr; char *demangled = nullptr;

View File

@@ -554,7 +554,8 @@ char *CrashLogWindows::AppendDecodedStacktrace(char *buffer, const char *last) c
const char *file_name = nullptr; const char *file_name = nullptr;
const char *func_name = nullptr; const char *func_name = nullptr;
uint line_num = 0; uint line_num = 0;
while (bfd_find_inliner_info(bfd_info.abfd, &file_name, &func_name, &line_num)) { uint iteration_limit = 32;
while (iteration_limit-- && bfd_find_inliner_info(bfd_info.abfd, &file_name, &func_name, &line_num)) {
buffer += seprintf(buffer, last, "\n[inlined]%*s", (int)(19 + (sizeof(void *) * 2)), ""); buffer += seprintf(buffer, last, "\n[inlined]%*s", (int)(19 + (sizeof(void *) * 2)), "");
if (func_name) { if (func_name) {
int status = -1; int status = -1;