Fix more undefined behavior issues (#6330)

This commit is contained in:
jhendersonHDF
2026-03-31 14:14:18 -05:00
committed by GitHub
parent 4614d0b30f
commit ceca851a0d
8 changed files with 105 additions and 88 deletions
+23 -27
View File
@@ -811,6 +811,8 @@ test_scalar_io(hid_t fapl)
TEST_ERROR;
space = -1;
PASSED();
return SUCCEED;
error:
@@ -14357,7 +14359,7 @@ typedef struct scatter_info_t {
}
static herr_t
scatter_cb(void **src_buf /*out*/, size_t *src_buf_bytes_used /*out*/, void *_scatter_info)
scatter_cb(const void **src_buf /*out*/, size_t *src_buf_bytes_used /*out*/, void *_scatter_info)
{
scatter_info_t *scatter_info = (scatter_info_t *)_scatter_info;
size_t nelmts; /* Number of elements to return in src_buf */
@@ -14367,7 +14369,7 @@ scatter_cb(void **src_buf /*out*/, size_t *src_buf_bytes_used /*out*/, void *_sc
assert(nelmts > 0);
/* Set output variables */
*src_buf = (void *)scatter_info->src_buf;
*src_buf = scatter_info->src_buf;
*src_buf_bytes_used = nelmts * sizeof(scatter_info->src_buf[0]);
/* Update scatter_info */
@@ -14432,7 +14434,7 @@ test_scatter(void)
scatter_info.size = 8;
/* Scatter data */
if (H5Dscatter((H5D_scatter_func_t)scatter_cb, &scatter_info, H5T_NATIVE_INT, sid, dst_buf) < 0)
if (H5Dscatter(scatter_cb, &scatter_info, H5T_NATIVE_INT, sid, dst_buf) < 0)
TEST_ERROR;
/* Verify data */
@@ -14471,7 +14473,7 @@ test_scatter(void)
scatter_info.size = 12;
/* Scatter data */
if (H5Dscatter((H5D_scatter_func_t)scatter_cb, &scatter_info, H5T_NATIVE_INT, sid, dst_buf) < 0)
if (H5Dscatter(scatter_cb, &scatter_info, H5T_NATIVE_INT, sid, dst_buf) < 0)
TEST_ERROR;
/* Verify data */
@@ -14525,7 +14527,7 @@ test_scatter(void)
scatter_info.size = 36;
/* Scatter data */
if (H5Dscatter((H5D_scatter_func_t)scatter_cb, &scatter_info, H5T_NATIVE_INT, sid, dst_buf) < 0)
if (H5Dscatter(scatter_cb, &scatter_info, H5T_NATIVE_INT, sid, dst_buf) < 0)
TEST_ERROR;
/* Verify data */
@@ -14580,7 +14582,7 @@ test_scatter(void)
scatter_info.size = 16;
/* Scatter data */
if (H5Dscatter((H5D_scatter_func_t)scatter_cb, &scatter_info, H5T_NATIVE_INT, sid, dst_buf) < 0)
if (H5Dscatter(scatter_cb, &scatter_info, H5T_NATIVE_INT, sid, dst_buf) < 0)
TEST_ERROR;
/* Verify data */
@@ -14612,7 +14614,7 @@ test_scatter(void)
scatter_info.size = 4;
/* Scatter data */
if (H5Dscatter((H5D_scatter_func_t)scatter_cb, &scatter_info, H5T_NATIVE_INT, sid, dst_buf) < 0)
if (H5Dscatter(scatter_cb, &scatter_info, H5T_NATIVE_INT, sid, dst_buf) < 0)
TEST_ERROR;
/* Verify data */
@@ -15012,7 +15014,7 @@ error:
*-------------------------------------------------------------------------
*/
static herr_t
scatter_error_cb_fail(void **src_buf /*out*/, size_t *src_buf_bytes_used /*out*/, void *_scatter_info)
scatter_error_cb_fail(const void **src_buf /*out*/, size_t *src_buf_bytes_used /*out*/, void *_scatter_info)
{
scatter_info_t *scatter_info = (scatter_info_t *)_scatter_info;
size_t nelmts; /* Number of elements to return in src_buf */
@@ -15022,14 +15024,14 @@ scatter_error_cb_fail(void **src_buf /*out*/, size_t *src_buf_bytes_used /*out*/
assert(nelmts > 0);
/* Set output variables */
*src_buf = (void *)scatter_info->src_buf;
*src_buf = scatter_info->src_buf;
*src_buf_bytes_used = nelmts * sizeof(scatter_info->src_buf[0]);
return FAIL;
} /* end scatter_error_cb_fail() */
static herr_t
scatter_error_cb_null(void **src_buf /*out*/, size_t *src_buf_bytes_used /*out*/, void *_scatter_info)
scatter_error_cb_null(const void **src_buf /*out*/, size_t *src_buf_bytes_used /*out*/, void *_scatter_info)
{
scatter_info_t *scatter_info = (scatter_info_t *)_scatter_info;
size_t nelmts; /* Number of elements to return in src_buf */
@@ -15046,7 +15048,7 @@ scatter_error_cb_null(void **src_buf /*out*/, size_t *src_buf_bytes_used /*out*/
} /* end scatter_error_cb_null() */
static herr_t
scatter_error_cb_unalign(void **src_buf /*out*/, size_t *src_buf_bytes_used /*out*/,
scatter_error_cb_unalign(const void **src_buf /*out*/, size_t *src_buf_bytes_used /*out*/,
void *_src_buf_bytes_used)
{
/* Set output variables */
@@ -15088,7 +15090,7 @@ test_scatter_error(void)
scatter_info.src_buf = src_buf;
scatter_info.block = sizeof(src_buf) / sizeof(src_buf[0]);
scatter_info.size = 6;
if (H5Dscatter((H5D_scatter_func_t)scatter_cb, &scatter_info, H5T_NATIVE_INT, sid, dst_buf) < 0)
if (H5Dscatter(scatter_cb, &scatter_info, H5T_NATIVE_INT, sid, dst_buf) < 0)
TEST_ERROR;
/*
@@ -15108,7 +15110,7 @@ test_scatter_error(void)
scatter_info.size = 6;
H5E_BEGIN_TRY
{
ret = H5Dscatter((H5D_scatter_func_t)scatter_cb, &scatter_info, sid, sid, dst_buf);
ret = H5Dscatter(scatter_cb, &scatter_info, sid, sid, dst_buf);
}
H5E_END_TRY
if (ret >= 0)
@@ -15118,8 +15120,7 @@ test_scatter_error(void)
scatter_info.size = 6;
H5E_BEGIN_TRY
{
ret = H5Dscatter((H5D_scatter_func_t)scatter_cb, &scatter_info, H5T_NATIVE_INT, H5T_NATIVE_INT,
dst_buf);
ret = H5Dscatter(scatter_cb, &scatter_info, H5T_NATIVE_INT, H5T_NATIVE_INT, dst_buf);
}
H5E_END_TRY
if (ret >= 0)
@@ -15129,7 +15130,7 @@ test_scatter_error(void)
scatter_info.size = 6;
H5E_BEGIN_TRY
{
ret = H5Dscatter((H5D_scatter_func_t)scatter_cb, &scatter_info, H5T_NATIVE_INT, sid, NULL);
ret = H5Dscatter(scatter_cb, &scatter_info, H5T_NATIVE_INT, sid, NULL);
}
H5E_END_TRY
if (ret >= 0)
@@ -15142,7 +15143,7 @@ test_scatter_error(void)
scatter_info.size = 7;
H5E_BEGIN_TRY
{
ret = H5Dscatter((H5D_scatter_func_t)scatter_cb, &scatter_info, H5T_NATIVE_INT, sid, dst_buf);
ret = H5Dscatter(scatter_cb, &scatter_info, H5T_NATIVE_INT, sid, dst_buf);
}
H5E_END_TRY
if (ret >= 0)
@@ -15155,8 +15156,7 @@ test_scatter_error(void)
scatter_info.size = 6;
H5E_BEGIN_TRY
{
ret = H5Dscatter((H5D_scatter_func_t)scatter_error_cb_fail, &scatter_info, H5T_NATIVE_INT, sid,
dst_buf);
ret = H5Dscatter(scatter_error_cb_fail, &scatter_info, H5T_NATIVE_INT, sid, dst_buf);
}
H5E_END_TRY
if (ret >= 0)
@@ -15169,8 +15169,7 @@ test_scatter_error(void)
scatter_info.size = 6;
H5E_BEGIN_TRY
{
ret = H5Dscatter((H5D_scatter_func_t)scatter_error_cb_null, &scatter_info, H5T_NATIVE_INT, sid,
dst_buf);
ret = H5Dscatter(scatter_error_cb_null, &scatter_info, H5T_NATIVE_INT, sid, dst_buf);
}
H5E_END_TRY
if (ret >= 0)
@@ -15182,8 +15181,7 @@ test_scatter_error(void)
cb_unalign_nbytes = 0;
H5E_BEGIN_TRY
{
ret = H5Dscatter((H5D_scatter_func_t)scatter_error_cb_unalign, &cb_unalign_nbytes, H5T_NATIVE_INT,
sid, dst_buf);
ret = H5Dscatter(scatter_error_cb_unalign, &cb_unalign_nbytes, H5T_NATIVE_INT, sid, dst_buf);
}
H5E_END_TRY
if (ret >= 0)
@@ -15196,8 +15194,7 @@ test_scatter_error(void)
cb_unalign_nbytes = sizeof(src_buf[0]) - 1;
H5E_BEGIN_TRY
{
ret = H5Dscatter((H5D_scatter_func_t)scatter_error_cb_unalign, &cb_unalign_nbytes, H5T_NATIVE_INT,
sid, dst_buf);
ret = H5Dscatter(scatter_error_cb_unalign, &cb_unalign_nbytes, H5T_NATIVE_INT, sid, dst_buf);
}
H5E_END_TRY
if (ret >= 0)
@@ -15206,8 +15203,7 @@ test_scatter_error(void)
cb_unalign_nbytes = sizeof(src_buf[0]) + 1;
H5E_BEGIN_TRY
{
ret = H5Dscatter((H5D_scatter_func_t)scatter_error_cb_unalign, &cb_unalign_nbytes, H5T_NATIVE_INT,
sid, dst_buf);
ret = H5Dscatter(scatter_error_cb_unalign, &cb_unalign_nbytes, H5T_NATIVE_INT, sid, dst_buf);
}
H5E_END_TRY
if (ret >= 0)
+3 -3
View File
@@ -157,11 +157,11 @@ static int without_hardware_g = 0;
} \
\
if (n < SRC_PREC - 2) { \
value1 = (TYPE)(value1 << 1); \
value1 = (TYPE)((uint64_t)value1 << 1); \
value2 = (TYPE)((value1 - 1) | value1); \
} \
else if (n == SRC_PREC - 2) { /*to avoid overflow of negative values for signed integer*/ \
value1 = (TYPE)(value1 << 1); \
value1 = (TYPE)((uint64_t)value1 << 1); \
value2 = (TYPE)((~value1) | value1); \
} \
} \
@@ -176,7 +176,7 @@ static int without_hardware_g = 0;
saved_p += SRC_SIZE; \
} \
if (n < SRC_PREC - 1) \
value2 = (TYPE)(value2 << 1); \
value2 = (TYPE)((uint64_t)value2 << 1); \
} \
} while (0)
+1 -1
View File
@@ -54,7 +54,7 @@ const float windchillFfloat[ROWS][COLS] = {
{25.0F, 18.0F, 11.0F, 4.0F, -3.0F, -11.0F, -18.0F, -25.0F, -32.0F, -39.0F, -46.0F, -54.0F, -61.0F, -68.0F,
-75.0F, -82.0F, -89.0F, -97.0F},
{25.0F, 17.0F, 10.0F, 3.0F, -4.0F, -11.0F, -19.0F, -26.0F, -33.0F, -40.0F, -48.0F, -55.0F, -62.0F, -69.0F,
-76.0F, -84.0F, -91.0F, -98.0F}};
-76.0F, -84.0F, -91.0F, -97.0F}};
const int transformData[ROWS][COLS] = {{36, 31, 25, 19, 13, 7, 1, 5, 11, 16, 22, 28, 34, 40, 46, 52, 57, 63},
{34, 27, 21, 15, 9, 3, 4, 10, 16, 22, 28, 35, 41, 47, 53, 59, 66, 1},
+37 -30
View File
@@ -737,12 +737,12 @@ error:
static herr_t
test_transpose(size_t nx, size_t ny)
{
int *src = NULL;
int *dst = NULL;
hsize_t src_stride[2], dst_stride[2];
hsize_t size[2];
char s[256];
hsize_t i, j;
hssize_t src_stride[2], dst_stride[2];
int *src = NULL;
int *dst = NULL;
hsize_t size[2];
char s[256];
hsize_t i, j;
snprintf(s, sizeof(s), "Testing 2d transpose by stride %4lux%-lud", (unsigned long)nx, (unsigned long)ny);
printf("%-70s", s);
@@ -762,12 +762,12 @@ test_transpose(size_t nx, size_t ny)
size[0] = nx;
size[1] = ny;
src_stride[0] = 0;
src_stride[1] = sizeof(*src);
dst_stride[0] = (hsize_t)((1 - nx * ny) * sizeof(*src));
dst_stride[1] = (hsize_t)(nx * sizeof(*src));
src_stride[1] = (hssize_t)sizeof(*src);
dst_stride[0] = (hssize_t)((1 - nx * ny) * sizeof(*src));
dst_stride[1] = (hssize_t)(nx * sizeof(*src));
/* Copy and transpose */
H5VM_stride_copy(2, (hsize_t)sizeof(*src), size, dst_stride, dst, src_stride, src);
H5VM_stride_copy_s(2, (hsize_t)sizeof(*src), size, dst_stride, dst, src_stride, src);
/* Check */
for (i = 0; i < nx; i++) {
@@ -830,12 +830,14 @@ error:
static herr_t
test_sub_super(size_t nx, size_t ny)
{
uint8_t *full = NULL; /*original image */
uint8_t *half = NULL; /*image at 1/2 resolution */
uint8_t *twice = NULL; /*2x2 pixels */
hsize_t src_stride[4]; /*source stride info */
hsize_t dst_stride[4]; /*destination stride info */
hsize_t size[4]; /*number of sample points */
hssize_t src_stride_s[4]; /*signed source stride info */
hssize_t dst_stride_s[4]; /*signed destination stride info */
uint8_t *full = NULL; /*original image */
uint8_t *half = NULL; /*image at 1/2 resolution */
uint8_t *twice = NULL; /*2x2 pixels */
hsize_t src_stride[4]; /*source stride info */
hsize_t dst_stride[4]; /*destination stride info */
hsize_t size[4]; /*number of sample points */
hsize_t i, j;
char s[256];
@@ -895,21 +897,21 @@ test_sub_super(size_t nx, size_t ny)
fflush(stdout);
/* Setup stride */
size[0] = nx;
size[1] = ny;
size[2] = 2;
size[3] = 2;
src_stride[0] = 0;
src_stride[1] = 1;
src_stride[2] = 0;
src_stride[3] = 0;
dst_stride[0] = (hsize_t)(2 * ny);
dst_stride[1] = (hsize_t)(2 * sizeof(uint8_t) - 4 * ny);
dst_stride[2] = (hsize_t)(2 * ny - 2 * sizeof(uint8_t));
dst_stride[3] = sizeof(uint8_t);
size[0] = nx;
size[1] = ny;
size[2] = 2;
size[3] = 2;
src_stride_s[0] = 0;
src_stride_s[1] = 1;
src_stride_s[2] = 0;
src_stride_s[3] = 0;
dst_stride_s[0] = (hssize_t)(2 * ny);
dst_stride_s[1] = (hssize_t)(2 * sizeof(uint8_t) - 4 * ny);
dst_stride_s[2] = (hssize_t)(2 * ny - 2 * sizeof(uint8_t));
dst_stride_s[3] = (hssize_t)sizeof(uint8_t);
/* Copy */
H5VM_stride_copy(4, (hsize_t)sizeof(uint8_t), size, dst_stride, twice, src_stride, half);
H5VM_stride_copy_s(4, (hsize_t)sizeof(uint8_t), size, dst_stride_s, twice, src_stride_s, half);
/* Check */
s[0] = '\0';
@@ -1071,8 +1073,13 @@ test_array_offset_n_calc(size_t n, size_t x, size_t y, size_t z)
off = H5VM_array_offset(ARRAY_OFFSET_NDIMS, dims, coords);
/* Check offset of coordinate */
if (a[off] != off)
if (a[off] != off) {
fprintf(stderr,
"incorrect offset for coordinate (%" PRIuHSIZE ", %" PRIuHSIZE ", %" PRIuHSIZE ")."
" expected %" PRIuHSIZE ", got %" PRIuHSIZE "\n",
coords[0], coords[1], coords[2], off, a[off]);
TEST_ERROR;
}
/* Get coordinates of offset */
if (H5VM_array_calc(off, ARRAY_OFFSET_NDIMS, dims, new_coords) < 0)