Fix latent bug in set_is_exec_point_at
authorTom Tromey <tom@tromey.com>
Sun, 23 Jun 2019 22:07:12 +0000 (16:07 -0600)
committerTom Tromey <tom@tromey.com>
Tue, 25 Jun 2019 13:48:51 +0000 (07:48 -0600)
valgrind pointed out that the TUI was using uninitialized memory in
set_is_exec_point_at.  The bug is a missing check against LOA_ADDRESS,
causing gdb to examine the uninitialized bits of the "addr" field.

gdb/ChangeLog
2019-06-25  Tom Tromey  <tom@tromey.com>

* tui/tui-winsource.c
(tui_source_window_base::set_is_exec_point_at): Add check against
LOA_ADDRESS.

gdb/ChangeLog
gdb/tui/tui-winsource.c

index 9898bcd5c91186deb7b07f2781d4a19a0915ec1d..43ed9bca9faa34b24cfb67d1d6df11748d195cb0 100644 (file)
@@ -1,3 +1,9 @@
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+       * tui/tui-winsource.c
+       (tui_source_window_base::set_is_exec_point_at): Add check against
+       LOA_ADDRESS.
+
 2019-06-25  Tom Tromey  <tom@tromey.com>
 
        * tui/tui-source.c (tui_set_source_content): Don't check before
index 93c6253fd658d9cbe10b4ceccdbe0cc6c233769c..6ec1f1bc0b6c72adae0ea02d85f54100bd780a6f 100644 (file)
@@ -365,7 +365,7 @@ tui_source_window_base::set_is_exec_point_at (struct tui_line_or_address l)
                  || content_loa.loa == LOA_ADDRESS);
       if (content_loa.loa == l.loa
          && ((l.loa == LOA_LINE && content_loa.u.line_no == l.u.line_no)
-              || (content_loa.u.addr == l.u.addr)))
+              || (l.loa == LOA_ADDRESS && content_loa.u.addr == l.u.addr)))
         new_state = true;
       else
        new_state = false;