summaryrefslogtreecommitdiffstats
path: root/src/H5O.c
diff options
context:
space:
mode:
authorMike McGreevy <mamcgree@hdfgroup.org>2010-11-17 15:08:33 (GMT)
committerMike McGreevy <mamcgree@hdfgroup.org>2010-11-17 15:08:33 (GMT)
commit39e39746286dcb31adec94fbde0345587594cefd (patch)
tree7a50eb19bb721ee9f822234b1b22861498e8e045 /src/H5O.c
parentc249ccfd1502c428b820d6316a5cf7a0a9d5ca82 (diff)
downloadhdf5-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.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/H5O.c b/src/H5O.c
index c160d3e..02778de 100644
--- a/src/H5O.c
+++ b/src/H5O.c
@@ -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);