From 235a50037cc204f4979442e49d4b31f41cea2990 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Mon, 15 Jan 2007 13:07:09 +0000 Subject: [PATCH] accept() and bind() now accept NULL address parameters in the R5 compatibility mode. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19810 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/kits/network/socket.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/kits/network/socket.cpp b/src/kits/network/socket.cpp index 4a0fb5e73e..8ca7fcef80 100644 --- a/src/kits/network/socket.cpp +++ b/src/kits/network/socket.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2002-2006, Haiku, Inc. All Rights Reserved. + * Copyright 2002-2007, Haiku, Inc. All Rights Reserved. * Distributed under the terms of the MIT License. */ @@ -66,6 +66,9 @@ convert_from_r5_sockaddr(struct sockaddr *_to, const struct sockaddr *_from) memset(to, 0, sizeof(*to)); to->sin_len = sizeof(*to); + if (from == NULL) + return; + if (from->sin_family == R5_AF_INET) to->sin_family = AF_INET; else @@ -82,6 +85,9 @@ convert_to_r5_sockaddr(struct sockaddr *_to, const struct sockaddr *_from) const sockaddr_in *from = (sockaddr_in *)_from; r5_sockaddr_in *to = (r5_sockaddr_in *)_to; + if (to == NULL) + return; + memset(to, 0, sizeof(*to)); if (from->sin_family == AF_INET) to->sin_family = R5_AF_INET; @@ -259,7 +265,7 @@ accept(int socket, struct sockaddr *address, socklen_t *_addressLength) args.cookie = cookie; - if (r5compatible) { + if (r5compatible && address != NULL) { args.address = &r5addr; args.address_length = sizeof(r5addr); } else { @@ -272,7 +278,7 @@ accept(int socket, struct sockaddr *address, socklen_t *_addressLength) return -1; } - if (r5compatible) { + if (r5compatible && address != NULL) { convert_to_r5_sockaddr(address, &r5addr); if (_addressLength != NULL) *_addressLength = sizeof(struct r5_sockaddr_in);