On Wed, 20 Dec 2006, Kai Blin wrote:
@@ -946,6 +946,9 @@ static int ws_sockaddr_u2ws(const struct { int res;
+ /* Zero the ws_sockaddr structure before using */ + memset(wsaddr, 0, *wsaddrlen);
Are you sure this is needed in ws_sockaddr_u2ws() or should it rather be done by getsockname() (as your test indicates). Also, do we know of a real-world application that needs this?
Finally, this memset() makes the one in the AF_UNSPEC case redundant, and may itself be redundant with some of the memcpy()s...
On Wednesday 20 December 2006 13:37, Francois Gouget wrote:
On Wed, 20 Dec 2006, Kai Blin wrote:
@@ -946,6 +946,9 @@ static int ws_sockaddr_u2ws(const struct { int res;
- /* Zero the ws_sockaddr structure before using */
- memset(wsaddr, 0, *wsaddrlen);
Are you sure this is needed in ws_sockaddr_u2ws() or should it rather be done by getsockname() (as your test indicates).
Well, this seemed the best place to do this, as it basically contains the getsockname() logic.
Also, do we know of a real-world application that needs this?
I don't know of any real world applications that need this, but it sure is making my life easier when trying to figure out directplay traces. Native dplay seems to use getsockname() to construct the dplay headers.
Finally, this memset() makes the one in the AF_UNSPEC case redundant, and may itself be redundant with some of the memcpy()s...
True. I'll adapt the patch to do the memset only in the AF_INET case, and only set the sin_zero member to 0.
Cheers, Kai