]> source.dussan.org Git - tigervnc.git/commitdiff
Protect IPv6 address strings with [] 74/head
authorPierre Ossman <ossman@cendio.se>
Wed, 19 Nov 2014 10:16:04 +0000 (11:16 +0100)
committerPierre Ossman <ossman@cendio.se>
Wed, 19 Nov 2014 10:16:04 +0000 (11:16 +0100)
This is the format we support when converting a string to an
address, so it makes sense to use them the other way around.

common/network/TcpSocket.cxx

index bbc41580f1acab757280693d313291f69c810e61..dd0286006d9c597de6538395cd4622787f9422ec 100644 (file)
@@ -249,17 +249,21 @@ char* TcpSocket::getPeerAddress() {
 
 #if defined(HAVE_GETADDRINFO) && defined(HAVE_INET_PTON)
   if (sa.u.sa.sa_family == AF_INET6) {
-    char buffer[INET6_ADDRSTRLEN];
+    char buffer[INET6_ADDRSTRLEN + 2];
     const char *name;
 
+    buffer[0] = '[';
+
     name = inet_ntop(sa.u.sa.sa_family, &sa.u.sin6.sin6_addr,
-                     buffer + 1, sizeof(buffer));
+                     buffer + 1, sizeof(buffer) - 2);
     if (name == NULL) {
       vlog.error("unable to convert peer name to a string");
       return rfb::strDup("");
     }
 
-    return rfb::strDup(name);
+    strcat(buffer, "]");
+
+    return rfb::strDup(buffer);
   }
 #endif