Fix out-of-bounds read in tui_addr_is_displayed
Commit Message
In tui_addr_is_displayed(), if win_info->content.size() is less than 2, then
win_info->content.size () - threshold
will wrap to SIZE_MAX if threshold = SCROLL_THRESHOLD = 2.
The attached patch avoids calling win_info->content[i] below with i=0
which is past the end of the vector of size 0.
Bogdan
Comments
>>>>> "Bogdan" == Bogdan Harjoc <harjoc@gmail.com> writes:
Bogdan> In tui_addr_is_displayed(), if win_info->content.size() is less than 2, then
win_info-> content.size () - threshold
Bogdan> will wrap to SIZE_MAX if threshold = SCROLL_THRESHOLD = 2.
Bogdan> The attached patch avoids calling win_info->content[i] below with i=0
Bogdan> which is past the end of the vector of size 0.
Thank you for the patch. Nice catch.
This needs a ChangeLog entry but is otherwise ok.
Tom
@@ -742,7 +742,7 @@ tui_addr_is_displayed (CORE_ADDR addr,
else
threshold = 0;
i = 0;
- while (i < win_info->content.size () - threshold
+ while (i + threshold < win_info->content.size ()
&& !is_displayed)
{
is_displayed