From 89d64b1a477cb401b4df5d2daefeda68bf0e1b39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tatuya=20JINMEI=20=E7=A5=9E=E6=98=8E=E9=81=94=E5=93=89?= Date: Sat, 18 Apr 2009 01:29:26 +0000 Subject: [PATCH] 2585. [bug] Uninitialized socket name could be referenced via a statistics channel, triggering an assertion failure in XML rendering. [RT #19427] --- CHANGES | 3 +++ lib/isc/unix/socket.c | 11 +++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/CHANGES b/CHANGES index 5f1a91c3ff..1e95bd9193 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,6 @@ +2585. [bug] Uninitialized socket name could be referenced via a + statistics channel, triggering an assertion failure in + XML rendering. [RT #19427] --- 9.6.1b1 released --- diff --git a/lib/isc/unix/socket.c b/lib/isc/unix/socket.c index f0a320e988..d09fe51ab5 100644 --- a/lib/isc/unix/socket.c +++ b/lib/isc/unix/socket.c @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: socket.c,v 1.308.12.7 2009/02/16 00:24:04 marka Exp $ */ +/* $Id: socket.c,v 1.308.12.8 2009/04/18 01:29:26 jinmei Exp $ */ /*! \file */ @@ -1878,6 +1878,9 @@ allocate_socket(isc_socketmgr_t *manager, isc_sockettype_t type, goto error; } + memset(sock->name, 0, sizeof(sock->name)); + sock->tag = NULL; + /* * set up list of readers and writers to be initially empty */ @@ -2317,9 +2320,6 @@ isc_socket_create(isc_socketmgr_t *manager, int pf, isc_sockettype_t type, return (result); } - memset(sock->name, 0, sizeof(sock->name)); - sock->tag = NULL; - sock->references = 1; *socketp = sock; @@ -2525,11 +2525,14 @@ isc_socket_close(isc_socket_t *sock) { type = sock->type; fd = sock->fd; sock->fd = -1; + memset(sock->name, 0, sizeof(sock->name)); + sock->tag = NULL; sock->listener = 0; sock->connected = 0; sock->connecting = 0; sock->bound = 0; isc_sockaddr_any(&sock->peer_address); + UNLOCK(&sock->lock); closesocket(manager, sock, fd);