Code

Merge branch 'master' into jessie-backports
[pkg-collectd.git] / debian / patches / bts832577-gcry-control.patch
diff --git a/debian/patches/bts832577-gcry-control.patch b/debian/patches/bts832577-gcry-control.patch
new file mode 100644 (file)
index 0000000..b4e324a
--- /dev/null
@@ -0,0 +1,93 @@
+Description: network plugin: Don't abort() if gcrypt initialization failed.
+Author: Sebastian Harl <sh@tokkee.org>
+Origin: upstream,
+ commit:a3000cbe3a12163148a28c818269bbdabda1cf5c
+Bug-Debian: https://bugs.debian.org/832577
+Last-Update: 2016-07-28
+
+diff a/src/network.c b/src/network.c
+--- a/src/network.c
++++ b/src/network.c
+@@ -498,7 +498,7 @@
+ } /* }}} int network_dispatch_notification */
+ #if HAVE_LIBGCRYPT
+-static void network_init_gcrypt (void) /* {{{ */
++static int network_init_gcrypt (void) /* {{{ */
+ {
+   gcry_error_t err;
+@@ -506,7 +506,7 @@
+    * Because you can't know in a library whether another library has
+    * already initialized the library */
+   if (gcry_control (GCRYCTL_ANY_INITIALIZATION_P))
+-    return;
++    return (0);
+  /* http://www.gnupg.org/documentation/manuals/gcrypt/Multi_002dThreading.html
+   * To ensure thread-safety, it's important to set GCRYCTL_SET_THREAD_CBS
+@@ -520,7 +520,7 @@
+   if (err)
+   {
+     ERROR ("network plugin: gcry_control (GCRYCTL_SET_THREAD_CBS) failed: %s", gcry_strerror (err));
+-    abort ();
++    return (-1);
+   }
+ # endif
+@@ -530,11 +530,12 @@
+   if (err)
+   {
+     ERROR ("network plugin: gcry_control (GCRYCTL_SET_THREAD_CBS) failed: %s", gcry_strerror (err));
+-    abort ();
++    return (-1);
+   }
+   gcry_control (GCRYCTL_INITIALIZATION_FINISHED);
+-} /* }}} void network_init_gcrypt */
++  return (0);
++} /* }}} int network_init_gcrypt */
+ static gcry_cipher_hd_t network_get_aes256_cypher (sockent_t *se, /* {{{ */
+     const void *iv, size_t iv_size, const char *username)
+@@ -2077,7 +2078,12 @@
+       {
+               if (se->data.client.security_level > SECURITY_LEVEL_NONE)
+               {
+-                      network_init_gcrypt ();
++                      if (network_init_gcrypt () < 0)
++                      {
++                              ERROR ("network plugin: Cannot configure client socket with "
++                                              "security: Failed to initialize crypto library.");
++                              return (-1);
++                      }
+                       if ((se->data.client.username == NULL)
+                                       || (se->data.client.password == NULL))
+@@ -2097,7 +2103,12 @@
+       {
+               if (se->data.server.security_level > SECURITY_LEVEL_NONE)
+               {
+-                      network_init_gcrypt ();
++                      if (network_init_gcrypt () < 0)
++                      {
++                              ERROR ("network plugin: Cannot configure server socket with "
++                                              "security: Failed to initialize crypto library.");
++                              return (-1);
++                      }
+                       if (se->data.server.auth_file == NULL)
+                       {
+@@ -3548,7 +3559,11 @@
+       have_init = 1;
+ #if HAVE_LIBGCRYPT
+-      network_init_gcrypt ();
++      if (network_init_gcrypt () < 0)
++      {
++              ERROR ("network plugin: Failed to initialize crypto library.");
++              return (-1);
++      }
+ #endif
+       if (network_config_stats != 0)