]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
reference after free in error path.
authorMark Andrews <marka@isc.org>
Wed, 19 Dec 2001 05:44:54 +0000 (05:44 +0000)
committerMark Andrews <marka@isc.org>
Wed, 19 Dec 2001 05:44:54 +0000 (05:44 +0000)
lib/isc/unix/socket.c

index eebfa938485ef1fdea6bf0616fed3f2fd7b9ff2d..584acd22506ac96d5355ba0362dd95857419b542 100644 (file)
@@ -15,7 +15,7 @@
  * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: socket.c,v 1.217 2001/11/30 01:59:46 gson Exp $ */
+/* $Id: socket.c,v 1.218 2001/12/19 05:44:54 marka Exp $ */
 
 #include <config.h>
 
@@ -2246,14 +2246,14 @@ isc_socketmgr_create(isc_mem_t *mctx, isc_socketmgr_t **managerp) {
         */
        if (isc_thread_create(watcher, manager, &manager->watcher) !=
            ISC_R_SUCCESS) {
+               (void)close(manager->pipe_fds[0]);
+               (void)close(manager->pipe_fds[1]);
                DESTROYLOCK(&manager->lock);
                isc_mem_put(mctx, manager, sizeof(*manager));
                UNEXPECTED_ERROR(__FILE__, __LINE__,
                                 "isc_thread_create() %s",
                                 isc_msgcat_get(isc_msgcat, ISC_MSGSET_GENERAL,
                                                ISC_MSG_FAILED, "failed"));
-               (void)close(manager->pipe_fds[0]);
-               (void)close(manager->pipe_fds[1]);
                return (ISC_R_UNEXPECTED);
        }
 #endif /* ISC_PLATFORM_USETHREADS */