[haiku-commits] Change in haiku[master]: kernel/fs: allow sendto to be called with a NULL address

  • From: Gerrit <review@xxxxxxxxxxxxxxxxxxx>
  • To: waddlesplash <waddlesplash@xxxxxxxxx>, haiku-commits@xxxxxxxxxxxxx
  • Date: Fri, 1 May 2020 22:13:42 +0000

From Jérôme Duval <jerome.duval@xxxxxxxxx>:

Jérôme Duval has uploaded this change for review. ( 
https://review.haiku-os.org/c/haiku/+/2547 ;)


Change subject: kernel/fs: allow sendto to be called with a NULL address
......................................................................

kernel/fs: allow sendto to be called with a NULL address

POSIX says: If the socket is connection-mode, dest_addr shall be ignored.
---
M src/system/kernel/fs/socket.cpp
1 file changed, 8 insertions(+), 6 deletions(-)



  git pull ssh://git.haiku-os.org:22/haiku refs/changes/47/2547/1

diff --git a/src/system/kernel/fs/socket.cpp b/src/system/kernel/fs/socket.cpp
index bbe0dd8..e4c02f4 100644
--- a/src/system/kernel/fs/socket.cpp
+++ b/src/system/kernel/fs/socket.cpp
@@ -1036,25 +1036,27 @@
        if (data == NULL || !IS_USER_ADDRESS(data))
                return B_BAD_ADDRESS;

-       // TODO: If this is a connection-mode socket, the address parameter is
-       // supposed to be ignored.
-       if (userAddress == NULL || addressLength <= 0
+       if (addressLength <= 0
                        || addressLength > MAX_SOCKET_ADDRESS_LENGTH) {
                return B_BAD_VALUE;
        }

        // copy address from userland
        char address[MAX_SOCKET_ADDRESS_LENGTH];
-       if (!IS_USER_ADDRESS(userAddress)
+       if (userAddress != NULL) {
+               if (!IS_USER_ADDRESS(userAddress)
                        || user_memcpy(address, userAddress, addressLength) != 
B_OK) {
-               return B_BAD_ADDRESS;
+                       return B_BAD_ADDRESS;
+               }
+       } else {
+               addressLength = 0;
        }

        // sendto()
        SyscallRestartWrapper<ssize_t> result;

        return result = common_sendto(socket, data, length, flags,
-               (sockaddr*)address, addressLength, false);
+               userAddress != NULL ? (sockaddr*)address : NULL, addressLength, 
false);
 }



--
To view, visit https://review.haiku-os.org/c/haiku/+/2547
To unsubscribe, or for help writing mail filters, visit 
https://review.haiku-os.org/settings

Gerrit-Project: haiku
Gerrit-Branch: master
Gerrit-Change-Id: Ic75de473173e3795066beeac9a9f2404418d94da
Gerrit-Change-Number: 2547
Gerrit-PatchSet: 1
Gerrit-Owner: Jérôme Duval <jerome.duval@xxxxxxxxx>
Gerrit-MessageType: newchange

Other related posts:

  • » [haiku-commits] Change in haiku[master]: kernel/fs: allow sendto to be called with a NULL address - Gerrit