s4-socket: Make sure unix socket addresses are null terminated.
authorAndreas Schneider <asn@samba.org>
Mon, 10 Dec 2012 16:14:12 +0000 (17:14 +0100)
committerGünther Deschner <gd@samba.org>
Wed, 12 Dec 2012 14:00:02 +0000 (15:00 +0100)
Signed-off-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Günther Deschner <gd@samba.org>
source4/lib/socket/socket_unix.c

index 2909ecca8fde32ba8095d284ba3ead62fda151b1..4755e796a4a9e99f4ca067c5e8af8ca31086840e 100644 (file)
@@ -113,7 +113,7 @@ static NTSTATUS unixdom_connect(struct socket_context *sock,
                
                ZERO_STRUCT(srv_addr);
                srv_addr.sun_family = AF_UNIX;
-               strncpy(srv_addr.sun_path, srv_address->addr, sizeof(srv_addr.sun_path));
+               snprintf(srv_addr.sun_path, sizeof(srv_addr.sun_path), "%s", srv_address->addr);
 
                ret = connect(sock->fd, (const struct sockaddr *)&srv_addr, sizeof(srv_addr));
        }
@@ -148,8 +148,8 @@ static NTSTATUS unixdom_listen(struct socket_context *sock,
                
                ZERO_STRUCT(my_addr);
                my_addr.sun_family = AF_UNIX;
-               strncpy(my_addr.sun_path, my_address->addr, sizeof(my_addr.sun_path));
-               
+               snprintf(my_addr.sun_path, sizeof(my_addr.sun_path), "%s", my_address->addr);
+
                ret = bind(sock->fd, (struct sockaddr *)&my_addr, sizeof(my_addr));
        }
        if (ret == -1) {
@@ -278,8 +278,8 @@ static NTSTATUS unixdom_sendto(struct socket_context *sock,
                
                ZERO_STRUCT(srv_addr);
                srv_addr.sun_family = AF_UNIX;
-               strncpy(srv_addr.sun_path, dest->addr, sizeof(srv_addr.sun_path));
-               
+               snprintf(srv_addr.sun_path, sizeof(srv_addr.sun_path), "%s", dest->addr);
+
                len = sendto(sock->fd, blob->data, blob->length, 0, 
                             (struct sockaddr *)&srv_addr, sizeof(srv_addr));
        }