dbus-libdbus-transport: make sure address buffer is not overflown.
authorKrisztian Litkey <krisztian.litkey@intel.com>
Thu, 6 Nov 2014 11:38:08 +0000 (13:38 +0200)
committerKrisztian Litkey <krisztian.litkey@intel.com>
Thu, 6 Nov 2014 13:20:23 +0000 (15:20 +0200)
src/common/dbus-libdbus-transport.c

index af8d9a8..cfa44ff 100644 (file)
@@ -120,7 +120,7 @@ static socklen_t parse_address(const char *str, mrp_dbusaddr_t *addr,
 
     p = str;
     q = addr->db_fqa;
-    l = sizeof(addr->db_fqa);
+    l = sizeof(addr->db_fqa) - 1;
 
     /* get bus address */
     if (*p != '[') {
@@ -209,7 +209,7 @@ static mrp_dbusaddr_t *copy_address(mrp_dbusaddr_t *dst, mrp_dbusaddr_t *src)
     /* copy bus address */
     p = src->db_bus;
     q = dst->db_fqa;
-    l = sizeof(dst->db_fqa);
+    l = sizeof(dst->db_fqa) - 1;
 
     n = strlen(p);
     if (l < n + 1) {
@@ -269,7 +269,7 @@ static size_t peer_address(mrp_sockaddr_t *addrp, const char *sender,
     int             l, n;
 
     q = addr->db_fqa;
-    l = sizeof(addr->db_fqa);
+    l = sizeof(addr->db_fqa) - 1;
     p = ANY_ADDRESS;
     n = 3;