diff options
author | Tom Tromey <tromey@adacore.com> | 2020-04-23 12:15:28 -0600 |
---|---|---|
committer | Tom Tromey <tromey@adacore.com> | 2020-04-23 12:53:15 -0600 |
commit | 29514b87281c438543e4fc6ddda245dc194d5677 (patch) | |
tree | 2edb72de2b11762b80a2a541707782206f29dd52 /gdb/windows-tdep.c | |
parent | 5939967b355ba6a940887d19847b7893a4506067 (diff) | |
download | gdb-29514b87281c438543e4fc6ddda245dc194d5677.zip gdb-29514b87281c438543e4fc6ddda245dc194d5677.tar.gz gdb-29514b87281c438543e4fc6ddda245dc194d5677.tar.bz2 |
Fix infinite loop in is_linked_with_cygwin_dll
There were some Windows timeouts after the last merge. Debugging
showed that these were caused by an infinite loop in
is_linked_with_cygwin_dll when reading C:\Windows\SysWOW64\win32u.dll.
This patch fixes the problem by ensuring that the loop always makes
progress.
gdb/ChangeLog
2020-04-23 Tom Tromey <tromey@adacore.com>
* windows-tdep.c (is_linked_with_cygwin_dll): Always update "iter"
in loop.
Diffstat (limited to 'gdb/windows-tdep.c')
-rw-r--r-- | gdb/windows-tdep.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/gdb/windows-tdep.c b/gdb/windows-tdep.c index e2b7960..153ad13 100644 --- a/gdb/windows-tdep.c +++ b/gdb/windows-tdep.c @@ -1071,18 +1071,19 @@ range [0x%" BFD_VMA_FMT "x, 0x%" BFD_VMA_FMT "x[."), const gdb_byte *name = &idata_contents[name_va - idata_section_va]; - /* Make sure we don't overshoot the end of the section with the streq. */ - if (name + sizeof (CYGWIN_DLL_NAME) > end) - continue; - - /* Finally, check if this is the dll name we are looking for. */ - if (streq ((const char *) name, CYGWIN_DLL_NAME)) - return true; + /* Make sure we don't overshoot the end of the section with the + streq. */ + if (name + sizeof (CYGWIN_DLL_NAME) <= end) + { + /* Finally, check if this is the dll name we are looking for. */ + if (streq ((const char *) name, CYGWIN_DLL_NAME)) + return true; + } iter += sizeof (pe_import_directory_entry); } - return false; + return false; } void _initialize_windows_tdep (); |