[haiku-commits] haiku: hrev54099 - src/add-ons/kernel/network/stack

  • From: waddlesplash <waddlesplash@xxxxxxxxx>
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Mon, 27 Apr 2020 20:44:28 -0400 (EDT)

hrev54099 adds 1 changeset to branch 'master'
old head: a67bbcb79971bbf40f2e3183e58075e37b993486
new head: 04fac889f75b32790b39753276f33b6b756fc779
overview: 
https://git.haiku-os.org/haiku/log/?qt=range&q=04fac889f75b+%5Ea67bbcb79971

----------------------------------------------------------------------------

04fac889f75b: net_socket: getpeername now only works on connected socket
  
  Per POSIX.1-2008, getpeername() shall fails if the socket is not
  connected.
  
  With this change, it's no longer possible to retrieve the peer from
  connectionless protocols such as UDP, even if a peer is assigned to them
  via connect(). The same behavior can be replicated among
  POSIX-compatible operating systems such as Linux.
  
  Fixes #15081
  
  Change-Id: Ia5631971200959a3d3815332ff1969c4b4dd289b
  Reviewed-on: https://review.haiku-os.org/c/haiku/+/2421
  Reviewed-by: Jérôme Duval <jerome.duval@xxxxxxxxx>
  Reviewed-by: Adrien Destugues <pulkomandy@xxxxxxxxx>

                                       [ Leorize <leorize+oss@xxxxxxxxxxx> ]

----------------------------------------------------------------------------

Revision:    hrev54099
Commit:      04fac889f75b32790b39753276f33b6b756fc779
URL:         https://git.haiku-os.org/haiku/commit/?id=04fac889f75b
Author:      Leorize <leorize+oss@xxxxxxxxxxx>
Date:        Wed Mar 25 19:15:25 2020 UTC
Committer:   waddlesplash <waddlesplash@xxxxxxxxx>
Commit-Date: Tue Apr 28 00:44:24 2020 UTC

Ticket:      https://dev.haiku-os.org/ticket/15081

----------------------------------------------------------------------------

1 file changed, 3 insertions(+), 2 deletions(-)
src/add-ons/kernel/network/stack/net_socket.cpp | 5 +++--

----------------------------------------------------------------------------

diff --git a/src/add-ons/kernel/network/stack/net_socket.cpp 
b/src/add-ons/kernel/network/stack/net_socket.cpp
index 414acc5e2c..d38cf648ba 100644
--- a/src/add-ons/kernel/network/stack/net_socket.cpp
+++ b/src/add-ons/kernel/network/stack/net_socket.cpp
@@ -1054,10 +1054,11 @@ socket_connect(net_socket* socket, const struct 
sockaddr* address,
 
 
 int
-socket_getpeername(net_socket* socket, struct sockaddr* address,
+socket_getpeername(net_socket* _socket, struct sockaddr* address,
        socklen_t* _addressLength)
 {
-       if (socket->peer.ss_len == 0)
+       net_socket_private* socket = (net_socket_private*)_socket;
+       if (!socket->is_connected || socket->peer.ss_len == 0)
                return ENOTCONN;
 
        memcpy(address, &socket->peer, min_c(*_addressLength, 
socket->peer.ss_len));


Other related posts:

  • » [haiku-commits] haiku: hrev54099 - src/add-ons/kernel/network/stack - waddlesplash