[rrd-developers] [PATCH] rrdcached correct sizes for [v]snprintf, strncpy

kevin brintnall kbrint at rufus.net
Wed Mar 4 17:23:05 CET 2009


Make sure we use correct sizes for vsnprintf (sizeof) and strncpy (sizeof-1).

---
--- a/src/rrd_daemon.c
+++ b/src/rrd_daemon.c
@@ -466,7 +466,7 @@ static int add_response_info(listen_socket_t *sock, char *fmt, ...) /* {{{ */
 
   va_start(argp, fmt);
 #ifdef HAVE_VSNPRINTF
-  len = vsnprintf(buffer, sizeof(buffer)-1, fmt, argp);
+  len = vsnprintf(buffer, sizeof(buffer), fmt, argp);
 #else
   len = vsprintf(buffer, fmt, argp);
 #endif
@@ -524,7 +524,7 @@ static int send_response (listen_socket_t *sock, response_code rc,
   rclen = sprintf(buffer, "%d ", lines);
   va_start(argp, fmt);
 #ifdef HAVE_VSNPRINTF
-  len = vsnprintf(buffer+rclen, sizeof(buffer)-rclen-1, fmt, argp);
+  len = vsnprintf(buffer+rclen, sizeof(buffer)-rclen, fmt, argp);
 #else
   len = vsprintf(buffer+rclen, fmt, argp);
 #endif
@@ -2159,7 +2159,7 @@ static int open_listen_socket_network(const listen_socket_t *sock) /* {{{ */
   char *port;
   int status;
 
-  strncpy (addr_copy, sock->addr, sizeof (addr_copy));
+  strncpy (addr_copy, sock->addr, sizeof(addr_copy)-1);
   addr_copy[sizeof (addr_copy) - 1] = 0;
   addr = addr_copy;
 
@@ -2451,7 +2451,7 @@ static int daemonize (void) /* {{{ */
   {
     listen_socket_t sock;
     memset(&sock, 0, sizeof(sock));
-    strncpy(sock.addr, RRDCACHED_DEFAULT_ADDRESS, sizeof(sock.addr));
+    strncpy(sock.addr, RRDCACHED_DEFAULT_ADDRESS, sizeof(sock.addr)-1);
     open_listen_socket (&sock);
   }
 



More information about the rrd-developers mailing list