[CRIU] [PATCH 2/2] util: zero msghdr structures

Dmitry Safonov dsafonov at virtuozzo.com
Tue Jan 31 03:49:12 PST 2017


On 01/31/2017 10:53 AM, Kir Kolyshkin wrote:
> From: Andrei Vagin <avagin at virtuozzo.com>
>
> musl-libc fixed inconsistency between posix and kernl msghdr structures
> by adding pad-s.
>
> It initializes all pad-s before calling recvmsg and sendmsg syscalls.
> CRIU calls raw system calls from pie code, so we need to intialize pads too.
>
> In addition, we don't initialize msg_flags and iov_len.
>
> https://github.com/xemul/criu/issues/276

missed SOB line :-/

> ---
>  include/common/scm-code.c | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/include/common/scm-code.c b/include/common/scm-code.c
> index db855d9..df3b78a 100644
> --- a/include/common/scm-code.c
> +++ b/include/common/scm-code.c
> @@ -50,7 +50,8 @@ static int *scm_fdset_init(struct scm_fdset *fdset, struct sockaddr_un *saddr,
>  int send_fds(int sock, struct sockaddr_un *saddr, int len,
>  		int *fds, int nr_fds, void *data, unsigned ch_size)
>  {
> -	struct scm_fdset fdset;
> +	/* In musl_libc the msghdr structure has pads which has to be zeroed */
> +	struct scm_fdset fdset = {};
>  	int *cmsg_data;
>  	int i, min_fd, ret;
>
> @@ -73,7 +74,8 @@ int send_fds(int sock, struct sockaddr_un *saddr, int len,
>
>  int recv_fds(int sock, int *fds, int nr_fds, void *data, unsigned ch_size)
>  {
> -	struct scm_fdset fdset;
> +	/* In musl_libc the msghdr structure has pads which has to be zeroed */
> +	struct scm_fdset fdset = {};
>  	struct cmsghdr *cmsg;
>  	int *cmsg_data;
>  	int ret;
>


-- 
              Dmitry


More information about the CRIU mailing list