From f9511f424f7f3ecaace301b5649f4c2d23bcf140 Mon Sep 17 00:00:00 2001
From: jhendersonHDF <jhenderson@hdfgroup.org>
Date: Thu, 31 Aug 2023 21:06:08 -0500
Subject: [PATCH] Fix valgrind warning about write of uninitialized bytes in
 ScaleOffset filter (#3390) (#3462)

---
 src/H5Zscaleoffset.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/src/H5Zscaleoffset.c b/src/H5Zscaleoffset.c
index 80ff80c1a01..3609a881f5a 100644
--- a/src/H5Zscaleoffset.c
+++ b/src/H5Zscaleoffset.c
@@ -1296,6 +1296,9 @@ H5Z__filter_scaleoffset(unsigned flags, size_t cd_nelmts, const unsigned cd_valu
     }
     /* output; compress */
     else {
+        size_t used_bytes;
+        size_t unused_bytes;
+
         HDassert(nbytes == d_nelmts * p.size);
 
         /* before preprocess, convert to memory endianness order if needed */
@@ -1347,7 +1350,10 @@ H5Z__filter_scaleoffset(unsigned flags, size_t cd_nelmts, const unsigned cd_valu
         /* (Looks like an error in the original determination of how many
          *      bytes would be needed for parameters. - QAK, 2010/08/19)
          */
-        HDmemset(outbuf + 13, 0, (size_t)8);
+        used_bytes = 4 + 1 + sizeof(unsigned long long);
+        assert(used_bytes <= size_out);
+        unused_bytes = size_out - used_bytes;
+        HDmemset(outbuf + 13, 0, unused_bytes);
 
         /* special case: minbits equal to full precision */
         if (minbits == p.size * 8) {