I would strongly suggest you transition to using strlcpy() instead.

--Jeremy

On Aug 26, 2014, at 10:32, Chris Wilson <[email protected]> wrote:

> tools/virtual.c |    6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
> 
> New commits:
> commit 011f04ff8e9aca696e26ecef0e68132a24a9b094
> Author: Chris Wilson <[email protected]>
> Date:   Tue Aug 26 18:30:17 2014 +0100
> 
>    intel-virtual-output: Fix invocation of strncpy()
> 
>    Somebody (me) confused it with snprintf() and put the string length in
>    the wrong location. Also note that strncpy() does not NUL terminate long
>    strings.
> 
>    Reported-by: Zdenek Kabelac <[email protected]>
>    Signed-off-by: Chris Wilson <[email protected]>
> 
> diff --git a/tools/virtual.c b/tools/virtual.c
> index 9b1912f..b51c81a 100644
> --- a/tools/virtual.c
> +++ b/tools/virtual.c
> @@ -2387,8 +2387,10 @@ static int bumblebee_open(struct context *ctx)
>       }
> 
>       addr.sun_family = AF_UNIX;
> -     strncpy(addr.sun_path, sizeof(addr.sun_path),
> -             optarg && *optarg ? optarg : "/var/run/bumblebee.socket");
> +     strncpy(addr.sun_path,
> +             optarg && *optarg ? optarg : "/var/run/bumblebee.socket",
> +             sizeof(addr.sun_path)-1);
> +     addr.sun_path[sizeof(addr.sun_path)-1] = '\0';
>       if (connect(fd, (struct sockaddr *)&addr, sizeof(addr)) < 0) {
>               DBG(X11, ("%s unable to create a socket: %d\n", __func__, 
> errno));
>               goto err;
> _______________________________________________
> xorg-commit mailing list
> [email protected]
> http://lists.x.org/mailman/listinfo/xorg-commit
> 

_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to