This is an automated email from the ASF dual-hosted git repository.

aguettouche pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git


The following commit(s) were added to refs/heads/master by this push:
     new 861efdf  net/:  Whenever the network initializes an IPv4 address, it 
must clear sin_zero.
861efdf is described below

commit 861efdf8a3f7960119c2fc84c8333c75fea1434c
Author: patacongo <[email protected]>
AuthorDate: Tue Feb 25 08:53:39 2020 -0600

    net/:  Whenever the network initializes an IPv4 address, it must clear 
sin_zero.
---
 net/inet/ipv4_getpeername.c   | 1 +
 net/inet/ipv4_getsockname.c   | 3 +++
 net/netdev/netdev_ifconf.c    | 1 +
 net/netdev/netdev_ioctl.c     | 2 ++
 net/tcp/tcp_accept.c          | 1 +
 net/tcp/tcp_recvfrom.c        | 1 +
 net/udp/udp_callback.c        | 1 +
 net/udp/udp_recvfrom.c        | 1 +
 net/udp/udp_sendto_buffered.c | 1 +
 9 files changed, 12 insertions(+)

diff --git a/net/inet/ipv4_getpeername.c b/net/inet/ipv4_getpeername.c
index c63480e..bf3577b 100644
--- a/net/inet/ipv4_getpeername.c
+++ b/net/inet/ipv4_getpeername.c
@@ -141,6 +141,7 @@ int ipv4_getpeername(FAR struct socket *psock, FAR struct 
sockaddr *addr,
 
   outaddr->sin_family      = psock->s_domain;
   outaddr->sin_addr.s_addr = ripaddr;
+  memset(outaddr->sin_zero, 0, sizeof(outaddr->sin_zero));
   *addrlen = sizeof(struct sockaddr_in);
 
   /* Return success */
diff --git a/net/inet/ipv4_getsockname.c b/net/inet/ipv4_getsockname.c
index 149f6e1..b12240c 100644
--- a/net/inet/ipv4_getsockname.c
+++ b/net/inet/ipv4_getsockname.c
@@ -137,6 +137,7 @@ int ipv4_getsockname(FAR struct socket *psock, FAR struct 
sockaddr *addr,
     {
        outaddr->sin_family      = psock->s_domain;
        outaddr->sin_addr.s_addr = 0;
+       memset(outaddr->sin_zero, 0, sizeof(outaddr->sin_zero));
        *addrlen = sizeof(struct sockaddr_in);
 
        return OK;
@@ -166,6 +167,8 @@ int ipv4_getsockname(FAR struct socket *psock, FAR struct 
sockaddr *addr,
 
   outaddr->sin_family      = psock->s_domain;
   outaddr->sin_addr.s_addr = dev->d_ipaddr;
+  memset(outaddr->sin_zero, 0, sizeof(outaddr->sin_zero));
+
   *addrlen = sizeof(struct sockaddr_in);
 
   net_unlock();
diff --git a/net/netdev/netdev_ifconf.c b/net/netdev/netdev_ifconf.c
index cbfbeca..6189ef5 100644
--- a/net/netdev/netdev_ifconf.c
+++ b/net/netdev/netdev_ifconf.c
@@ -142,6 +142,7 @@ static int ifconf_ipv4_callback(FAR struct net_driver_s 
*dev, FAR void *arg)
           inaddr->sin_family = AF_INET;
           inaddr->sin_port   = 0;
           net_ipv4addr_copy(inaddr->sin_addr.s_addr, dev->d_ipaddr);
+          memset(inaddr->sin_zero, 0, sizeof(inaddr->sin_zero));
         }
 
       /* Increment the size of the buffer in any event */
diff --git a/net/netdev/netdev_ioctl.c b/net/netdev/netdev_ioctl.c
index 2f18639..f18980c 100644
--- a/net/netdev/netdev_ioctl.c
+++ b/net/netdev/netdev_ioctl.c
@@ -286,6 +286,7 @@ static void ioctl_get_ipv4addr(FAR struct sockaddr *outaddr,
   dest->sin_family              = AF_INET;
   dest->sin_port                = 0;
   dest->sin_addr.s_addr         = inaddr;
+  memset(dest->sin_zero, 0, sizeof(dest->sin_zero));
 }
 #endif
 
@@ -310,6 +311,7 @@ static void inline ioctl_get_ipv4broadcast(FAR struct 
sockaddr *outaddr,
   dest->sin_family              = AF_INET;
   dest->sin_port                = 0;
   dest->sin_addr.s_addr         = net_ipv4addr_broadcast(inaddr, netmask);
+  memset(dest->sin_zero, 0, sizeof(dest->sin_zero));
 }
 #endif
 
diff --git a/net/tcp/tcp_accept.c b/net/tcp/tcp_accept.c
index 94a9b90..e69c89d 100644
--- a/net/tcp/tcp_accept.c
+++ b/net/tcp/tcp_accept.c
@@ -117,6 +117,7 @@ static inline void accept_tcpsender(FAR struct socket 
*psock,
           inaddr->sin_family = AF_INET;
           inaddr->sin_port   = conn->rport;
           net_ipv4addr_copy(inaddr->sin_addr.s_addr, conn->u.ipv4.raddr);
+          memset(inaddr->sin_zero, 0, sizeof(inaddr->sin_zero));
 
           *addrlen = sizeof(struct sockaddr_in);
         }
diff --git a/net/tcp/tcp_recvfrom.c b/net/tcp/tcp_recvfrom.c
index bef1791..d8f2302 100644
--- a/net/tcp/tcp_recvfrom.c
+++ b/net/tcp/tcp_recvfrom.c
@@ -372,6 +372,7 @@ static inline void tcp_sender(FAR struct net_driver_s *dev,
 
           net_ipv4addr_copy(infrom->sin_addr.s_addr,
                             net_ip4addr_conv32(ipv4->srcipaddr));
+          memset(infrom->sin_zero, 0, sizeof(infrom->sin_zero));
         }
     }
 #endif /* CONFIG_NET_IPv4 */
diff --git a/net/udp/udp_callback.c b/net/udp/udp_callback.c
index 6d8cb35..6001b05 100644
--- a/net/udp/udp_callback.c
+++ b/net/udp/udp_callback.c
@@ -165,6 +165,7 @@ static uint16_t udp_datahandler(FAR struct net_driver_s 
*dev,
 
           net_ipv4addr_copy(src_addr4.sin_addr.s_addr,
                             net_ip4addr_conv32(ipv4->srcipaddr));
+          memset(src_addr4.sin_zero, 0, sizeof(src_addr4.sin_zero));
 
           src_addr_size = sizeof(src_addr4);
           src_addr = &src_addr4;
diff --git a/net/udp/udp_recvfrom.c b/net/udp/udp_recvfrom.c
index 2ed7ec0..f2da4d2 100644
--- a/net/udp/udp_recvfrom.c
+++ b/net/udp/udp_recvfrom.c
@@ -375,6 +375,7 @@ static inline void udp_sender(FAR struct net_driver_s *dev,
 
               net_ipv4addr_copy(infrom->sin_addr.s_addr,
                                 net_ip4addr_conv32(ipv4->srcipaddr));
+              memset(infrom->sin_zero, 0, sizeof(infrom->sin_zero));
             }
         }
     }
diff --git a/net/udp/udp_sendto_buffered.c b/net/udp/udp_sendto_buffered.c
index 231728d..aee41e4 100644
--- a/net/udp/udp_sendto_buffered.c
+++ b/net/udp/udp_sendto_buffered.c
@@ -681,6 +681,7 @@ ssize_t psock_udp_sendto(FAR struct socket *psock, FAR 
const void *buf,
               addr4->sin_family = AF_INET;
               addr4->sin_port   = conn->rport;
               net_ipv4addr_copy(addr4->sin_addr.s_addr, conn->u.ipv4.raddr);
+              memset(addr4->sin_zero, 0, sizeof(addr4->sin_zero));
             }
 #endif /* CONFIG_NET_IPv4 */
 

Reply via email to