Commit Graph
24317 Commits
Author SHA1 Message Date
Scot Breitenfeld a46a399230 Fixes the "multiple @param documentation sections" doxygen warnings (#6195)
Addresses the "multiple @ param documentation sections" warnings are caused by the interaction of three things:

1. MACRO_EXPANSION = YES with EXPAND_ONLY_PREDEF = NO in Doxyfile.in

2. Versioned API macros in H5version.h like:

\def documentation in APIVersions.dox like:

3. \def H5Tarray_create \api_vers_2{H5Tarray_create,H5Tarray_create1,H5Tarray_create2}

Because Doxygen expands all macros, it sees H5Tarray_create as an alias for H5Tarray_create1. It then associates documentation from both the \def block (for the macro) and the function's own doc block (with \param entries) with the same function — resulting in "multiple @ param documentation sections."

* Update Doxygen version from 1.16.0 to 1.16.1

Use Doxygen 1.16.1 for all platforms. This version includes the latest
bug fixes and improvements while maintaining compatibility with our
documentation format.

* Fix Windows Doxygen installation for version 1.16.1

Handle different Windows binary naming conventions across Doxygen versions:
- 1.16.1 uses: doxygen-VERSION.windows.x64.bin.zip
- 1.16.0 uses: doxygen-VERSION.x64.bin.zip

Try the newer naming convention first, then fall back to the older one
if the download fails. This ensures compatibility across versions.

* Use ssciwr/doxygen-install in setup-doxygen action

Replace direct installation of official Doxygen binaries with
ssciwr/doxygen-install action. This avoids Java documentation parsing
errors that occur with official binaries but not with distribution
builds.

The setup-doxygen action now serves as a thin wrapper around
ssciwr/doxygen-install@f13be16c83 (v1),
using commit hash for security and reproducibility.

* Remove redundant version specification from workflows

The setup-doxygen action already has a default version (1.16.1),
so explicit version specification in workflows is unnecessary.
This follows DRY principles and makes version updates simpler.
2026-02-12 10:45:17 -06:00
Gerd Heber 58eaa31b6e Add HDF5 2.0.0 Library Migration Guide (#6183)
* Add HDF5 2.0.0 Library Migration Guide

* Revise HDF5 migration guide for version 2.0.0

Use 2.0.0 consistently.

* Clarify API changes in HDF5 2.0.0 Migration Guide
2026-02-10 13:15:18 -06:00
bmribler 95f6df54ac Adds RFCs to the RFC table (#6190)
* Added two RFCs to the RFC table

"Adding support for digitally signed plugins to HDF5"
" Write-Ahead log"

* Updated to use the ACM link
2026-02-10 13:09:43 -06:00
Larry Knox 448ae0a94f Update develop branch version / Clean CHANGELOG.md entries (#6211)
* Advance version to 2.1.1 after creating release branch for 2.1.0
release.

* Update develop branch version to 2.2.0
Clean 2.1.0 entries from CHANGELOG.md

* Add notice for removing alternate release tag to CHANGELOG.md.
Fix typo.

* Fix typo

* Reorder AGE and REVISION for consistent order for all libraries.

* Temporarily remove develop branch restrictions from workflows.

* Revert "Temporarily remove develop branch restrictions from workflows."

This reverts commit abc7039fc5.
2026-02-10 12:09:47 -05:00
Scot Breitenfeld b8b246e14a Fix MPI Fortran configuration for HDF5Examples (#6206)
When building Fortran parallel examples without MPI wrappers, the
compiler couldn't find mpi.mod because MPI_Fortran_INCLUDE_DIRS
was not populated. This occurred because find_package(MPI) was only
called for C, not Fortran.

Added enable_language(Fortran) and find_package(MPI REQUIRED
COMPONENTS Fortran) to properly configure MPI for Fortran examples,
ensuring MPI include directories and libraries are correctly set.
2026-02-06 10:06:35 -06:00
Larry Knox 519bcf787e Update workflow versions (#6202)
* Update versions in workflow files for HDF5 in anticipation of 2.1.0
release.

* Remove hdf5_ appended to tag for binary download.
2026-02-05 18:09:06 -06:00
SY Wang 071e77e9d3 Fix incorrect libsz/libaec entries in hdf5.pc when using libaec to provide SZIP (#6191)
* Update CMakeFilters.cmake
2026-02-04 16:42:16 -06:00
bmribler 8cd9f7a7ba Validate datatype size for consistency (#6173)
User report:
When a file is corrupted such that an array datatype's size, the number of elements,
and the element size are not in agreement, it can trigger an out of bounds read.
(private GH issue: GHSA-gh44-7wpq-622f)
Added a validation to ensure the above are in agreement.
2026-02-03 15:26:51 -06:00
Larry Knox 016e1ddc97 Update ci hdf5config.cmake (#6189)
Ubuntu Clang tests had problems when using KyleMayes/install-llvm-action to install Clang 18.1 on Ubuntu 24.04, because the Clang that it installed needed libtinfo5 not present in the Ubuntu 24.04 image. However, Clang 18.1.3 is part of the Ubuntu 24.04 image and is used when CMAKE_C_COMPILER and CMAKE_CXX_COMPILER are set to "clang" and "clang++".
2026-02-03 10:54:39 -06:00
Neil Fortner d069f15269 Fix CVE-2025-44904 (#6179)
Fix potential buffer overflow due to invalid chunk size reported by chunk index
(CVE-2025-44904)
2026-02-02 16:10:04 -06:00
H. Joe Lee dfd43b677f docs: change .sh to .rpm or .deb for Linux binary distribution (#6113) 2026-02-02 10:11:13 -06:00
Larry Knox 6ce73cd9f9 Update ci hdf5config.cmake to re-enable GitHub daily tests (#6180)
Update CI workflows to use symbolic links instead of copying files to re-enable GitHub daily tests.

Workflows:
    Update analysis.yml, cygwin.yml, and par-script.yml to use symbolic links instead of copying CTestScript.cmake and HDF5config.cmake.
    Update par-source.yml and script.yml similarly to use symbolic links for the same files.

Commands:
    Replace cp with ln -s in Linux workflows.
    Replace Copy-Item with New-Item -ItemType SymbolicLink in Windows workflows.

Purpose:
    Re-enable GitHub daily tests:  linked HDF5config.cmake allows CMake to find the HDF5VersionParsing.cmake file to get the HDF5 version.

Also updated runs-on:  ubuntu-22.04 to ubuntu-latest.
2026-01-29 12:08:40 -06:00
jhendersonHDF 65d831cbe3 Remove unused temp. variables in H5D__chunk_copy (#6176)
Removed some unused temporary variables in H5D__chunk_copy that obscured the
ownership of memory buffers and led to a double-free of the buffers
2026-01-29 09:31:36 -06:00
jhendersonHDFandLarry Knox dd3080a58c Fix double-free issue in H5D__chunk_copy (#6160)
Fix double-free caused by loss of buffer pointer after re-allocation

Co-authored-by: Larry Knox <lrknox@hdfgroup.org>
2026-01-27 05:55:38 -06:00
bmribler 9268b803b7 Fixes buffer underflow (#6143)
Fixes security issue by treating non-NULL buffer with size 0 as length-only query in get_name API functions.

Behavior:
Modify get_name API functions to treat (buffer != NULL, size == 0) as length-only queries, preventing undefined behavior.
Fix applied to H5Aget_name, H5Aget_name_by_idx, H5Fget_name, H5Gget_objname_by_idx, H5Iget_name, H5Lget_name_by_idx, H5Rget_file_name, H5Rget_obj_name, H5Rget_attr_name, and 8 other functions.
Tests:
Update test/links.c, test/tattr.c, test/tfile.c, test/titerate.c, and test/trefer.c to verify new behavior with non-null buffer and size 0.
Documentation:
Update comments in H5A.c, H5F.c, H5Gdeprec.c, H5I.c, H5L.c, H5R.c, and H5Rdeprec.c to reflect new behavior.t]@users.noreply.github.com>
2026-01-26 18:07:23 -06:00
Matt L 8ebdb2f6d4 Fix inconsistent empty postfix handling (#6094) 2026-01-24 12:03:19 -06:00
Scot Breitenfeld 5240b804aa Fixes issues caused by #6147 (#6172)
Scope Safety: Refactored parse_hdf5_version from a Macro to a Function to prevent variable namespace pollution.
Implemented a helper macro (_parse_version_component) to handle repetitive regex logic, significantly reducing code size and complexity.
Updated HDF5config.cmake to calculate paths dynamically using REALPATH relative to CMAKE_CURRENT_LIST_FILE, fixing issues with symlinks and execution context.
Decoupled the parsing logic from scope promotion; the helper now parses to a local variable, and the function explicitly handles the PARENT_SCOPE assignment.
2026-01-24 12:02:11 -06:00
Matt L e98e0aa951 Add h5diff message about file object difference (#6103)
* Correct reference files

* Prevent multiple h5diff error messages
2026-01-23 11:34:45 -06:00
Larry Knox 755e278a6a Replace last link with version directory path on support site. (#6165)
* Replace last link with version directory path on support site.
Links for downloading doxygen.zip files will be to the GitHub HDF5
releases page.

* Update config/README.md.cmake.in
2026-01-23 11:33:30 -06:00
jhendersonHDF ed5eceab58 Enable data sieving for chunks that can't be cached (#6111)
* Enable data sieving for chunks that can't be cached

Fixed an issue that prevented use of a data sieve buffer for I/O on dataset
chunks when those chunks couldn't be cached by the library. This issue
could result in worst-case behavior of I/O on a single data element at a
time when chunks are non-contiguous with respect to memory layout.

Added a test to attempt to catch performance regressions in I/O on dataset
chunks that are non-contiguous with respect to memory layout

Updated the External File List logic to set the data sieve buffer size to
the smaller of the dataset size and the size set in the FAPL, similar to
the logic elsewhere in the library
2026-01-23 10:58:11 -06:00
jhendersonHDF 9af6db11b6 Distribute Findlibaec.cmake module for use by HDF5 library consumers (#6159) 2026-01-22 16:14:20 -06:00
Scot BreitenfeldandClaude Sonnet 4.5 16364fe2fa Badges (#6170)
* Fix Release Progress badges and workflow

- Fix update-progress.py to output blocker/mustdo counts in correct format
  The workflow expects blocker_done=, blocker_total=, mustdo_done=, mustdo_total=
  output lines but the script was only outputting human-readable format

- Update README badge links to point to project view 24 instead of base project

This fixes the workflow failures where BLOCKER_DONE and the related environment
variables were not being set, causing badge updates to fail.

The badges were pointing to old unmaintained gists under user X.
Updated to use the gist automatically maintained by the Release Progress
workflow (gist ID: 0ad2eabb63b28eb90d69f5e5b2c1496f).

The workflow now successfully updates these badges every 4 hours with
current release blocker and must-do progress.

The script now auto-detects the HDF5 version from src/H5public.h and
filters release blockers/must-do items by milestone matching that version.

Changes:
- Added get_hdf5_version_from_header() to read version from H5public.h
- Updated GraphQL query to fetch milestone information from issues
- Added milestone filtering logic to only count items for the target release
- Made validation more lenient when using milestone filter (allows 0/0)
- Added MILESTONE_FILTER environment variable for manual override

For develop branch with version 2.1.0 in H5public.h, this will now only
count items with milestone containing "2.1" (e.g., "2.1.0", "HDF5 2.1").

* Add version number to badge labels

The badges now display the version (e.g., "2.1 Release Blockers" instead
of just "Release Blockers") when filtering by milestone.

Changes:
- Python script outputs version to GitHub Actions
- Workflow passes version to badge generation script
- Badge script includes version in label if available
- Labels show "X.Y Release Blockers" / "X.Y Release Must Do"


The three badges now track:
1. Release Blockers - Critical issues that must be resolved
2. Release Must Do - Important items for the release
3. Release Nice to Have - Optional improvements for the release

All three badges show version prefix (e.g., "2.1") and support 0/0
display when no items exist for a milestone.

---------

Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-22 14:37:45 -06:00
Scot Breitenfeld 17a847faf9 Fix Release Progress badges and workflow (#6168)
- Fix update-progress.py to output blocker/mustdo counts in correct format
  The workflow expects blocker_done=, blocker_total=, mustdo_done=, mustdo_total=
  output lines but the script was only outputting human-readable format

- Update README badge links to point to project view 24 instead of base project

This fixes the workflow failures where BLOCKER_DONE and related environment
variables were not being set, causing badge updates to fail.
2026-01-22 10:32:11 -06:00
Scot Breitenfeld 5711c7466f Update the version to 2.1 (#6147)
Update version to 2.1 and derive version information from H5public.h, removing h5vers script and updating CMake and Java configurations.

Versioning:
Update version to 2.1 in H5public.h.
Derive version strings in H5public.h using macros.
CMake:
Extract version from H5public.h in HDF5config.cmake and HDF5AsSubdirMacros.cmake.
Configure README.md and CHANGELOG.md using CMakeLists.txt.
Java:
Generate H5Version.java from H5public.h for version consistency.
Update H5.java to use H5Version for version constants.
Removals:
Delete bin/h5vers script, previously used for version management.
2026-01-21 23:02:49 -06:00
bmribler c067d3f471 Fixes invalid example URLs and makes other improvement in the C++ documentation (#6164) 2026-01-21 09:36:53 -06:00
efferre79 476c60961c the targets interface should support HDF5_INSTALL_INCLUDE_DIR (#6142) 2026-01-13 10:27:38 -06:00
jhendersonHDF b100609caa Add Findlibaec CMake module for locating libaec (#6152) 2026-01-13 09:26:40 -06:00
H. Joe Lee 26afaeb8cc ci(aocc): update version to 5.1 (#6156)
close #6155
2026-01-12 08:31:14 -06:00
Larry Knox 36ef3cc8e7 Fix macos-26 java workflow (#6151)
Removed code to set JAVA_HOME to a specific directory, which seemed to cause a conflict between the Java version used to compile and the runtime Java version.
2026-01-09 17:10:56 -06:00
bmribler 61d414b84a Adds release version to constants in H5Z and H5AC (#6141) 2026-01-06 10:27:39 -06:00
dependabot[bot] 13ee56c5d3 Bump the github-actions group with 11 updates (#6138)
Bumps the github-actions group with 11 updates:

| Package | From | To |
| --- | --- | --- |
| [actions/checkout](https://github.com/actions/checkout) | `3` | `6` |
| [actions/download-artifact](https://github.com/actions/download-artifact) | `6.0.0` | `7.0.0` |
| [actions/upload-artifact](https://github.com/actions/upload-artifact) | `5.0.0` | `6.0.0` |
| [actions/cache](https://github.com/actions/cache) | `4.3.0` | `5.0.1` |
| [github/codeql-action](https://github.com/github/codeql-action) | `3` | `4` |
| [azure/trusted-signing-action](https://github.com/azure/trusted-signing-action) | `0.5.10` | `0.5.11` |
| [cygwin/cygwin-install-action](https://github.com/cygwin/cygwin-install-action) | `b9bf9147075ee9811ac11beee9351eeb93e2f2fb` | `7d2dc1e241644c3318bed9ec74115d1929baa681` |
| [vmactions/freebsd-vm](https://github.com/vmactions/freebsd-vm) | `1.3.0` | `1.3.4` |
| [msys2/setup-msys2](https://github.com/msys2/setup-msys2) | `2.29.0` | `2.30.0` |
| [vmactions/openbsd-vm](https://github.com/vmactions/openbsd-vm) | `1.2.5` | `1.3.1` |
| [mpi4py/setup-mpi](https://github.com/mpi4py/setup-mpi) | `1.4.0` | `1.4.1` |
2026-01-02 11:13:52 -06:00
malcolm-vivosa 6ca281ba66 Use 'find_dependency' instead of 'find_package' (#6139)
It is considered best practice for cmake package configuration files to use "find_dependency" instead of "find_package".
This is because it can propagate flags properly, gives more clear error messages and is able to avoid duplicate dependency include issues.

This change fixes an issue I am seeing in some external cmake projects when including hdf5. As per issue report here https://github.com/HDFGroup/hdf5/issues/6107
2026-01-02 10:55:27 -06:00
jhendersonHDF d1efeba7be Add predefined datatype for FP4 format (#6122)
Adds predefined datatype for FP4 data in E2M1 format

Does not add support for any native FP4 types; datatype conversions are performed in software
2025-12-31 11:44:08 -06:00
H. Joe Lee 1ba82a0a75 docs: remove reference numbers in H5Dmodule.h (#6132)
I can't locate  the references that correspond to numbers.
2025-12-31 11:28:26 -06:00
bmribler edf72d98c2 Adds release version to constants in H5S and H5T (#6135)
* Moved \since to the next line for consistency
2025-12-31 09:40:48 -06:00
Scot Breitenfeld 21d916841c Changed CI ctest verbose setting (#6136)
* switched from always verbose ctest output to ONLY on test failures

* Windows and macOS builds will skip clang-format check before building documentation

* resolved Doxygen warnings by adding H5G_link_t=H5L_type_t to the DOXYGEN_PREDEFINED list, by adding the macro definition, Doxygen now knows to treat H5G_link_t as H5L_type_
2025-12-30 13:16:55 -06:00
bmribler c04787d4d8 Adds release version to more constants (#6134) 2025-12-29 16:47:56 -06:00
bmribler e979eee1dc Add release 1.14.6 page to doxygen docs (#6110) 2025-12-24 13:15:41 -05:00
H. Joe Lee c0d2cf6993 chore: make comment consistent in tH5T_F03.F90 (#6128)
There is 1 `Creates`. The rest (=87) are `Create`.
Change `Creates` to `Create`.
2025-12-24 07:59:04 -06:00
bmribler a28ea2259f Changed download link to use the GitHub release page. (#6131) 2025-12-24 07:57:48 -06:00
Scot Breitenfeld e34bbfefbf added codeql workflow (#6121)
Adds CodeQL workflow for C/C++ analysis with scheduled, manual, and branch-specific triggers, including dependency setup, HDF5 configuration, and SARIF handling.
2025-12-22 20:48:43 -06:00
jhendersonHDF 441d83a896 Add predefined datatypes for FP6 formats (#6097)
Adds predefined datatypes for FP6 data in E2M3 and E3M2 formats

Does not add support for any native FP6 types; datatype conversions are performed in software
2025-12-19 12:56:54 -06:00
H. Joe Lee 0b0ed3ac50 ci: update MSYS2 test failure list (#6060)
Remove 2 tests that pass in 2.0.0 from lists of tests that should be run as "Expected to Fail".
2025-12-19 12:53:20 -06:00
bmribler 345c621468 Adds release version to constants in H5Dpublic.h (#6119)
Adds version information to constants and deprecates certain macros in H5Dpublic.h.
2025-12-19 07:58:10 -06:00
Larry Knox bc8f6bb02a Install and build JAVA on windows-11-arm. (#6116)
Setup:
Add JDK 21 setup using actions/setup-java@v5 in arm-main.yml for Windows 11 ARM.
CMake Configuration:
Enable Java build with -DHDF5_BUILD_JAVA=ON in arm-main.yml for Windows 11 ARM.

Fixed #5677
2025-12-18 13:47:20 -06:00
Larry Knox 3e59d7d223 Correct return values for HGOTO_ERROR calls to FAIL instead of '0'. (#6117)
Corrects error return values from 0 to FAIL in H5Z__scaleoffset_decompress_one_byte(), H5Z__scaleoffset_decompress_one_atomic(), and H5Z__scaleoffset_decompress() in H5Zscaleoffset.c
2025-12-17 19:35:48 -06:00
christian-wojek 2ce7fdc4cf Fix CVE-2025-2308 (#5960)
A malformed file can cause the scale-offset filter to have too little input data causing a heap buffer overflow. Additional checks on the maximum buffer length are required during the decompression.

This PR fixes CVE-2025-2308.
2025-12-17 14:14:35 -06:00
christian-wojek 9d90b21ef5 Fix CVE-2025-2309 (#5963)
A malformed file can trigger bit field type conversions that can (due to missing boundary checks in the conversion step) cause a heap buffer overflow. This PR adds a check on the defined conversion to ensure it does not read beyond the size of a single bit field element. Thus, H5T__bit_copy does not result in a buffer overflow. There are several other calls to H5T__bit_copy which might be subject to a similar issue.

This PR fixes CVE-2025-2309.
2025-12-17 12:01:22 -06:00
H. Joe Lee 23ebfa7852 chore: fix quote formatting (#6101)
Change ' to ` for markdown for consistency.
2025-12-15 08:36:31 -06:00
William Allen 03d00fb70e Pin GHA dependencies by hash (#6105)
Hash-pinned dependencies are an important requirement enforced by the OpenSSF scorecard tool: https://github.com/ossf/scorecard/blob/main/docs/checks.md#pinned-dependencies

This commit pins all GitHub Actions workflows to a commit hash.
2025-12-12 11:23:53 -06:00