summaryrefslogtreecommitdiffstats
path: root/tools/h5jam/h5unjam.c
diff options
context:
space:
mode:
authorQuincey Koziol <koziol@hdfgroup.org>2011-02-08 21:35:54 (GMT)
committerQuincey Koziol <koziol@hdfgroup.org>2011-02-08 21:35:54 (GMT)
commit575469a6a7aef24eb79b7822c25f91043a4d4c2a (patch)
tree4d7980af0304bad8b86ee76ae6460120b20d65e4 /tools/h5jam/h5unjam.c
parenta6d5fa2c7db165fa2cecee86bdbd201339349968 (diff)
downloadhdf5-575469a6a7aef24eb79b7822c25f91043a4d4c2a.zip
hdf5-575469a6a7aef24eb79b7822c25f91043a4d4c2a.tar.gz
hdf5-575469a6a7aef24eb79b7822c25f91043a4d4c2a.tar.bz2
[svn-r20065] Description:
Bring changes from Coverity branch to trunk: r19975: Fixed potential mem leak at H5O_attr_open_by_name r19980: Fix coverity issue 792. Free tmp_env_prefix in H5Lexternal.c line 365 if it is not NULL but its contents are 0 when it goes out of scope. r20039: Eliminate warnings about nested extern and implicit declarations of parallel_print and address Coverity defects 712-781 by #including h5tools_utils.h in h5diff_array.c, h5diff_attr.c, h5diff_dset.c and h5diff_util.c. r20046: Purpose: Address TOCTOU warnings in h5jam and h5unjam Description: Coverity is afraid that the state of the input file could change between the call to stat() and the call to open(). This is called a time-of- check time-of-use (TOCTOU) vulnerability. Modified stat calls to fstat which uses an open file pointer so it (hopefully) won't complain any more. r20047: Addressed coverity issues 135-137, 462-464. Local pointers that needed to be freed in case of error were moved out of a switch statement in src/H5Tnative.c, set to NULL, and checked before freeing. Tested on: Mac OS X/32 10.6.6 (amazon) w/debug & production (h5committested on Coverity branch)
Diffstat (limited to 'tools/h5jam/h5unjam.c')
-rw-r--r--tools/h5jam/h5unjam.c16
1 files changed, 7 insertions, 9 deletions
diff --git a/tools/h5jam/h5unjam.c b/tools/h5jam/h5unjam.c
index 8e31ce1..fd79e1a 100644
--- a/tools/h5jam/h5unjam.c
+++ b/tools/h5jam/h5unjam.c
@@ -221,22 +221,20 @@ main(int argc, const char *argv[])
}
- res = stat(input_file, &sbuf);
+ ifid = HDopen(input_file,O_RDONLY,0);
+ if(ifid < 0) {
+ error_msg("unable to open input HDF5 file \"%s\"\n", input_file);
+ exit(EXIT_FAILURE);
+ }
- if (res < 0) {
+ res = HDfstat(ifid, &sbuf);
+ if(res < 0) {
error_msg("Can't stat file \"%s\"\n", input_file);
exit(EXIT_FAILURE);
}
fsize = sbuf.st_size;
- ifid = HDopen(input_file,O_RDONLY,0);
-
- if (ifid < 0) {
- error_msg("unable to open input HDF5 file \"%s\"\n", input_file);
- exit(EXIT_FAILURE);
- }
-
if (do_delete && (ub_file != NULL)) {
error_msg("??\"%s\"\n", ub_file);
exit(EXIT_FAILURE);