Index: net/base/nss_memio.c |
diff --git a/net/base/nss_memio.c b/net/base/nss_memio.c |
index 341cfee75f649675cffd0ead0289bb9e6790a00e..6796882e6af7f25e3cc484828119a45c0468ed17 100644 |
--- a/net/base/nss_memio.c |
+++ b/net/base/nss_memio.c |
@@ -359,11 +359,17 @@ PRFileDesc *memio_CreateIOLayer(int bufsize) |
return fd; |
} |
-void memio_SetPeerName(PRFileDesc *fd, const PRNetAddr *peername) |
+void memio_SetPeerName(PRFileDesc *fd, const struct sockaddr *peername, |
+ size_t peername_len) |
{ |
PRFileDesc *memiofd = PR_GetIdentitiesLayer(fd, memio_identity); |
struct PRFilePrivate *secret = memiofd->secret; |
- secret->peername = *peername; |
+ size_t len; |
+ |
+ memset(&secret->peername, 0, sizeof(secret->peername)); |
+ PR_ASSERT(peername_len <= sizeof(secret->peername)); |
+ len = PR_MIN(peername_len, sizeof(secret->peername)); |
+ memcpy(&secret->peername, peername, len); |
} |
memio_Private *memio_GetSecret(PRFileDesc *fd) |