From 5cc56a6145b3f87a1cdd1fd7f1702752a3970aa0 Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Sat, 8 Oct 2022 19:46:10 +0100 Subject: [PATCH] Crashlog: Limit iterations of calls to bfd_find_inliner_info --- src/os/unix/crashlog_unix.cpp | 3 ++- src/os/windows/crashlog_win.cpp | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/os/unix/crashlog_unix.cpp b/src/os/unix/crashlog_unix.cpp index 2528bad68b..6c63ef9e0d 100644 --- a/src/os/unix/crashlog_unix.cpp +++ b/src/os/unix/crashlog_unix.cpp @@ -599,7 +599,8 @@ class CrashLogUnix : public CrashLog { } #if defined(WITH_BFD) 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) { int status = -1; char *demangled = nullptr; diff --git a/src/os/windows/crashlog_win.cpp b/src/os/windows/crashlog_win.cpp index cda74d7aa5..6a85a34703 100644 --- a/src/os/windows/crashlog_win.cpp +++ b/src/os/windows/crashlog_win.cpp @@ -554,7 +554,8 @@ char *CrashLogWindows::AppendDecodedStacktrace(char *buffer, const char *last) c const char *file_name = nullptr; const char *func_name = nullptr; 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)), ""); if (func_name) { int status = -1;