summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorQuincey Koziol <koziol@hdfgroup.org>2003-12-31 20:28:46 (GMT)
committerQuincey Koziol <koziol@hdfgroup.org>2003-12-31 20:28:46 (GMT)
commitb0b020d422b493228c00449391552bdfc50a33c2 (patch)
tree533cef47407452cdbe7142de8cbc1ac615132c4e /src
parent0d405bdfb29f6af66b10d213804a55b6e2cd4998 (diff)
downloadhdf5-b0b020d422b493228c00449391552bdfc50a33c2.zip
hdf5-b0b020d422b493228c00449391552bdfc50a33c2.tar.gz
hdf5-b0b020d422b493228c00449391552bdfc50a33c2.tar.bz2
[svn-r8007] Purpose:
Bug fix Description: Range check the szip 'pixels per block' against the chunk size of the dataset when attempting to create a new dataset, since the szip library requires the PPB to be at least the size of the fastest changing dimension in the chunk. Platforms tested: FreeBSD 4.9 (sleipnir) too minor for h5committest
Diffstat (limited to 'src')
-rw-r--r--src/H5Z.c6
-rw-r--r--src/H5Zszip.c4
2 files changed, 7 insertions, 3 deletions
diff --git a/src/H5Z.c b/src/H5Z.c
index a1edaa4..f421d74 100644
--- a/src/H5Z.c
+++ b/src/H5Z.c
@@ -526,7 +526,7 @@ H5Z_prelude_callback(hid_t dcpl_id, hid_t type_id, H5Z_prelude_type_t prelude_ty
/* Check return value */
if(status<=0) {
/* We're leaving, so close dataspace */
- if(H5Sclose(space_id)<0)
+ if(H5I_dec_ref(space_id)<0)
HGOTO_ERROR (H5E_PLINE, H5E_CANTRELEASE, FAIL, "unable to close dataspace")
/* Indicate filter can't apply to this combination of parameters */
@@ -547,7 +547,7 @@ H5Z_prelude_callback(hid_t dcpl_id, hid_t type_id, H5Z_prelude_type_t prelude_ty
/* Make callback to filter's "set local" function */
if((fclass->set_local)(dcpl_id, type_id, space_id)<0) {
/* We're leaving, so close dataspace */
- if(H5Sclose(space_id)<0)
+ if(H5I_dec_ref(space_id)<0)
HGOTO_ERROR (H5E_PLINE, H5E_CANTRELEASE, FAIL, "unable to close dataspace")
/* Indicate error during filter callback */
@@ -563,7 +563,7 @@ H5Z_prelude_callback(hid_t dcpl_id, hid_t type_id, H5Z_prelude_type_t prelude_ty
} /* end for */
/* Close dataspace */
- if(H5Sclose(space_id)<0)
+ if(H5I_dec_ref(space_id)<0)
HGOTO_ERROR (H5E_PLINE, H5E_CANTRELEASE, FAIL, "unable to close dataspace")
} /* end if */
} /* end if */
diff --git a/src/H5Zszip.c b/src/H5Zszip.c
index 94df634..9907f9c 100644
--- a/src/H5Zszip.c
+++ b/src/H5Zszip.c
@@ -129,6 +129,10 @@ H5Z_can_apply_szip(hid_t dcpl_id, hid_t type_id, hid_t space_id)
assert(ndims>0);
scanline=dims[ndims-1];
+ /* Range check the pixels per block against the 'scanline' size */
+ if(scanline<cd_values[H5Z_SZIP_PARM_PPB])
+ HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FALSE, "pixels per block greater than scanline");
+
/* Range check the scanline's size */
if(scanline > SZ_MAX_PIXELS_PER_SCANLINE)
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FALSE, "invalid scanline size")