From 52c85d05fca2f03cb88a8a9850464ca174e8a20a Mon Sep 17 00:00:00 2001 From: Mark Andrews Date: Mon, 26 Jan 2004 23:50:40 +0000 Subject: [PATCH] 1562. [bug] isc_socket_create() and isc_socket_accept() could leak memory under error conditions. [RT #10230] --- CHANGES | 3 +++ lib/isc/unix/socket.c | 5 +++-- lib/isc/win32/socket.c | 6 ++++-- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/CHANGES b/CHANGES index b125b52765..b372b214d0 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,6 @@ +1562. [bug] isc_socket_create() and isc_socket_accept() could + leak memory under error conditions. [RT #10230] + 1561. [bug] It was possible to release the same name twice if named ran out of memory. [RT #10197] diff --git a/lib/isc/unix/socket.c b/lib/isc/unix/socket.c index 62d472f55c..a31dc23edc 100644 --- a/lib/isc/unix/socket.c +++ b/lib/isc/unix/socket.c @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: socket.c,v 1.207.2.19.2.3 2003/08/15 01:16:06 marka Exp $ */ +/* $Id: socket.c,v 1.207.2.19.2.4 2004/01/26 23:50:40 marka Exp $ */ #include @@ -1246,7 +1246,8 @@ allocate_socket(isc_socketmgr_t *manager, isc_sockettype_t type, return (ISC_R_SUCCESS); - error: /* socket allocated */ + error: + isc_mem_put(manager->mctx, sock, sizeof(*sock)); return (ret); } diff --git a/lib/isc/win32/socket.c b/lib/isc/win32/socket.c index 81b9af91f1..39c402495a 100644 --- a/lib/isc/win32/socket.c +++ b/lib/isc/win32/socket.c @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: socket.c,v 1.5.2.13.2.5 2004/01/08 08:23:52 marka Exp $ */ +/* $Id: socket.c,v 1.5.2.13.2.6 2004/01/26 23:50:40 marka Exp $ */ /* This code has been rewritten to take advantage of Windows Sockets * I/O Completion Ports and Events. I/O Completion Ports is ONLY @@ -1754,10 +1754,12 @@ allocate_socket(isc_socketmgr_t *manager, isc_sockettype_t type, return (ISC_R_SUCCESS); - error: /* socket allocated */ + error: + isc_mem_put(manager->mctx, sock, sizeof(*sock)); return (ret); } + /* * This event requires that the various lists be empty, that the reference * count be 1, and that the magic number is valid. The other socket bits,