off-by-one fix for py-linetable.c
authorTom Tromey <tromey@redhat.com>
Thu, 14 Nov 2013 18:09:14 +0000 (11:09 -0700)
committerTom Tromey <tromey@redhat.com>
Thu, 14 Nov 2013 18:09:14 +0000 (11:09 -0700)
While digging into a different memory corruption error, I happened to
notice one coming from the linetable code.  In a couple of spots, the
wrong termination condition was used in a loop, leading gdb to read
one element past the end of the linetable.

Built and regtested on x86-64 Fedora 18.  Also verified using
valgrind.  I'm checking this in.

2013-11-14  Tom Tromey  <tromey@redhat.com>

* python/py-linetable.c (ltpy_has_line)
(ltpy_get_all_source_lines): Fix loop termination condition.

gdb/ChangeLog
gdb/python/py-linetable.c

index 8cbe4a4..a9afe02 100644 (file)
@@ -1,3 +1,8 @@
+2013-11-14  Tom Tromey  <tromey@redhat.com>
+
+       * python/py-linetable.c (ltpy_has_line)
+       (ltpy_get_all_source_lines): Fix loop termination condition.
+
 2013-11-14  Joel Brobecker  <brobecker@adacore.com>
 
        * mi/mi-parse.h (struct mi_parse) <language>: New field.
index 8c01a0e..e0449a6 100644 (file)
@@ -215,7 +215,7 @@ ltpy_has_line (PyObject *self, PyObject *args)
       return NULL;
     }
 
-  for (index = 0; index <= LINETABLE (symtab)->nitems; index++)
+  for (index = 0; index < LINETABLE (symtab)->nitems; index++)
     {
       struct linetable_entry *item = &(symtab->linetable->item[index]);
       if (item->line == py_line)
@@ -252,7 +252,7 @@ ltpy_get_all_source_lines (PyObject *self, PyObject *args)
   if (source_dict == NULL)
     return NULL;
 
-  for (index = 0; index <= LINETABLE (symtab)->nitems; index++)
+  for (index = 0; index < LINETABLE (symtab)->nitems; index++)
     {
       item = &(LINETABLE (symtab)->item[index]);