From ac8bce4055c95a7a8e120b90ff10282b25a08c3d Mon Sep 17 00:00:00 2001 From: Sean McBride Date: Mon, 4 Mar 2024 18:31:07 -0500 Subject: [PATCH] WIP: issue #241: range checking --- src/read_data.c | 7 ++++++- src/read_data_impl.h | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/read_data.c b/src/read_data.c index 762dc95a..48893d53 100644 --- a/src/read_data.c +++ b/src/read_data.c @@ -99,7 +99,10 @@ readcount += j; \ if ( j == block_size ) { \ for ( j = 0; j < block_size; j++ ) { \ - data[i + j] = (T)SwapFunc(&v[j]); \ + auto xxx = SwapFunc(&v[j]); \ + if (xxx >= data_min && xxx <= data_max) { \ + data[i + j] = (T)xxx; \ + } \ } \ } else { \ err_ = 1; \ @@ -272,6 +275,8 @@ #undef READ_TYPED_FUNC2 #define READ_TYPE mat_uint16_t +#define READ_TYPE_MIN 0 +#define READ_TYPE_MAX UINT16_MAX #define READ_TYPE_TYPE READ_TYPE_UINT16 #define READ_TYPED_FUNC1 ReadUInt16Data #define READ_TYPED_FUNC2 ReadCompressedUInt16Data diff --git a/src/read_data_impl.h b/src/read_data_impl.h index 63e3db49..c830e0bc 100644 --- a/src/read_data_impl.h +++ b/src/read_data_impl.h @@ -41,7 +41,7 @@ #endif /* HAVE_MAT_UINT64_T */ static size_t -READ_TYPE_DOUBLE_DATA(mat_t *mat, READ_TYPE *data, size_t len) +READ_TYPE_DOUBLE_DATA(mat_t *mat, READ_TYPE *data, READ_TYPE data_min, READ_TYPE data_max, size_t len) { size_t readcount; #if READ_TYPE_TYPE == READ_TYPE_DOUBLE