]> source.dussan.org Git - tigervnc.git/commitdiff
Make sure server name is always a valid string
authorPierre Ossman <ossman@cendio.se>
Thu, 24 Mar 2022 13:02:57 +0000 (14:02 +0100)
committerPierre Ossman <ossman@cendio.se>
Thu, 24 Mar 2022 13:02:57 +0000 (14:02 +0100)
Otherwise we can get crashes on NULL dereference. This should only
happen on reverse connections where we don't have a server address.

common/rfb/CConnection.cxx
common/rfb/CConnection.h

index c474921b463b970fd279d4557cff7f2820c184d8..675b49d616e1065906e5d477e46ead586915c7a6 100644 (file)
@@ -52,7 +52,7 @@ CConnection::CConnection()
     supportsDesktopResize(false), supportsLEDState(false),
     is(0), os(0), reader_(0), writer_(0),
     shared(false),
-    state_(RFBSTATE_UNINITIALISED),
+    state_(RFBSTATE_UNINITIALISED), serverName(strDup("")),
     pendingPFChange(false), preferredEncoding(encodingTight),
     compressLevel(2), qualityLevel(-1),
     formatChange(false), encodingChange(false),
@@ -68,6 +68,13 @@ CConnection::~CConnection()
   close();
 }
 
+void CConnection::setServerName(const char* name_)
+{
+  if (name_ == NULL)
+    name_ = "";
+  serverName.replaceBuf(strDup(name_));
+}
+
 void CConnection::setStreams(rdr::InStream* is_, rdr::OutStream* os_)
 {
   is = is_;
index d5d07ca0b0e92b9be5c9c0193671c691dbe1f139..68554b59c5f28f0c8b00413a6d4694b27fdc677e 100644 (file)
@@ -48,7 +48,7 @@ namespace rfb {
     // which we are connected.  This might be the result of getPeerEndpoint on
     // a TcpSocket, for example, or a host specified by DNS name & port.
     // The serverName is used when verifying the Identity of a host (see RA2).
-    void setServerName(const char* name_) { serverName.replaceBuf(strDup(name_)); }
+    void setServerName(const char* name_);
 
     // setStreams() sets the streams to be used for the connection.  These must
     // be set before initialiseProtocol() and processMsg() are called.  The