Fix segfault when loading a single string from an hdf5 file
authorRik <rik@octave.org>
Fri, 12 Jun 2020 08:15:25 +0000 (09:15 +0100)
committerSébastien Villemot <sebastien@debian.org>
Fri, 12 Jun 2020 08:15:25 +0000 (09:15 +0100)
Origin: vendor, https://hg.savannah.gnu.org/hgweb/octave/rev/9646d752c76c
Bug: https://savannah.gnu.org/bugs/index.php?58268
Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=959109
Forwarded: not-needed
Acked-by: Rafael Laboissière <rafael@debian.org>
Last-Update: 2016-04-30

Gbp-Pq: Name load-hdf5-string-crash.patch

libinterp/octave-value/ov-str-mat.cc

index f86a451fffce7457f42d72649a73a1a1d34aaeab..161492c1139837eae21bbc49bca45ed8a1055cd4 100644 (file)
@@ -680,9 +680,8 @@ octave_char_matrix_str::load_hdf5 (octave_hdf5_id loc_id, const char *name)
     }
   else
     {
-      // This is cruft for backward compatibility and easy data
-      // importation
-      if (rank == 0) //FIXME: Does rank==0 even exist for strings in HDF5?
+      // This is cruft for backward compatibility and easy data importation
+      if (rank == 0)
         {
           // a single string:
           int slen = H5Tget_size (type_hid);
@@ -695,9 +694,8 @@ octave_char_matrix_str::load_hdf5 (octave_hdf5_id loc_id, const char *name)
             }
           else
             {
-              OCTAVE_LOCAL_BUFFER (char, s, slen);
-              // create datatype for (null-terminated) string
-              // to read into:
+              OCTAVE_LOCAL_BUFFER (char, s, slen+1);
+              // create datatype for (null-terminated) string to read into:
               hid_t st_id = H5Tcopy (H5T_C_S1);
               H5Tset_size (st_id, slen+1);
               if (H5Dread (data_hid, st_id, octave_H5S_ALL,