diff options
author | wtc%netscape.com <devnull@localhost> | 2000-04-04 00:15:57 +0000 |
---|---|---|
committer | wtc%netscape.com <devnull@localhost> | 2000-04-04 00:15:57 +0000 |
commit | 94fcec6f2af51525ea5d2bd7a45ad0342ba92c0d (patch) | |
tree | d5d4bde634db48790675d06432f722bf7b44d431 | |
parent | a16f788abf298a0b99b8c6bf6de403791b8d29e1 (diff) | |
download | nspr-hg-94fcec6f2af51525ea5d2bd7a45ad0342ba92c0d.tar.gz |
Bugzilla bug #31049: Ipv6ToIpv4SocketAccept should handle a null 'addr'
argument. (NSPRPUB_CLIENT_BRANCH)
-rw-r--r-- | pr/src/io/pripv6.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/pr/src/io/pripv6.c b/pr/src/io/pripv6.c index 485e449d..280b0bb4 100644 --- a/pr/src/io/pripv6.c +++ b/pr/src/io/pripv6.c @@ -149,6 +149,7 @@ static PRFileDesc* PR_CALLBACK Ipv6ToIpv4SocketAccept ( PRFileDesc *newfd; PRFileDesc *newstack; PRNetAddr tmp_ipv4addr; + PRNetAddr *addrlower = NULL; PR_ASSERT(fd != NULL); PR_ASSERT(fd->lower != NULL); @@ -161,13 +162,16 @@ static PRFileDesc* PR_CALLBACK Ipv6ToIpv4SocketAccept ( } *newstack = *fd; /* make a copy of the accepting layer */ - newfd = (fd->lower->methods->accept)(fd->lower, &tmp_ipv4addr, timeout); + if (addr) + addrlower = &tmp_ipv4addr; + newfd = (fd->lower->methods->accept)(fd->lower, addrlower, timeout); if (NULL == newfd) { PR_DELETE(newstack); return NULL; } - _PR_ConvertToIpv6NetAddr(&tmp_ipv4addr, addr); + if (addr) + _PR_ConvertToIpv6NetAddr(&tmp_ipv4addr, addr); rv = PR_PushIOLayer(newfd, PR_TOP_IO_LAYER, newstack); PR_ASSERT(PR_SUCCESS == rv); |