diff options
author | Quincey Koziol <koziol@hdfgroup.org> | 1998-07-21 20:39:10 (GMT) |
---|---|---|
committer | Quincey Koziol <koziol@hdfgroup.org> | 1998-07-21 20:39:10 (GMT) |
commit | de5389cc272c7610b2f6ea7510bd9222c780fb1b (patch) | |
tree | 1be6a70b7ec416adc47d808aab6bf7de756b3568 /src | |
parent | bdce66f69a4f976fd3013c54b0f8f9f137bff8f5 (diff) | |
download | hdf5-de5389cc272c7610b2f6ea7510bd9222c780fb1b.zip hdf5-de5389cc272c7610b2f6ea7510bd9222c780fb1b.tar.gz hdf5-de5389cc272c7610b2f6ea7510bd9222c780fb1b.tar.bz2 |
[svn-r524] Fixed potential core dump on freeing uninitialized selection iterators in
H5D_read and H5D_write.
Diffstat (limited to 'src')
-rw-r--r-- | src/H5D.c | 18 |
1 files changed, 15 insertions, 3 deletions
@@ -1250,6 +1250,12 @@ H5D_read(H5D_t *dataset, const H5T_t *mem_type, const H5S_t *mem_space, assert(mem_type); assert(xfer_parms); assert(buf); + + /* Initialize these before any errors can occur */ + HDmemset(&mem_iter,0,sizeof(H5S_sel_iter_t)); + HDmemset(&bkg_iter,0,sizeof(H5S_sel_iter_t)); + HDmemset(&file_iter,0,sizeof(H5S_sel_iter_t)); + if (!file_space) { if (NULL==(free_this_space=H5S_read (&(dataset->ent)))) { HGOTO_ERROR (H5E_DATASET, H5E_CANTINIT, FAIL, @@ -1555,9 +1561,9 @@ H5D_write(H5D_t *dataset, const H5T_t *mem_type, const H5S_t *mem_space, H5T_conv_t tconv_func = NULL; /*conversion function */ hid_t src_id = -1, dst_id = -1;/*temporary type atoms */ H5S_conv_t sconv_func= {NULL}; /*space conversion funcs*/ - H5S_sel_iter_t mem_iter, /* memory selection iteration information */ - bkg_iter, /* background iteration information */ - file_iter; /* file selection iteration information */ + H5S_sel_iter_t mem_iter, /* memory selection iteration information */ + bkg_iter, /* background iteration information */ + file_iter; /* file selection iteration information */ H5T_cdata_t *cdata = NULL; /*type conversion data */ herr_t ret_value = FAIL, status; size_t src_type_size; /*size of source type */ @@ -1577,6 +1583,12 @@ H5D_write(H5D_t *dataset, const H5T_t *mem_type, const H5S_t *mem_space, assert(mem_type); assert(xfer_parms); assert(buf); + + /* Initialize these before any errors can occur */ + HDmemset(&mem_iter,0,sizeof(H5S_sel_iter_t)); + HDmemset(&bkg_iter,0,sizeof(H5S_sel_iter_t)); + HDmemset(&file_iter,0,sizeof(H5S_sel_iter_t)); + if (!file_space) { if (NULL==(free_this_space=H5S_read (&(dataset->ent)))) { HGOTO_ERROR (H5E_DATASET, H5E_CANTINIT, FAIL, |