summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjhendersonHDF <jhenderson@hdfgroup.org>2023-03-29 14:36:34 (GMT)
committerGitHub <noreply@github.com>2023-03-29 14:36:34 (GMT)
commite0c21e2f8feb0fe5b95bd0c38524ded125ecb17d (patch)
tree46eec01db58764f6631b168c1ac5269d41a1dba5
parent3ce739cb63344b808f75a200e5e3cbf076504632 (diff)
downloadhdf5-e0c21e2f8feb0fe5b95bd0c38524ded125ecb17d.zip
hdf5-e0c21e2f8feb0fe5b95bd0c38524ded125ecb17d.tar.gz
hdf5-e0c21e2f8feb0fe5b95bd0c38524ded125ecb17d.tar.bz2
Fix a memory corruption issue in H5S__point_project_simple (#2626) (#2630)
-rw-r--r--release_docs/RELEASE.txt14
-rw-r--r--src/H5Spoint.c2
2 files changed, 15 insertions, 1 deletions
diff --git a/release_docs/RELEASE.txt b/release_docs/RELEASE.txt
index 05160fa..40cf0b2 100644
--- a/release_docs/RELEASE.txt
+++ b/release_docs/RELEASE.txt
@@ -205,6 +205,20 @@ Bug Fixes since HDF5-1.12.1 release
===================================
Library
-------
+ - Fixed a memory corruption issue that can occur when reading
+ from a dataset using a hyperslab selection in the file
+ dataspace and a point selection in the memory dataspace
+
+ When reading from a dataset using a hyperslab selection in
+ the dataset's file dataspace and a point selection in the
+ dataset's memory dataspace where the file dataspace's "rank"
+ is greater than the memory dataspace's "rank", memory corruption
+ could occur due to an incorrect number of selection points
+ being copied when projecting the point selection onto the
+ hyperslab selection's dataspace.
+
+ (JTH - 2023/03/23)
+
- Seg fault on file close
h5debug fails at file close with core dump on a file that has an
diff --git a/src/H5Spoint.c b/src/H5Spoint.c
index 3e85aff..22feaf8 100644
--- a/src/H5Spoint.c
+++ b/src/H5Spoint.c
@@ -2316,7 +2316,7 @@ H5S__point_project_simple(const H5S_t *base_space, H5S_t *new_space, hsize_t *of
/* Copy over the point's coordinates */
HDmemset(new_node->pnt, 0, sizeof(hsize_t) * rank_diff);
H5MM_memcpy(&new_node->pnt[rank_diff], base_node->pnt,
- (new_space->extent.rank * sizeof(hsize_t)));
+ (base_space->extent.rank * sizeof(hsize_t)));
/* Keep the order the same when copying */
if (NULL == prev_node)