diff options
author | Allen Byrne <byrn@hdfgroup.org> | 2018-01-18 22:38:22 (GMT) |
---|---|---|
committer | Allen Byrne <byrn@hdfgroup.org> | 2018-01-18 22:38:22 (GMT) |
commit | a2fbe6c7d835bb88645940c3f6191669d2df75eb (patch) | |
tree | 15039a16b14159e23892a85cf5c8e1c2da462811 | |
parent | 6a9b816bde987f6ced009b0b1d1793e43103e013 (diff) | |
parent | 3374818d14c11e9177370fe940c966240de34052 (diff) | |
download | hdf5-a2fbe6c7d835bb88645940c3f6191669d2df75eb.zip hdf5-a2fbe6c7d835bb88645940c3f6191669d2df75eb.tar.gz hdf5-a2fbe6c7d835bb88645940c3f6191669d2df75eb.tar.bz2 |
Merge pull request #862 in HDFFV/hdf5 from ~BYRN/hdf5_adb:develop to develop
* commit '3374818d14c11e9177370fe940c966240de34052':
HDFFV-10393 fix incorrect search for name in h5repack object table
-rw-r--r-- | release_docs/RELEASE.txt | 26 | ||||
-rw-r--r-- | tools/src/h5repack/h5repack_filters.c | 12 |
2 files changed, 33 insertions, 5 deletions
diff --git a/release_docs/RELEASE.txt b/release_docs/RELEASE.txt index 04f2ce0..790313f 100644 --- a/release_docs/RELEASE.txt +++ b/release_docs/RELEASE.txt @@ -300,6 +300,32 @@ Bug Fixes since HDF5-1.10.1 release Tools ----- + - h5repack + + h5repack incorrectly searched internal object table for name. + + h5repack would search the table of objects for a name, if the + name did not match it tried to determine if the name without a + leading slash would match. The logic was flawed! The table + stored names(paths) without a leading slash and did a strstr + of the table path to the name. + The assumption was that if there was a difference of one then + it was a match, however "pressure" would match "/pressure" as + well as "/pressure1", "/pressure2", etc. Changed logic to remove + any leading slash and then do a full compare of the name. + + (ADB - 2018/01/18, HDFFV-10393) + + - h5repack + + h5repack failed to handle more then 9 chars for int conversion. + + User defined filter parameter conversions would fail for integers + larger then 9 characters. Increased local variable array for storing + the current command line parameter to prevent buffer overflows. + + (ADB - 2018/01/17, HDFFV-10392) + - h5diff h5diff seg faulted if comparing VL strings against fixed strings. diff --git a/tools/src/h5repack/h5repack_filters.c b/tools/src/h5repack/h5repack_filters.c index 067ebad..ae0bfd5 100644 --- a/tools/src/h5repack/h5repack_filters.c +++ b/tools/src/h5repack/h5repack_filters.c @@ -84,7 +84,8 @@ static int aux_find_obj(const char* name, /* object name from traverse list */ pack_opt_t *options, /* repack options */ pack_info_t *obj /*OUT*/) /* info about object to filter */ { - char *pdest; + char *pdest = NULL; + char *pname = NULL; int result; unsigned int i; @@ -94,11 +95,12 @@ static int aux_find_obj(const char* name, /* object name from traverse list */ return (int) i; } - pdest = HDstrstr(name, options->op_tbl->objs[i].path); - result = (int) (pdest - name); + pdest = options->op_tbl->objs[i].path; + if (pdest[0] == '/') pdest++; + pname = name; + if (pname[0] == '/') pname++; - /* found at position 1, meaning without '/' */ - if (pdest != NULL && result == 1) { + if (HDstrcmp(pdest, pname) == 0) { *obj = options->op_tbl->objs[i]; return (int) i; } |