Skip to content

Commit

Permalink
Merge1 issue 839 PRs to hdf5 1 12 (#904)
Browse files Browse the repository at this point in the history
* Fixes for a couple of trivial warnings (#676)

* Committing clang-format changes

* Trivial warning fixes:

* Removes an unused done target in H5Tbit.c
* Add (void) to quiet "ignored return value" warnings in the generators
  (which generally ignore errors)

Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>

* Removes alternative function enter/leave macro scheme (#678)

* Committing clang-format changes

* Converted BEGIN_FUNC, etc. macros to FUNC_ENTER

* Rips out the BEGIN_FUNC, etc. macros

* Removes 'end if', etc. comments from H5HL package

* Committing clang-format changes

* Fixes an H5EA iterate issue

* Fixes an issue in the H5FA iterator code

* Further cleanup in bin/trace after macro removal

* Iterator changes in H5EA and H5FA

Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>

* Various CMake changes (#679)

* Committing clang-format changes

* Several CMake updates:

* Removes unused HDF5_ENABLE_HSIZET
* Switches TEST_SHELL_SCRIPTS to ON
* Sets SH_PROGRAM to bash instead of sh

* Set default build type back to RelWithDebInfo

Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>

* err_compat test cleanup (#681)

* Committing clang-format changes

* Cleans up err_compat test and output

* Formatted source

Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>

* CMake fix for sporadic flush2 failures (#692)

* Committing clang-format changes

* Runs the flush1/flush2 tests in their own directory

Avoids file deletions by other tests.

* Revert "Runs the flush1/flush2 tests in their own directory"

This reverts commit 746c048.

Also pulls the flush files from the clean list, which is a simpler fix.

Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>

* Ubsan fixes (#498)

* Fixed use of null pointer identified by UBSan

UBSan warned:
runtime error: member access within null pointer of type 'named_dt_t' (aka 'struct named_dt_t')

with these two tests:
H5REPACK-committed_dt_DFF
H5REPACK-committed_dt

Reformulated per @gnuoyd suggestion.

* Fixed undefined float -> unsigned char conversion in HL_test_image

* Removed dead skip_overflow_tests_g global

The global `skip_overflow_tests_g` was being set but never read.

* Don't treat 2d array as 1d array, fixing UBSan complaint in `CPP_testhdf5`

* Committing clang-format changes

* Remove extra ']' in line 730.

* Committing clang-format changes

Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Larry Knox <lrknox@hdfgroup.org>

* BUG: DataSet assignment operator is missing (#503)

* BUG: DataSet assignment operator is missing

* Some compilers complain if the copy constructor is given explicitly
  but the assignment operator is implicitly set to default.

* Explicitly defining the assignment operator allows us to properly
  handle reference counters for shared resources.

* BUG: DataSet assignment operator is missing.

* Mimicking code of H5DataType::operator() as suggested by @bmribler.

* Added test

Description:
    Added test for DataSet::operator= that Leengit added
Platform tested:
    Linux/64 (jelly)

* Removed Author field.

* Commit clang format changes.

* Entry for Leengit's github PR #503

* Removed lines left by mistake

Co-authored-by: Binh-Minh Ribler <bmribler@hdfgroup.org>
Co-authored-by: Larry Knox <lrknox@hdfgroup.org>

* Hdf5 merge pr7 (#516)

* Modify temporary rpath for testing in java example scripts.

* Update URL in source file Copyright headers for web copy of COPYING (license) file.

* Add release_docs/code-conventions.md file.

* Add script to test h5py.

* Fix script error.

* Add file h5pytest.yml.

* Test declaration of counter variables in for loops.

* Committing clang-format changes

* Committing clang-format changes

* Added [] to line 126 of H5LTanalyze.l.
Ran bin/genparser with flex v2.6.4 and Bison v3.0.4 on jelly.

* Revert "Added [] to line 126 of H5LTanalyze.l."

This reverts commit e4a9cee.

* Revert extra commits to match canonical develop.

* Add cmake variable HDF5_LIB_INFIX (#7)

* Add cmake variable HDF5_LIB_INFIX

This infix is added to all library names after 'hdf5'.
e.g. the infix '_openmpi' results in the library name 'libhdf5_openmpi.so'
This name is used in packages on debian based systems.
(see https://packages.debian.org/jessie/amd64/libhdf5-openmpi-8/filelist)

This option is useful when testing projects on debian based systems with
custom builds of hdf5 while trying to minimize differences between the
custom setup and the environment created by installing system packages.

* Added RELEASE.txt entry for HDF5_LIB_INFIX.

Co-authored-by: Larry Knox <lrknox@hdfgroup.org>

Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Raphael Grimm <barcode@users.noreply.github.com>

* Fixes a segfault when H5Pset_mdc_log_options is called multiple times on a fapl (#601)

* Committing clang-format changes

* Fixes a segfault when H5Pset_mdc_log_options() is called multiple times

An internal string is incorrectly freed when the API call is invoked
multiple times on a property list, which will usually cause a segfault
to occur. On the first call the log location is NULL so the problem
doesn't occur.

Fixes HDFFV-11239

* Fixes typos

Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>

* Fix for a segfault when H5Pset_fapl_log is passed an invalid fapl ID (#607)

* Committing clang-format changes

* Fixes an issue where H5Pset_fapl_log sefaults when passed an invalid
fapl ID

This was due to a pointer-containing struct being memset after the first
internal API call. If the first call failed, the error condition would
check if the pointer was not NULL and then attempt to free it if not.
This would lead to the freeing of a wild pointer if an invalid fapl ID
were passed in.

This was fixed by reordering the memset and adding a test to ensure the
problem stays fixed.

Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>

* Fixes crashes when size_hint > UINT32_MAX is passed to H5Gcreate1 (#611)

* Committing clang-format changes

* Fixes incorrect size_hint handling in H5Gcreate1

* Updates the size hint type for group creation

* Updates the RELEASE.txt note

* Revert "Updates the RELEASE.txt note"

This reverts commit 3df386a.

* Reverts previous behavior to use a uint32_t struct field

* Updates RELEASE.txt

Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>

Co-authored-by: Dana Robinson <43805+derobins@users.noreply.github.com>
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Sean McBride <sean@rogue-research.com>
Co-authored-by: Lee Newberg <35611400+Leengit@users.noreply.github.com>
Co-authored-by: Binh-Minh Ribler <bmribler@hdfgroup.org>
Co-authored-by: Raphael Grimm <barcode@users.noreply.github.com>
  • Loading branch information
7 people committed Aug 12, 2021
1 parent c2e6172 commit e2c47ff
Show file tree
Hide file tree
Showing 45 changed files with 2,919 additions and 2,492 deletions.
1 change: 0 additions & 1 deletion c++/test/ttypes.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -656,7 +656,6 @@ static void
test_named()
{
static hsize_t ds_size[2] = {10, 20};
hsize_t i;
unsigned attr_data[10][20];
DataType * ds_type = NULL;

Expand Down
11 changes: 6 additions & 5 deletions hl/test/test_image.c
Original file line number Diff line number Diff line change
Expand Up @@ -650,10 +650,10 @@ test_generate(void)
HL_TESTING2("make indexed image from land data");

for (i = 0; i < n_elements; i++) {
if (data[i] < 0)
if (data[i] < 0.0f)
image_data[i] = 0;
else
image_data[i] = (unsigned char)((255 * (data[i])) / xmax);
image_data[i] = (unsigned char)((255 * data[i]) / xmax);
}

/* make the image */
Expand All @@ -671,10 +671,11 @@ test_generate(void)
HL_TESTING2("make indexed image from sea data");

for (i = 0; i < n_elements; i++) {
if (data[i] > 0)
if (data[i] > 0.0f)
image_data[i] = 0;
else
image_data[i] = (unsigned char)((255 * (data[i] - xmin)) / xmin);
else {
image_data[i] = (unsigned char)((255.0f * (data[i] - xmin)) / (xmax - xmin));
}
}

/* make the image */
Expand Down
2 changes: 1 addition & 1 deletion release_docs/INSTALL_CMake.txt
Original file line number Diff line number Diff line change
Expand Up @@ -753,7 +753,6 @@ HDF5_ENABLE_DEBUG_APIS "Turn on extra debug output in all packages"
HDF5_ENABLE_DEPRECATED_SYMBOLS "Enable deprecated public API symbols" ON
HDF5_ENABLE_DIRECT_VFD "Build the Direct I/O Virtual File Driver" OFF
HDF5_ENABLE_EMBEDDED_LIBINFO "embed library info into executables" ON
HDF5_ENABLE_HSIZET "Enable datasets larger than memory" ON
HDF5_ENABLE_PARALLEL "Enable parallel build (requires MPI)" OFF
HDF5_ENABLE_PREADWRITE "Use pread/pwrite in sec2/log/core VFDs in place of read/write (when available)" ON
HDF5_ENABLE_TRACE "Enable API tracing capability" OFF
Expand Down Expand Up @@ -795,6 +794,7 @@ HDF5_BUILD_DOC "Build documentation"
HDF5_ENABLE_ANALYZER_TOOLS "enable the use of Clang tools" OFF
HDF5_ENABLE_SANITIZERS "execute the Clang sanitizer" OFF
HDF5_ENABLE_FORMATTERS "format source files" OFF
TEST_SHELL_SCRIPTS "Enable shell script tests" ON

---------------- External Library Options ---------------------
HDF5_ALLOW_EXTERNAL_SUPPORT "Allow External Library Building (NO GIT TGZ)" "NO"
Expand Down
90 changes: 87 additions & 3 deletions release_docs/RELEASE.txt
Original file line number Diff line number Diff line change
Expand Up @@ -47,12 +47,91 @@ New Features

Configuration:
-------------
-
- CMake will now run the shell script tests in test/ by default

The test directory includes several shell script tests that previously
were not run by CMake. These are now run by default. TEST_SHELL_SCRIPTS
has been set to ON and SH_PROGRAM has been set to bash (some test
scripts use bash-isms). Platforms without bash (e.g., Windows) will
ignore the script tests.

(DER - 2021/05/23)

- Removed unused HDF5_ENABLE_HSIZET option from CMake

This has been unused for some time and has no effect.

(DER - 2021/05/23)

- Add CMake variable HDF5_LIB_INFIX

This infix is added to all library names after 'hdf5'.
e.g. the infix '_openmpi' results in the library name 'libhdf5_openmpi.so'
This name is used in packages on debian based systems.
(see https://packages.debian.org/jessie/amd64/libhdf5-openmpi-8/filelist)

(barcode - 2021/03/22)


Library:
--------
-
- H5Gcreate1() now rejects size_hint parameters larger than UINT32_MAX

The size_hint value is ultimately stored in a uint32_t struct field,
so specifying a value larger than this on a 64-bit machine can cause
undefined behavior including crashing the system.

The documentation for this API call was also incorrect, stating that
passing a negative value would cause the library to use a default
value. Instead, passing a "negative" value actually passes a very large
value, which is probably not what the user intends and can cause
crashes on 64-bit systems.

The Doxygen documentation has been updated and passing values larger
than UINT32_MAX for size_hint will now produce a normal HDF5 error.

(DER - 2021/04/29, HDFFV-11241)


- H5Pset_fapl_log() no longer crashes when passed an invalid fapl ID

When passed an invalid fapl ID, H5Pset_fapl_log() would usually
segfault when attempting to free an uninitialized pointer in the error
handling code. This behavior is more common in release builds or
when the memory sanitization checks were not selected as a build
option.

The pointer is now correctly initialized and the API call now
produces a normal HDF5 error when fed an invalid fapl ID.

(DER - 2021/04/28, HDFFV-11240)

- Fixes a segfault when H5Pset_mdc_log_options() is called multiple times

The call incorrectly attempts to free an internal copy of the previous
log location string, which causes a segfault. This only happens
when the call is invoked multiple times on the same property list.
On the first call to a given fapl, the log location is set to NULL so
the segfault does not occur.

The string is now handled properly and the segfault no longer occurs.

(DER - 2021/04/27, HDFFV-11239)


Parallel Library:
-----------------
-


Fortran Library:
----------------
-


C++ Library:
------------
-


Java Library:
Expand Down Expand Up @@ -128,7 +207,12 @@ Bug Fixes since HDF5-1.12.1 release

C++ APIs
--------
-
- Added DataSet::operator=

Some compilers complain if the copy constructor is given explicitly
but the assignment operator is implicitly set to default.

(2021/05/19)


Testing
Expand Down
4 changes: 0 additions & 4 deletions src/H5.c
Original file line number Diff line number Diff line change
Expand Up @@ -63,10 +63,6 @@ hbool_t H5_PKG_INIT_VAR = FALSE;
/* Library Private Variables */
/*****************************/

/* HDF5 API Entered variable */
/* (move to H5.c when new FUNC_ENTER macros in actual use -QAK) */
hbool_t H5_api_entered_g = FALSE;

/* statically initialize block for pthread_once call used in initializing */
/* the first global mutex */
#ifdef H5_HAVE_THREADSAFE
Expand Down

0 comments on commit e2c47ff

Please sign in to comment.