e6458ec
diff -up ./src/aide.c.orig ./aide-0.16b1/src/aide.c
e6458ec
--- ./src/aide.c.orig	2016-07-12 11:10:08.013158385 +0200
e6458ec
+++ ./src/aide.c	2016-07-12 11:30:54.867833064 +0200
e6458ec
@@ -511,9 +511,28 @@ int main(int argc,char**argv)
0c33c3d
 #endif
0c33c3d
   umask(0177);
0c33c3d
   init_sighandler();
0c33c3d
-
0c33c3d
   setdefaults_before_config();
0c33c3d
 
0c33c3d
+#if WITH_GCRYPT
0c33c3d
+  error(255,"Gcrypt library initialization\n");
0c33c3d
+  /*
0c33c3d
+   *  Initialize libgcrypt as per
0c33c3d
+   *  http://www.gnupg.org/documentation/manuals/gcrypt/Initializing-the-library.html
0c33c3d
+   *
0c33c3d
+   *
0c33c3d
+   */
0c33c3d
+  gcry_control(GCRYCTL_SET_ENFORCED_FIPS_FLAG, 0);
0c33c3d
+  gcry_control(GCRYCTL_INIT_SECMEM, 1);
0c33c3d
+
0c33c3d
+  if(!gcry_check_version(GCRYPT_VERSION)) {
0c33c3d
+      error(0,"libgcrypt version mismatch\n");
0c33c3d
+      exit(VERSION_MISMATCH_ERROR);
0c33c3d
+  }
0c33c3d
+
0c33c3d
+  gcry_control(GCRYCTL_INITIALIZATION_FINISHED, 0);
0c33c3d
+#endif /* WITH_GCRYPT */
0c33c3d
+
0c33c3d
+
0c33c3d
   if(read_param(argc,argv)==RETFAIL){
0c33c3d
     error(0, _("Invalid argument\n") );
0c33c3d
     exit(INVALID_ARGUMENT_ERROR);
e6458ec
@@ -646,6 +665,9 @@ int main(int argc,char**argv)
0c33c3d
     }
0c33c3d
 #endif
0c33c3d
   }
0c33c3d
+#ifdef WITH_GCRYPT
0c33c3d
+  gcry_control(GCRYCTL_TERM_SECMEM, 0);
0c33c3d
+#endif /* WITH_GCRYPT */
0c33c3d
   return RETOK;
0c33c3d
 }
0c33c3d
 const char* aide_key_3=CONFHMACKEY_03;
e6458ec
diff -up ./src/md.c.orig ./aide-0.16b1/src/md.c
e6458ec
--- ./src/md.c.orig	2016-04-15 23:30:16.000000000 +0200
e6458ec
+++ ./src/md.c	2016-07-12 11:35:04.007675329 +0200
0c33c3d
@@ -201,14 +201,7 @@ int init_md(struct md_container* md) {
0c33c3d
   }
0c33c3d
 #endif 
0c33c3d
 #ifdef WITH_GCRYPT
0c33c3d
-  error(255,"Gcrypt library initialization\n");
0c33c3d
-  	if(!gcry_check_version(GCRYPT_VERSION)) {
0c33c3d
-		error(0,"libgcrypt version mismatch\n");
0c33c3d
-		exit(VERSION_MISMATCH_ERROR);
0c33c3d
-	}
0c33c3d
-	gcry_control(GCRYCTL_DISABLE_SECMEM, 0);
0c33c3d
-	gcry_control(GCRYCTL_INITIALIZATION_FINISHED, 0);
0c33c3d
-	if(gcry_md_open(&md->mdh,0,0)!=GPG_ERR_NO_ERROR){
e6458ec
+        if(gcry_md_open(&md->mdh,0,GCRY_MD_FLAG_SECURE)!=GPG_ERR_NO_ERROR){
0c33c3d
 		error(0,"gcrypt_md_open failed\n");
0c33c3d
 		exit(IO_ERROR);
0c33c3d
 	}
0c33c3d
@@ -299,7 +292,7 @@ int close_md(struct md_container* md) {
0c33c3d
   
0c33c3d
   /*.    There might be more hashes in the library. Add those here..   */
0c33c3d
   
0c33c3d
-  gcry_md_reset(md->mdh);
0c33c3d
+  gcry_md_close(md->mdh);
0c33c3d
 #endif  
0c33c3d
 
0c33c3d
 #ifdef WITH_MHASH
e6458ec
diff -up ./src/util.c.orig ./aide-0.16b1/src/util.c
e6458ec
--- ./src/util.c.orig	2016-07-12 11:39:17.023437355 +0200
e6458ec
+++ ./src/util.c	2016-07-12 11:39:51.618721157 +0200
e6458ec
@@ -519,28 +519,5 @@ int syslog_facility_lookup(char *s)
0c33c3d
 	return(AIDE_SYSLOG_FACILITY);
0c33c3d
 }
0c33c3d
 
0c33c3d
-/* We need these dummy stubs to fool the linker into believing that
0c33c3d
-   we do not need them at link time */
0c33c3d
-
0c33c3d
-void* dlopen(char*filename,int flag)
0c33c3d
-{
0c33c3d
-  return NULL;
0c33c3d
-}
0c33c3d
-
0c33c3d
-void* dlsym(void*handle,char*symbol)
0c33c3d
-{
0c33c3d
-  return NULL;
0c33c3d
-}
0c33c3d
-
0c33c3d
-void* dlclose(void*handle)
0c33c3d
-{
0c33c3d
-  return NULL;
0c33c3d
-}
0c33c3d
-
0c33c3d
-const char* dlerror(void)
0c33c3d
-{
0c33c3d
-  return NULL;
0c33c3d
-}
0c33c3d
-
0c33c3d
 const char* aide_key_2=CONFHMACKEY_02;
0c33c3d
 const char* db_key_2=DBHMACKEY_02;