Skip to content

Commit 42588ae

Browse files
* Adds a buffer size check in H5Z__filter_scaleoffset to prevent out-of-bounds reads with malformed HDF5 files. * Fixes CVE-2025-44905.
1 parent e5f526b commit 42588ae

File tree

1 file changed

+6
-0
lines changed

1 file changed

+6
-0
lines changed

src/H5Zscaleoffset.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1206,6 +1206,9 @@ H5Z__filter_scaleoffset(unsigned flags, size_t cd_nelmts, const unsigned cd_valu
12061206
unsigned minval_size = 0;
12071207

12081208
minbits = 0;
1209+
if (H5_IS_BUFFER_OVERFLOW((unsigned char *)*buf, 5, (unsigned char *)*buf + *buf_size - 1))
1210+
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, 0, "buffer too short");
1211+
12091212
for (i = 0; i < 4; i++) {
12101213
minbits_mask = ((unsigned char *)*buf)[i];
12111214
minbits_mask <<= i * 8;
@@ -1221,6 +1224,9 @@ H5Z__filter_scaleoffset(unsigned flags, size_t cd_nelmts, const unsigned cd_valu
12211224
minval_size = sizeof(unsigned long long) <= ((unsigned char *)*buf)[4] ? sizeof(unsigned long long)
12221225
: ((unsigned char *)*buf)[4];
12231226
minval = 0;
1227+
if (H5_IS_BUFFER_OVERFLOW((unsigned char *)*buf, 5 + minval_size,
1228+
(unsigned char *)*buf + *buf_size - 1))
1229+
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, 0, "buffer too short");
12241230
for (i = 0; i < minval_size; i++) {
12251231
minval_mask = ((unsigned char *)*buf)[5 + i];
12261232
minval_mask <<= i * 8;

0 commit comments

Comments
 (0)