h5rs tools, browser reader, libhdf5 header checks, plugin filters, concurrency benchmark #14

Merged
osobh merged 60 commits from feat/p1-proof into main 2026-09-26 13:14:39 +00:00
3 changed files with 13 additions and 9 deletions
Showing only changes of commit e60bde3579 - Show all commits
+5 -5
View File
@@ -205,11 +205,11 @@
printed with its address; exit 1 when there are any. libhdf5's h5check printed with its address; exit 1 when there are any. libhdf5's h5check
reads only the 1.8 format. On the conformance corpus it passes all 418 reads only the 1.8 format. On the conformance corpus it passes all 418
files that both clawhdf5 and h5py read in full, and `check --data` flags files that both clawhdf5 and h5py read in full, and `check --data` flags
152 of the 180 files of the CVE corpus (tank, 2026-09-26). `--data` also 134 of the 150 CVE and fuzzer files of the `cve_hdf5` corpus (tank,
follows variable-length data into its global heap collections and 2026-09-26). `--data` also follows variable-length data into its global
reports a damaged one at its address. It inherits the library's heap collections and reports a damaged one at its address. It inherits
tolerance, though: 21 of the 28 it passes are files the library's tolerance, though: 9 of the 16 it passes are files h5dump
h5dump 1.14.6 rejects (see `docs/known-issues.md`, header checks). 1.14.6 rejects (see `docs/known-issues.md`, header checks).
- Values over `--max-bytes` (default 1 GiB) are reported instead of read; - Values over `--max-bytes` (default 1 GiB) are reported instead of read;
a panic is caught and reported as an internal error (exit 3). a panic is caught and reported as an internal error (exit 3).
`scripts/h5rs-fuzz.sh` runs every subcommand over a corpus (default the `scripts/h5rs-fuzz.sh` runs every subcommand over a corpus (default the
+5 -3
View File
@@ -250,9 +250,11 @@ What it does not check: free-space manager and shared-message (SOHM) table
checksums, global heap collections no variable-length value points into (and checksums, global heap collections no variable-length value points into (and
none at all without `--data`), and objects reachable only by external links. It validates with none at all without `--data`), and objects reachable only by external links. It validates with
clawhdf5's parsers, so it accepts what they accept: some header damage that clawhdf5's parsers, so it accepts what they accept: some header damage that
libhdf5 refuses goes unreported (of the 180 files of the HDF Group's CVE libhdf5 refuses goes unreported. Of the 150 CVE and fuzzer files of the
corpus, `check --data` passes 28, and h5dump 1.14.6 rejects 21 of those; HDF Group's `cve_hdf5` corpus (`cvefiles/` and `fuzzerfiles/`),
tank, 2026-09-26). `check --data` passes 16, and h5dump 1.14.6 rejects 9 of those (tank,
2026-09-26, `h5rs check --data F` and `h5dump F` per file; before the
library's header checks it passed 28, of which h5dump rejects 21).
## Robustness ## Robustness
+3 -1
View File
@@ -186,7 +186,9 @@ fill-value item that did is fixed).
- (`cve-2024-32616` `/group1/dset3` and `cve-2025-2309`'s `Comp_OBJREF` - (`cve-2024-32616` `/group1/dset3` and `cve-2025-2309`'s `Comp_OBJREF`
attribute are h5py/numpy type-mapping failures, not libhdf5 refusals.) attribute are h5py/numpy type-mapping failures, not libhdf5 refusals.)
- `h5rs check` validates with the library's parsers, so it inherits what - `h5rs check` validates with the library's parsers, so it inherits what
they accept: H5RS_CHECK_CVE_COUNTS. they accept: of the 150 CVE and fuzzer files, `check --data` passes 16,
and h5dump 1.14.6 rejects 9 of those (tank, 2026-09-26; 28 and 21
before these checks).
- **Writer:** - **Writer:**
- Nested groups beyond one level: path-like names are now refused, not - Nested groups beyond one level: path-like names are now refused, not
created. created.