]> source.dussan.org Git - tigervnc.git/commitdiff
Clean up default value for X509 parameters
authorPierre Ossman <ossman@cendio.se>
Fri, 11 Jun 2021 15:40:02 +0000 (17:40 +0200)
committerPierre Ossman <ossman@cendio.se>
Sun, 13 Jun 2021 15:58:55 +0000 (17:58 +0200)
Let's avoid making this too complex and force every user to know about
magical functions.

common/os/os.cxx
common/os/os.h
common/rfb/CSecurityTLS.cxx
common/rfb/CSecurityTLS.h
common/rfb/Configuration.cxx
common/rfb/Configuration.h
common/rfb/SecurityClient.cxx
common/rfb/SecurityClient.h
vncviewer/vncviewer.cxx
vncviewer/vncviewer.man

index 46470eaad3a67e8036abadd4e937da9c831d0440..409a2ec662add17611fdc56640f1a7d01a95549a 100644 (file)
@@ -84,14 +84,3 @@ int getvnchomedir(char **dirp)
        *dirp = dir;
        return 0;
 }
-
-int fileexists(char *file)
-{
-#ifdef WIN32
-  return (GetFileAttributes(file) == INVALID_FILE_ATTRIBUTES) ? -1 : 0;
-#else
-  return access(file, R_OK);
-#endif
-}
-
-
index f770e2b82796e6da9c49ae159abd577326531d13..fcca20e1400f030aaaff84f9b6299a258744f0a9 100644 (file)
  */
 int getvnchomedir(char **dirp);
 
-/*
- * Check if the file exists
- *
- * Returns:
- * 0 - Success
- * -1 - Failure
- */
-int fileexists(char *file);
-
 #endif /* OS_OS_H */
index 5337d8d6ba82e695fc14cd89f0516eb117161b24..29c3d9562f0306fc77972f217ee90420d2365a0a 100644 (file)
 
 using namespace rfb;
 
-StringParameter CSecurityTLS::X509CA("X509CA", "X509 CA certificate", "", ConfViewer);
-StringParameter CSecurityTLS::X509CRL("X509CRL", "X509 CRL file", "", ConfViewer);
+static const char* homedirfn(const char* fn);
+
+StringParameter CSecurityTLS::X509CA("X509CA", "X509 CA certificate",
+                                     homedirfn("x509_ca.pem"),
+                                     ConfViewer);
+StringParameter CSecurityTLS::X509CRL("X509CRL", "X509 CRL file",
+                                     homedirfn("x509_crl.pem"),
+                                     ConfViewer);
 
 static LogWriter vlog("TLS");
 
+static const char* homedirfn(const char* fn)
+{
+  static char full_path[PATH_MAX];
+  char* homedir = NULL;
+
+  if (getvnchomedir(&homedir) == -1)
+    return "";
+
+  snprintf(full_path, sizeof(full_path), "%s%s", homedir, fn);
+
+  delete [] homedir;
+
+  return full_path;
+}
+
 CSecurityTLS::CSecurityTLS(CConnection* cc, bool _anon)
   : CSecurity(cc), session(NULL), anon_cred(NULL), cert_cred(NULL),
     anon(_anon), tlsis(NULL), tlsos(NULL), rawis(NULL), rawos(NULL)
@@ -78,28 +99,6 @@ CSecurityTLS::CSecurityTLS(CConnection* cc, bool _anon)
     throw AuthFailureException("gnutls_global_init failed");
 }
 
-void CSecurityTLS::setDefaults()
-{
-  char* homeDir = NULL;
-
-  if (getvnchomedir(&homeDir) == -1) {
-    vlog.error("Could not obtain VNC home directory path");
-    return;
-  }
-
-  int len = strlen(homeDir) + 1;
-  CharArray caDefault(len + 11);
-  CharArray crlDefault(len + 12);
-  sprintf(caDefault.buf, "%sx509_ca.pem", homeDir);
-  sprintf(crlDefault.buf, "%s509_crl.pem", homeDir);
-  delete [] homeDir;
-
- if (!fileexists(caDefault.buf))
-   X509CA.setDefaultStr(caDefault.buf);
- if (!fileexists(crlDefault.buf))
-   X509CRL.setDefaultStr(crlDefault.buf);
-}
-
 void CSecurityTLS::shutdown()
 {
   if (session) {
index 0dcf2ad38c0f2b7f41dc7b0fdbd587654f0d420d..9709926e3e10e849ad603050419c9269215114d8 100644 (file)
@@ -48,7 +48,6 @@ namespace rfb {
     virtual const char* description() const
       { return anon ? "TLS Encryption without VncAuth" : "X509 Encryption without VncAuth"; }
     virtual bool isSecure() const { return !anon; }
-    static void setDefaults();
 
     static StringParameter X509CA;
     static StringParameter X509CRL;
index 00039d9613aad19b21023067f23292a4a52c0c5b..d5d3f2520a3b2e0ee82213288521852d4f8f17c6 100644 (file)
@@ -389,13 +389,6 @@ StringParameter::~StringParameter() {
   strFree(def_value);
 }
 
-void StringParameter::setDefaultStr(const char* v) {
-  strFree(def_value);
-  def_value = strDup(v);
-  strFree(value);
-  value = strDup(v);
-}
-
 bool StringParameter::setParam(const char* v) {
   LOCK_CONFIG;
   if (immutable) return true;
index 376805bbe3eaeb1aec33437cdc4525073fad3086..396e40ddff7da3a1fa5a2eb42d8fc38a324324ec 100644 (file)
@@ -243,7 +243,6 @@ namespace rfb {
     virtual bool setParam(const char* value);
     virtual char* getDefaultStr() const;
     virtual char* getValueStr() const;
-    void setDefaultStr(const char* v);
     operator const char*() const;
 
     // getData() returns a copy of the data - it must be delete[]d by the
index 23c1d67c53cb8bf74b6fd1b43f83fdba5d1af220..4d88d678db9cff799be614a7ebc4ee1f1c7facb8 100644 (file)
@@ -105,10 +105,3 @@ CSecurity* SecurityClient::GetCSecurity(CConnection* cc, U32 secType)
 bail:
   throw Exception("Security type not supported");
 }
-
-void SecurityClient::setDefaults()
-{
-#ifdef HAVE_GNUTLS
-    CSecurityTLS::setDefaults();
-#endif
-}
index 3074a876c674c9450d48976c930a8090a02fdbdc..b13afa42b729dcdf76fa70c5a01fb5a867a111cc 100644 (file)
@@ -35,8 +35,6 @@ namespace rfb {
     /* Create client side CSecurity class instance */
     CSecurity* GetCSecurity(CConnection* cc, rdr::U32 secType);
 
-    static void setDefaults(void);
-
     static StringParameter secTypes;
   };
 
index 7dfc603a928f00339d69e98cbb602bfad3680d0e..bb41a2f7c42fd5752fd7924058eeb5b12c0f6ab6 100644 (file)
@@ -45,8 +45,6 @@
 #endif
 
 #include <rfb/Logger_stdio.h>
-#include <rfb/SecurityClient.h>
-#include <rfb/Security.h>
 #ifdef HAVE_GNUTLS
 #include <rfb/CSecurityTLS.h>
 #endif
@@ -521,8 +519,6 @@ int main(int argc, char** argv)
   bindtextdomain(PACKAGE_NAME, CMAKE_INSTALL_FULL_LOCALEDIR);
   textdomain(PACKAGE_NAME);
 
-  rfb::SecurityClient::setDefaults();
-
   // Write about text to console, still using normal locale codeset
   fprintf(stderr,"\n%s\n", about_text());
 
index 64f0b08cd6e18f71919953921cc92d6960d05eab..868e6aeb0bd922ddc8f0f1b7644191118aa8b583 100644 (file)
@@ -152,13 +152,13 @@ the server, you can specify it here to avoid typing it in.  It will usually be
 .B \-X509CA \fIpath\fP
 Path to CA certificate to use when authenticating remote servers using any
 of the X509 security schemes (X509None, X509Vnc, etc.). Must be in PEM
-format. Default is \fB$HOME/.vnc/x509_ca.pem\fP, if it exists.
+format. Default is \fB$HOME/.vnc/x509_ca.pem\fP.
 .
 .TP
 .B \-X509CRL \fIpath\fP
 Path to certificate revocation list to use in conjunction with
 \fB-X509CA\fP. Must also be in PEM format. Default is
-\fB$HOME/.vnc/x509_crl.pem\fP, if it exists.
+\fB$HOME/.vnc/x509_crl.pem\fP.
 .
 .TP
 .B \-Shared