summaryrefslogtreecommitdiffstats
path: root/src/H5Ocache.c
diff options
context:
space:
mode:
authorLarry Knox <lrknox@hdfgroup.org>2019-02-28 21:24:02 (GMT)
committerLarry Knox <lrknox@hdfgroup.org>2019-02-28 21:24:02 (GMT)
commit646fc294078f560fc9bef784cb1c4e27cdc51f5b (patch)
tree21502062cfc4ab6410f6d81de11e28c1523e85bd /src/H5Ocache.c
parent5eef94f83f4875b64ffe7f9cea05d965bddbd802 (diff)
parent6819c11508b0610f222fe3bfe8a19f637bf4319c (diff)
downloadhdf5-hdf5-1_10_5.zip
hdf5-hdf5-1_10_5.tar.gz
hdf5-hdf5-1_10_5.tar.bz2
Merge pull request #1590 in HDFFV/hdf5 from ~LRKNOX/hdf5_lrk:1.10/master to 1.10/masterhdf5-1_10_5
* commit '6819c11508b0610f222fe3bfe8a19f637bf4319c': (154 commits) CMake needs a tar.gz examples file for windows, too. Correct file permissions on README.txt. Address merge anomalies and incorrect file permissions. Update release date in README.txt and RELEASE.txt. Revisions to Platforms tested. Updated LT_VERS_AGE in config/lt_vers.am due to reinstatement of previously removed symbols, then ran autogen.sh to propagate so number changes and H5E_LOGFAIL_g addition to files checked in on release branch. Updated H5err.txt to replace a global variable that was removed during the metadata cache logging changes (to maintain binary compatibility). HDFFV-10552,10686 restore H5O_*1 functions Minor fix in h5str_sprintf for NULL region references Add new files to MANIFEST. Update so version numbers. fix 2 typos. Update RELEASE.txt for TRILABS-34 and remove unused sections. Add script for building HDF5 with CMake on HPC machines that use sbatch. Add README file for inclusion in CMake-hdf5-<version>.tar.gz file. Add updated README_HPC file with cross compile instructions. set version to 1.10.5-pre1. Change default build mode to production. Merge pull request #1560 in HDFFV/hdf5 from hdf5-1-10-documentation-only to hdf5_1_10_5 Update HISTORY-1_10.txt and RELEASE.txt files. Modify RELEASE.txt in response to PR comments Check in files generated by autogen.sh for hdf5_1_10_5 release branch. Check in files generated by autogen.sh for hdf5_1_10_5 release branch. 2019/02/16. Code improvement ...
Diffstat (limited to 'src/H5Ocache.c')
-rw-r--r--src/H5Ocache.c22
1 files changed, 15 insertions, 7 deletions
diff --git a/src/H5Ocache.c b/src/H5Ocache.c
index 59e1705..d63ceb1 100644
--- a/src/H5Ocache.c
+++ b/src/H5Ocache.c
@@ -1390,7 +1390,8 @@ H5O__chunk_deserialize(H5O_t *oh, haddr_t addr, size_t len, const uint8_t *image
/* Message size */
UINT16DECODE(chunk_image, mesg_size);
- HDassert(mesg_size == H5O_ALIGN_OH(oh, mesg_size));
+ if(mesg_size != H5O_ALIGN_OH(oh, mesg_size))
+ HGOTO_ERROR(H5E_OHDR, H5E_CANTLOAD, FAIL, "message not aligned")
/* Message flags */
flags = *chunk_image++;
@@ -1402,10 +1403,9 @@ H5O__chunk_deserialize(H5O_t *oh, haddr_t addr, size_t len, const uint8_t *image
HGOTO_ERROR(H5E_OHDR, H5E_CANTLOAD, FAIL, "bad flag combination for message")
if((flags & H5O_MSG_FLAG_WAS_UNKNOWN) && !(flags & H5O_MSG_FLAG_MARK_IF_UNKNOWN))
HGOTO_ERROR(H5E_OHDR, H5E_CANTLOAD, FAIL, "bad flag combination for message")
- if((flags & H5O_MSG_FLAG_SHAREABLE)
- && H5O_msg_class_g[id]
- && !(H5O_msg_class_g[id]->share_flags & H5O_SHARE_IS_SHARABLE))
- HGOTO_ERROR(H5E_OHDR, H5E_CANTLOAD, FAIL, "message of unsharable class flagged as sharable")
+ /* Delay checking the "shareable" flag until we've made sure id
+ * references a valid message class that this version of the library
+ * knows about */
/* Reserved bytes/creation index */
if(oh->version == H5O_VERSION_1)
@@ -1517,9 +1517,17 @@ H5O__chunk_deserialize(H5O_t *oh, haddr_t addr, size_t len, const uint8_t *image
mesgs_modified = TRUE;
} /* end if */
} /* end if */
- else
+ else {
+ /* Check for message of unshareable class marked as "shareable"
+ */
+ if((flags & H5O_MSG_FLAG_SHAREABLE)
+ && H5O_msg_class_g[id]
+ && !(H5O_msg_class_g[id]->share_flags & H5O_SHARE_IS_SHARABLE))
+ HGOTO_ERROR(H5E_OHDR, H5E_CANTLOAD, FAIL, "message of unshareable class flagged as shareable")
+
/* Set message class for "known" messages */
mesg->type = H5O_msg_class_g[id];
+ } /* end else */
/* Do some inspection/interpretation of new messages from this chunk */
/* (detect continuation messages, ref. count messages, etc.) */
@@ -1619,7 +1627,7 @@ H5O__chunk_deserialize(H5O_t *oh, haddr_t addr, size_t len, const uint8_t *image
done:
if(ret_value < 0 && udata->cont_msg_info->msgs) {
- udata->cont_msg_info->msgs = (H5O_chunk_t *)H5FL_SEQ_FREE(H5O_cont_t, udata->cont_msg_info->msgs);
+ udata->cont_msg_info->msgs = H5FL_SEQ_FREE(H5O_cont_t, udata->cont_msg_info->msgs);
udata->cont_msg_info->alloc_nmsgs = 0;
}
FUNC_LEAVE_NOAPI(ret_value)