Don't reference past the end of the vector
authorTom Tromey <tom@tromey.com>
Fri, 9 Feb 2018 12:58:46 +0000 (05:58 -0700)
committerTom Tromey <tom@tromey.com>
Fri, 9 Feb 2018 13:46:11 +0000 (06:46 -0700)
An earlier change made find_source_lines read:

    end = &data[size];

However, since 'size' is the size of the vector, this seems fishy.
More obviously ok is to compute the end of the data directly:

    end = data.data () + size;

2018-02-09  Tom Tromey  <tom@tromey.com>

* source.c (find_source_lines): Don't reference past the end of
the vector.

gdb/ChangeLog
gdb/source.c

index f1d662fa15b95a33ee8b79665b3e0bb621f0f51c..b554fce13c36f098d8e3b2af5fa6e48ff2d78a94 100644 (file)
@@ -1,3 +1,8 @@
+2018-02-09  Tom Tromey  <tom@tromey.com>
+
+       * source.c (find_source_lines): Don't reference past the end of
+       the vector.
+
 2018-02-09  Markus Metzger  <markus.t.metzger@intel.com>
 
        * remote.c (remote_btrace_maybe_reopen): Change error message.
index 9eec58febdd4a06fe1800499fd67ffab47a60d2f..009bec5285d9bd1deb2d847226c4b74e6f5ba44b 100644 (file)
@@ -1219,7 +1219,7 @@ find_source_lines (struct symtab *s, int desc)
     size = myread (desc, data.data (), size);
     if (size < 0)
       perror_with_name (symtab_to_filename_for_display (s));
-    end = &data[size];
+    end = data.data () + size;
     p = &data[0];
     line_charpos[0] = 0;
     nlines = 1;