diff options
author | Mike McGreevy <mamcgree@hdfgroup.org> | 2010-11-17 15:08:33 (GMT) |
---|---|---|
committer | Mike McGreevy <mamcgree@hdfgroup.org> | 2010-11-17 15:08:33 (GMT) |
commit | 39e39746286dcb31adec94fbde0345587594cefd (patch) | |
tree | 7a50eb19bb721ee9f822234b1b22861498e8e045 /src/H5O.c | |
parent | c249ccfd1502c428b820d6316a5cf7a0a9d5ca82 (diff) | |
download | hdf5-39e39746286dcb31adec94fbde0345587594cefd.zip hdf5-39e39746286dcb31adec94fbde0345587594cefd.tar.gz hdf5-39e39746286dcb31adec94fbde0345587594cefd.tar.bz2 |
[svn-r19798] Purpose:
Add additional error checking to catch erroneous user input.
Description:
Attempting to retrieve a links's name by index in the case
where the link is external and the file that the object is
located in doesn't exist was causing a segmentation fault
(in production) and an assertion failure (in debug).
The segfault wasn't occuring until the metadata accumulator
attempted a write, so I've added error checking higher in
the pipeline in H5O_protect (where there was previously just
an assert) to catch this. I've also added additional asserts
in the H5F layer where there were none.
Additionally, I added another case to the links.c test to
test that this fails gracefully instead of segfaulting or
asserting out.
Tested:
h5committest and gandalf (mac os x)
Diffstat (limited to 'src/H5O.c')
-rw-r--r-- | src/H5O.c | 5 |
1 files changed, 4 insertions, 1 deletions
@@ -1662,7 +1662,10 @@ H5O_protect(const H5O_loc_t *loc, hid_t dxpl_id, H5AC_protect_t prot) /* check args */ HDassert(loc); HDassert(loc->file); - HDassert(H5F_addr_defined(loc->addr)); + + /* Check for valid address */ + if(!H5F_addr_defined(loc->addr)) + HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, NULL, "address undefined") /* Check for write access on the file */ file_intent = H5F_INTENT(loc->file); |