swrap: fix invalid read in swrap_sendmsg_unix_scm_rights()
authorStefan Metzmacher <metze@samba.org>
Fri, 5 Feb 2021 18:36:26 +0000 (19:36 +0100)
committerAndreas Schneider <asn@samba.org>
Mon, 8 Feb 2021 18:29:57 +0000 (19:29 +0100)
Here the fds_out array is larger than the fds_in array, so we can
only copy the fds_in array using size_fds_in, leaving the last slot
of fds_out untouched, which is filled by fds_out[num_fds_in] = pipefd[0]
later.

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Andreas Schneider <asn@samba.org>
src/socket_wrapper.c

index 43a58921b55dd2b379a8bb786de4c145c0dcf58b..e8c2d6c3ce40e2c98ae0a7ffca687f69ab5ae71d 100644 (file)
@@ -5450,7 +5450,7 @@ static int swrap_sendmsg_unix_scm_rights(const struct cmsghdr *cmsg,
        *new_cmsg = *cmsg;
        __fds_out.p = CMSG_DATA(new_cmsg);
        fds_out = __fds_out.fds;
-       memcpy(fds_out, fds_in, size_fds_out);
+       memcpy(fds_out, fds_in, size_fds_in);
        new_cmsg->cmsg_len = cmsg->cmsg_len;
 
        for (i = 0; i < num_fds_in; i++) {