Quell some valgrind errors.
authorCarl Hetherington <cth@carlh.net>
Wed, 5 Sep 2018 09:23:04 +0000 (10:23 +0100)
committerCarl Hetherington <cth@carlh.net>
Mon, 23 Nov 2020 22:54:16 +0000 (23:54 +0100)
src/KM_prng.cpp
wscript

index 2efb9f9b630e7064730dc31f0943a396b520728c..701a7b84ef1466da41dac2d59526ded62887e080 100755 (executable)
@@ -37,6 +37,9 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #include <openssl/aes.h>
 #include <openssl/sha.h>
 #include <openssl/bn.h>
+#if HAVE_VALGRIND_MEMCHECK_H
+#include <valgrind/memcheck.h>
+#endif
 
 using namespace Kumu;
 
@@ -91,6 +94,10 @@ public:
          result = URandom.Read(rng_key, RNG_KEY_SIZE, &read_count);
        }
 
+#if HAVE_VALGRIND_MEMCHECK_H
+      VALGRIND_MAKE_MEM_DEFINED (rng_key, RNG_KEY_SIZE);
+#endif
+
       if ( KM_FAILURE(result) )
        DefaultLogSink().Error("Error opening random device: %s\n", DEV_URANDOM);
 
@@ -114,6 +121,11 @@ public:
     SHA1_Update(&SHA, key_fodder, RNG_KEY_SIZE);
     SHA1_Final(sha_buf, &SHA);
 
+#if HAVE_VALGRIND_MEMCHECK_H
+    VALGRIND_MAKE_MEM_DEFINED (sha_buf, 20);
+    VALGRIND_MAKE_MEM_DEFINED (&m_Context, sizeof(m_Context));
+#endif
+
     AutoMutex Lock(m_Lock);
     AES_set_encrypt_key(sha_buf, RNG_KEY_SIZE_BITS, &m_Context);
     ui32_t* m_ctr_buf_int = reinterpret_cast<ui32_t*> (m_ctr_buf + 12);
@@ -150,6 +162,11 @@ public:
          buf[i] = rand_r(&m_cth_test_rng_state);
 #endif
       }
+
+#if HAVE_VALGRIND_MEMCHECK_H
+    VALGRIND_MAKE_MEM_DEFINED (buf, len);
+#endif
+
   }
 
   void reset()
diff --git a/wscript b/wscript
index c4107f1f87cffed14443f5a62920cb9a844038bb..c1536752a3e210fdc72313f653614dac2294ea99 100644 (file)
--- a/wscript
+++ b/wscript
@@ -76,6 +76,8 @@ def configure(conf):
                    lib=['boost_filesystem%s' % boost_lib_suffix, 'boost_system%s' % boost_lib_suffix],
                    uselib_store='BOOST_FILESYSTEM')
 
+    conf.check(header_name='valgrind/memcheck.h', mandatory=False)
+
     conf.recurse('src')
 
 def build(bld):