Merge branch 'maint'
authorAndre Noll <maan@tuebingen.mpg.de>
Sun, 31 Dec 2017 14:04:16 +0000 (15:04 +0100)
committerAndre Noll <maan@tuebingen.mpg.de>
Sun, 31 Dec 2017 14:05:15 +0000 (15:05 +0100)
A conflict in init_random_seed_or_die() of gcrypt.c. The fix added
in the maint branch conflicted against the master branch which also
modified the function to bump the required libgcrypt version.

* maint:
  resample filter: Don't discard const.
  gcrypt: Seed PRNG in init_random_seed_or_die().
  bash_completion: Get rid of weird retry logic.

1  2 
bash_completion
gcrypt.c
resample_filter.c

diff --cc bash_completion
Simple merge
diff --cc gcrypt.c
+++ b/gcrypt.c
@@@ -52,21 -59,33 +52,22 @@@ void get_random_bytes_or_die(unsigned c
  }
  
  /*
-  * This is called at the beginning of every program that uses libgcrypt. We
-  * don't have to initialize any random seed here, but we must initialize the
-  * gcrypt library. This task is performed by gcry_check_version() which can
-  * also check that the gcrypt library version is at least the minimal required
-  * version.
+  * This is called at the beginning of every program that uses libgcrypt. The
+  * call to gcry_check_version() initializes the gcrypt library and checks that
 - * we have at least the minimal required version. This function also tells us
 - * whether we have to use our own OAEP padding code.
++ * we have at least the minimal required version.
   */
  void init_random_seed_or_die(void)
  {
 -      const char *ver, *req_ver;
 +      const char *req_ver = "1.5.0";
+       int seed;
  
-       if (gcry_check_version(req_ver))
-               return;
-       PARA_EMERG_LOG("fatal: need at least libgcrypt-%s, have: %s\n",
-               req_ver, gcry_check_version(NULL));
-       exit(EXIT_FAILURE);
 -      ver = gcry_check_version(NULL);
 -      req_ver = "1.4.0";
+       if (!gcry_check_version(req_ver)) {
+               PARA_EMERG_LOG("fatal: need at least libgcrypt-%s, have: %s\n",
 -                      req_ver, ver);
++                      req_ver, gcry_check_version(NULL));
+               exit(EXIT_FAILURE);
+       }
 -      req_ver = "1.5.0";
 -      if (gcry_check_version(req_ver)) {
 -              libgcrypt_has_oaep = true;
 -              rsa_decrypt_sexp = "(enc-val(flags oaep)(rsa(a %m)))";
 -      } else {
 -              libgcrypt_has_oaep = false;
 -              rsa_decrypt_sexp = "(enc-val(rsa(a %m)))";
 -      }
+       get_random_bytes_or_die((unsigned char *)&seed, sizeof(seed));
+       srandom(seed);
  }
  
  /** S-expression for the public part of an RSA key. */
Simple merge