Re: [PATCH] sock_diag.7: Fix recvmsg() usage in the example

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 1/24/21 4:10 PM, Alejandro Colomar wrote:
> From: Pali Rohár <pali@xxxxxxxxxx>
> 
> The msg_name field for recvmsg() call points to a caller-allocated buffer
> nladdr that is used to return the source address of the (netlink) socket.
> 
> As recvmsg() does not read this buffer and fills it for a caller, do not
> initialize it and instead check its value in the example.
> 
> Signed-off-by: Pali Rohár <pali@xxxxxxxxxx>
> Signed-off-by: Alejandro Colomar <alx.manpages@xxxxxxxxx>

Hello Alex, Pali,

Thanks. Patch applied.

Cheers,

Michael

> ---
>  man7/sock_diag.7 | 9 ++++++---
>  1 file changed, 6 insertions(+), 3 deletions(-)
> 
> diff --git a/man7/sock_diag.7 b/man7/sock_diag.7
> index b732b2571..569106dd6 100644
> --- a/man7/sock_diag.7
> +++ b/man7/sock_diag.7
> @@ -753,9 +753,7 @@ static int
>  receive_responses(int fd)
>  {
>      long buf[8192 / sizeof(long)];
> -    struct sockaddr_nl nladdr = {
> -        .nl_family = AF_NETLINK
> -    };
> +    struct sockaddr_nl nladdr;
>      struct iovec iov = {
>          .iov_base = buf,
>          .iov_len = sizeof(buf)
> @@ -782,6 +780,11 @@ receive_responses(int fd)
>          if (ret == 0)
>              return 0;
>  
> +        if (nladdr.nl_family != AF_NETLINK) {
> +            fputs("!AF_NETLINK\en", stderr);
> +            return \-1;
> +        }
> +
>          const struct nlmsghdr *h = (struct nlmsghdr *) buf;
>  
>          if (!NLMSG_OK(h, ret)) {
> 


-- 
Michael Kerrisk
Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/
Linux/UNIX System Programming Training: http://man7.org/training/



[Index of Archives]     [Kernel Documentation]     [Netdev]     [Linux Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux