]> source.dussan.org Git - tigervnc.git/commitdiff
Merge branch 'utilize-system-wide-crypto' of https://github.com/grulja/tigervnc
authorPierre Ossman <ossman@cendio.se>
Wed, 14 Jul 2021 12:24:08 +0000 (14:24 +0200)
committerPierre Ossman <ossman@cendio.se>
Wed, 14 Jul 2021 12:24:08 +0000 (14:24 +0200)
1  2 
common/rfb/CSecurityTLS.cxx
common/rfb/SSecurityTLS.cxx
unix/xserver/hw/vnc/Xvnc.man

Simple merge
index 4abc158f808f45fda630d11ea58bf5ac48aad11d,2c236c71049c410eec255c8e7c9a06687642f93f..6216ffd9b3b552a97c4ef865fb6bc1eebb48b424
@@@ -201,29 -176,66 +201,67 @@@ void SSecurityTLS::setParams(gnutls_ses
    static const char kx_anon_priority[] = ":+ANON-ECDH:+ANON-DH";
  
    int ret;
-   char *prio;
-   const char *err;
  
-   prio = (char*)malloc(strlen(Security::GnuTLSPriority) +
-                        strlen(kx_anon_priority) + 1);
-   if (prio == NULL)
-     throw AuthFailureException("Not enough memory for GnuTLS priority string");
+   // Custom priority string specified?
+   if (strcmp(Security::GnuTLSPriority, "") != 0) {
+     char *prio;
+     const char *err;
  
-   strcpy(prio, Security::GnuTLSPriority);
-   if (anon)
+     prio = (char*)malloc(strlen(Security::GnuTLSPriority) +
+                          strlen(kx_anon_priority) + 1);
+     if (prio == NULL)
+       throw AuthFailureException("Not enough memory for GnuTLS priority string");
+     strcpy(prio, Security::GnuTLSPriority);
+     if (anon)
+       strcat(prio, kx_anon_priority);
+     ret = gnutls_priority_set_direct(session, prio, &err);
+     free(prio);
+     if (ret != GNUTLS_E_SUCCESS) {
+       if (ret == GNUTLS_E_INVALID_REQUEST)
+         vlog.error("GnuTLS priority syntax error at: %s", err);
+       throw AuthFailureException("gnutls_set_priority_direct failed");
+     }
+   } else if (anon) {
+     const char *err;
+ #if GNUTLS_VERSION_NUMBER >= 0x030603
+     ret = gnutls_set_default_priority_append(session, kx_anon_priority, &err, 0);
+     if (ret != GNUTLS_E_SUCCESS) {
+       if (ret == GNUTLS_E_INVALID_REQUEST)
+         vlog.error("GnuTLS priority syntax error at: %s", err);
+       throw AuthFailureException("gnutls_set_default_priority_append failed");
+     }
+ #else
+     // We don't know what the system default priority is, so we guess
+     // it's what upstream GnuTLS has
+     static const char gnutls_default_priority[] = "NORMAL";
+     char *prio;
+     prio = (char*)malloc(strlen(gnutls_default_priority) +
+                          strlen(kx_anon_priority) + 1);
+     if (prio == NULL)
+       throw AuthFailureException("Not enough memory for GnuTLS priority string");
+     strcpy(prio, gnutls_default_priority);
      strcat(prio, kx_anon_priority);
  
-   ret = gnutls_priority_set_direct(session, prio, &err);
+     ret = gnutls_priority_set_direct(session, prio, &err);
  
-   free(prio);
+     free(prio);
  
-   if (ret != GNUTLS_E_SUCCESS) {
-     if (ret == GNUTLS_E_INVALID_REQUEST)
-       vlog.error("GnuTLS priority syntax error at: %s", err);
-     throw AuthFailureException("gnutls_set_priority_direct failed");
+     if (ret != GNUTLS_E_SUCCESS) {
+       if (ret == GNUTLS_E_INVALID_REQUEST)
+         vlog.error("GnuTLS priority syntax error at: %s", err);
+       throw AuthFailureException("gnutls_set_priority_direct failed");
+     }
+ #endif
    }
  
 +#if defined (SSECURITYTLS__USE_DEPRECATED_DH)
    if (gnutls_dh_params_init(&dh_params) != GNUTLS_E_SUCCESS)
      throw AuthFailureException("gnutls_dh_params_init failed");
  
Simple merge