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>
Tue, 3 Dec 2019 16:01:32 +0000 (17:01 +0100)
src/KM_prng.cpp
wscript

index 735289d5bfaec04267685650fa76e8b326218b3b..336bfcac4134e5f5223c9449bfb55af25a19db33 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 d836e86b552331f338298a6a6c6d1284075c14d1..92282c543cec425f2acaf2dcb0c2ba0110c7a667 100644 (file)
--- a/wscript
+++ b/wscript
@@ -64,6 +64,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):