[glib-networking] gnutls: don't crash if G_TLS_GNUTLS_PRIORITY is invalid



commit 696e2bb63618de1bda1691473153ff9d9b4f115f
Author: Dan Winship <danw gnome org>
Date:   Tue Jun 18 21:15:50 2013 -0300

    gnutls: don't crash if G_TLS_GNUTLS_PRIORITY is invalid
    
    If G_TLS_GNUTLS_PRIORITY can't be parsed, print a warning and fall
    back to the default value.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=701693

 tls/gnutls/gtlsconnection-gnutls.c |    9 ++++++++-
 1 files changed, 8 insertions(+), 1 deletions(-)
---
diff --git a/tls/gnutls/gtlsconnection-gnutls.c b/tls/gnutls/gtlsconnection-gnutls.c
index 4b93ed6..c911447 100644
--- a/tls/gnutls/gtlsconnection-gnutls.c
+++ b/tls/gnutls/gtlsconnection-gnutls.c
@@ -201,16 +201,23 @@ g_tls_connection_gnutls_init_priorities (void)
 {
   const gchar *base_priority;
   gchar *ssl3_priority, *unsafe_rehandshake_priority, *ssl3_unsafe_rehandshake_priority;
+  int ret;
 
   base_priority = g_getenv ("G_TLS_GNUTLS_PRIORITY");
   if (!base_priority)
     base_priority = "NORMAL:%COMPAT";
+  ret = gnutls_priority_init (&priorities[FALSE][FALSE], base_priority, NULL);
+  if (ret == GNUTLS_E_INVALID_REQUEST)
+    {
+      g_warning ("G_TLS_GNUTLS_PRIORITY is invalid; ignoring!");
+      base_priority = "NORMAL:%COMPAT";
+      gnutls_priority_init (&priorities[FALSE][FALSE], base_priority, NULL);
+    }
 
   ssl3_priority = g_strdup_printf ("%s:!VERS-TLS1.2:!VERS-TLS1.1:!VERS-TLS1.0", base_priority);
   unsafe_rehandshake_priority = g_strdup_printf ("%s:%%UNSAFE_RENEGOTIATION", base_priority);
   ssl3_unsafe_rehandshake_priority = g_strdup_printf 
("%s:!VERS-TLS1.2:!VERS-TLS1.1:!VERS-TLS1.0:%%UNSAFE_RENEGOTIATION", base_priority);
 
-  gnutls_priority_init (&priorities[FALSE][FALSE], base_priority, NULL);
   gnutls_priority_init (&priorities[TRUE][FALSE], ssl3_priority, NULL);
   gnutls_priority_init (&priorities[FALSE][TRUE], unsafe_rehandshake_priority, NULL);
   gnutls_priority_init (&priorities[TRUE][TRUE], ssl3_unsafe_rehandshake_priority, NULL);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]