From f01feaa6d235b40e659bf808ce66acc2b9a93da1 Mon Sep 17 00:00:00 2001
From: "A. Wilcox" <AWilcox@Wilcox-Tech.com>
Date: Wed, 20 Mar 2019 13:28:36 -0500
Subject: [PATCH 2/2] vncviewer: Ensure buffer always has \0 termination
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Building from the 1.9.0 tarball using GCC 8.3.0 on Linux yields the following:
tigervnc-1.9.0/vncviewer/vncviewer.cxx: In function ‘int main(int, char**)’:
tigervnc-1.9.0/vncviewer/vncviewer.cxx:527:14: error: ‘char* strncpy(char*, const char*, size_t)’ specified bound 64 equals destination size [-Werror=stringop-truncation]
strncpy(defaultServerName, configServerName, VNCSERVERNAMELEN);
~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In function ‘void potentiallyLoadConfigurationFile(char*)’,
inlined from ‘int main(int, char**)’ at tigervnc-1.9.0/vncviewer/vncviewer.cxx:557:35:
tigervnc-1.9.0/vncviewer/vncviewer.cxx:396:14: error: ‘char* strncpy(char*, const char*, size_t)’ specified bound 64 equals destination size [-Werror=stringop-truncation]
strncpy(vncServerName, newServerName, VNCSERVERNAMELEN);
~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This commit ensures the buffer always has the null terminator.
---
vncviewer/vncviewer.cxx | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/vncviewer/vncviewer.cxx b/vncviewer/vncviewer.cxx
index d2fe7e00..8ccfe563 100644
--- a/vncviewer/vncviewer.cxx
+++ b/vncviewer/vncviewer.cxx
@@ -402,7 +402,7 @@ potentiallyLoadConfigurationFile(char *vncServerName)
newServerName = loadViewerParameters(vncServerName);
// This might be empty, but we still need to clear it so we
// don't try to connect to the filename
- strncpy(vncServerName, newServerName, VNCSERVERNAMELEN);
+ strncpy(vncServerName, newServerName, VNCSERVERNAMELEN-1);
} catch (rfb::Exception& e) {
vlog.error("%s", e.str());
if (alertOnFatalError)
@@ -533,7 +533,7 @@ int main(int argc, char** argv)
const char* configServerName;
configServerName = loadViewerParameters(NULL);
if (configServerName != NULL)
- strncpy(defaultServerName, configServerName, VNCSERVERNAMELEN);
+ strncpy(defaultServerName, configServerName, VNCSERVERNAMELEN-1);
} catch (rfb::Exception& e) {
vlog.error("%s", e.str());
if (alertOnFatalError)
--
2.19.2